accretia

mcp
Guvenlik Denetimi
Basarisiz
Health Uyari
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 7 GitHub stars
Code Basarisiz
  • fs.rmSync — Destructive file system operation in mcp/pack.mjs
  • network request — Outbound network request in mcp/src/cloud.ts
  • os.homedir — User home directory access in mcp/src/config.ts
  • process.env — Environment variable access in mcp/src/config.ts
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

Work Optional — log your money in a minute a month and see the year work becomes optional. Local-first, end-to-end encrypted, installable, bilingual (EN/中文), and usable from Claude & Codex.

README.md

Work Optional

English · 简体中文

release license

On the two names: the app calls itself Work Optional — that's what it tells you, and what people see. The repo and the site keep the original Accretia (from accretion: growth by accumulation), because a US wealth-management firm already trades as Work Optional and we're not competing for that ground.

Find out when work becomes optional — and keep track of whether you're getting there. A single-page, client-side app with three sections: Track (the home screen: a one-minute monthly check-in — money in, money out, net worth — with money out at three levels of detail — one total, ten categories, or line items inside each category (housing → mortgage payment, property tax, HOA, upkeep; insurance → health, auto, home, life…), each line tagged as an essential, lifestyle or splurge with a three-way split shown as you type; income can be split by source (salary, bonus, side hustle, dividends, interest), and 401(k) / pre-tax savings are logged so the savings rate counts them. Fixed bills fill themselves in: whatever was the same in your last two months (rent, insurance, salary, 401(k)) starts the new month, tagged, one tap to clear. Log a month in 30 seconds: one tap fills it in like last month, then you change only what's different; only the categories you use are listed, and on a phone the Save button stays in reach with what you kept. Year in review: one card with your year — saved and at what rate, how net worth moved, where the money went, your best month and longest streak, versus last year and the plan — with a Hide amounts switch for sharing a screenshot, and copy-as-text. Savings goals: an emergency fund, a down payment, a car — a target and a date; keep "saved so far" current and see what each needs a month and whether all of them fit in what you've been keeping. What's left for everyday spending: your plan's monthly spending, less the bills that repeat every month and the share of yearly bills, is what you can spend day to day and stay on plan — shown next to what you've actually been spending. Once-a-year bills: car insurance, property tax, tuition, the big trip — add each with the month it's due and see what to put aside every month and what's coming; in that month the check-in offers to fill it in, and the findings say how much of a big month was an annual bill. A reminder on the app icon: once installed, the icon shows a dot while last month is still unlogged — computed on your device, no notifications or permissions. Against last year: the year report compares the months you logged in both years — money in, out, kept, savings rate, net worth and the categories that moved most — and this month's findings say when you spent noticeably more or less than the same month last year. Budgets per category: a monthly limit for any category (one tap fills them from your usual), shown as left / over while you log, flagged in this month's findings and compared in the year report. What this month shows compares the latest month with your own last three — spending vs usual, the category that jumped, net worth since last time, the year's pace vs plan — and the year report draws a 12-month trend for every category, answered on the spot with "you kept $X; your plan expected $Y", an Am I on track? card holding your real net worth against the plan, and a printable year report), Plan (the wealth-projection simulator) and Data (backup, restore, optional encrypted sync). The projection is the yardstick; tracking is the habit.

Use it in Claude or Codex (mcp/): a local, end-to-end-encrypted MCP server for Claude Desktop, Claude Code and Codex — say “take-home 11,000, rent 3,200, groceries 600, 401k 1,958” and it's filed into your ledger, synced with the web app as just another device; ask for a year report or whether you're on track, or say “set my food budget to 800”. See mcp/README.md for the security model.

Paycheck calculator (in Plan): salary + bonus → every tax laid out like a budget sheet (federal 2026 brackets, Social Security, Medicare, state, California SDI, city) → take-home per year, month and paycheck, plus what the bonus really nets; one tap puts the honest effective tax rate into your plan. Federal, FICA, 401(k) limits, California, New York State (2026, including the high-income recapture) and New York City are computed from the published tables, plus NY SDI and Paid Family Leave; other states are an editable estimate.

In Plan, project net worth year by year from your own assumptions — careers, windfalls, major expenses, lifestyle creep, and low/mid/high return bands — and answer "what would it take to hit $X by age Y?".

Everything runs in the browser, and by default nothing is ever sent anywhere — no account needed. A deployment can optionally enable sign-in with end-to-end-encrypted sync: your data is encrypted on your device with a passphrase only you know, so the server (and whoever runs it) stores ciphertext it cannot read. When you set the passphrase you get a one-time recovery code — the only other way in if you forget it (there is no email reset, on purpose: that would mean the server holds a key). See docs/cloud-setup.md. Your plan — and your monthly ledger, if you keep one — stay on your own device (this browser's local storage) so they're still there tomorrow — untick "Save on this device" to keep it memory-only. For the long haul, Back up everything downloads one file with every plan and every ledger month; Restore brings it back on any device.

Stack: Next.js 16 (App Router) · TypeScript · Tailwind v4 · Recharts · Zod. No environment variables. No server.

Live: https://accretia.vercel.app


Features

Model your situation

  • Year-by-year projection from a pure, deterministic, unit-tested engine (documented inflation convention, low/mid/high return bands).
  • Careers with equity — multiple people and career stages, each with base salary, bonus, and annual equity / RSU comp. A browsable, searchable, bilingual role library — tech (L3–L7), medicine, law, finance — provides illustrative starting numbers.
  • Derived savings, honest compounding — no savings-rate knob: each year you keep whatever's left of after-tax income after spending. But bills come first — you choose the share of that surplus you actually invest; the rest stays as cash that counts in net worth yet earns nothing. Only invested money compounds.
  • Tax presets — a rough state + federal effective-rate estimate (all 50 states + DC), fully editable.
  • Home & mortgage what-if — adds the home as an asset and the mortgage as a liability: down payment → equity, interest / property tax / maintenance as costs, principal builds equity, the home appreciates. Shows the monthly P&I.
  • Asset-mix return calculator — blend a return from stocks, high-yield savings, bonds, and real estate (net of carrying costs like property tax), and apply it to the return band.
  • Windfalls, major expenses, lifestyle creep.

Answer questions

  • FIRE — the year work becomes optional: Full / Lean / Coast, with a health-insurance reserve.
  • Goal-seek — set "$5M by 50" and it solves four levers (save more, higher return, spend less, more time) by bisection over the engine.
  • Monte Carlo — a Deterministic ⇄ Probabilistic switch: 1,000 seeded market paths → a p10 / p50 / p90 fan and your success probability.
  • Stress test — job-loss and market-crash what-ifs (the dent, the trough, whether you recover).
  • Nominal vs. real (inflation-adjusted), including a shaded "gap" view; Compare scenarios; year-by-year table.

Use it your way

  • Pixel journey 🕹 — your projection as a tiny living pixel world: terrain follows your real net worth, milestones become landmarks (FIRE house, goal flag, treasure chests, a storm on crash years), and a little walker — trailed by a cat — crosses the horizon under a sun–moon cycle. Procedural canvas, zero images, zero libraries.
  • 100% client-side — nothing stored or sent. Export / Import a scenario as JSON is the only persistence.
  • Bilingual (English / 简体中文, native — not machine-translated), light/dark theme, font zoom, and simple by default with an "advanced tools" toggle.
  • Use it as an app, no store needed. Data → Use it as an app: Chrome/Edge/Android get an Install button; iPhone Safari gets the two taps (Share → Add to Home Screen). Installed, it opens full-screen with its own icon and works fully offline — the service worker keeps the last-opened shell and its scripts; your data was on the device all along. It tells you when there's a new version: an open or installed app checks when you come back to it and shows A new version is ready — Refresh; a backup or cloud copy saved by a newer version says so and offers Refresh to update instead of a dead end.

Navigation is three sections — Track · Plan · Data — a segmented control on desktop and a bottom tab bar on phones. Plan is a live side-by-side editor: assumptions on the left, the projection (final balance + chart + advanced tools) pinned on the right, so editing an assumption updates the chart in real time. On mobile it stacks (projection on top).


Privacy & security

Because the app has no backend, the security model is trivial:

  • Nothing leaves your device. No API calls, no analytics, no telemetry, no cookies. Open DevTools → Network and you'll see the page load and nothing else.
  • Stored on your device, never anywhere else. "Save on this device" keeps your scenarios in this browser's localStorage — on your device only, never sent anywhere, validated on load like any untrusted input, and erased the moment you untick it. Untick it and the app runs memory-only, exactly as before.
  • No secrets, no environment variables. There's nothing to leak.
  • Strict Content-Security-Policy with a per-request nonce (src/proxy.ts): script-src 'self' 'nonce-…' 'strict-dynamic' (no unsafe-inline, no unsafe-eval), connect-src 'self'. Plus static hardening headers (HSTS, X-Frame-Options DENY, nosniff, Referrer-Policy, Permissions-Policy) in next.config.ts.
  • Imported JSON is validated against the engine's Zod schema before use, so a malformed file can't crash the projection.

Run it yourself

No accounts, no database, no keys — just clone and go.

git clone https://github.com/tianyi-zhang-02/accretia.git
cd accretia
npm install
npm run dev     # → http://localhost:3000

Deploy anywhere that runs Next.js (Vercel: import the repo, deploy — no env vars to set).

Scripts

Command What it does
npm run dev Dev server on localhost:3000
npm run build / npm run start Production build / serve
npm run lint / npm run typecheck ESLint / TypeScript check
npm test Vitest — engine, FIRE, Monte Carlo, mortgage, stress, goal-seek
npm run format Prettier

Architecture

Tiny by design.

src/
  app/
    page.tsx              the app: renders the simulator client
    simulator-client.tsx  all UI state (scenarios, live editor, export/import)
    layout.tsx            fonts + globals + PWA registration
    manifest.ts, icon*.tsx, apple-icon.tsx   PWA assets
  proxy.ts                per-request CSP nonce (the only "server" code)
  components/
    simulator/            assumptions form, compare, goal-seek, FIRE, stress, year table
    charts/               projection chart + Monte-Carlo fan
    i18n/lang-switch.tsx  EN · 中文 toggle
    pwa/sw-register.tsx
  lib/
    simulator/            engine + goal-seek + Monte-Carlo + FIRE + presets (+ tests)
    i18n/                 EN/中文 message catalog + locale provider
    validation/scenarios.ts   the Zod schema the engine reads
    format/money.ts

The engine (src/lib/simulator/engine.ts) is a pure function: simulate(assumptions) → year rows — no I/O. Everything else layers on top of it additively: goal-seek by bisection, FIRE, the Monte-Carlo runner, and the stress overlay all reuse the same math, and a home/mortgage adds a home asset + liability to net worth when present. It's all covered by unit tests (npm test) — including regressions that pin "no mortgage / zero volatility = the plain projection, exactly."

License

MIT — see LICENSE.

Yorumlar (0)

Sonuc bulunamadi