個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Personal finance for Bitcoin households, where the tracker can't read your books.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Personal finance for Bitcoin households, where the tracker can't read your books.
Your categories, notes, budgets, goals, and net worth never reach our servers in a form anyone can read. Not us. Not an attacker who breaks in. Not a subpoena. The math runs in your browser, after you unlock it with a password that lives only on your device.
This is a cypherpunk project, and we're recruiting collaborators. Join the build ↓檢視完整 README ↗Your categories, notes, budgets, goals, and net worth never reach our servers in a form anyone can read. Not us. Not an attacker who breaks in. Not a subpoena. The math runs in your browser, after you unlock it with a password that lives only on your device.
This is a cypherpunk project, and we're recruiting collaborators. Join the build ↓
Why this exists · How it's different · How it works · Join the build · Security
Orange Way is a personal-finance app you can use to track every account in one place: checking, savings, credit cards, investments, Bitcoin, Lightning. Categories. Budgets. Goals. Net worth.
The difference from every other tracker on the market is that our server can't read what you store with us. Your transactions and the labels you put on them are encrypted on your laptop or phone before they leave. The encryption key is derived from a password only you know. We keep ciphertext. You keep the key. If our database gets breached tomorrow, the attacker gets opaque blobs and the shape of your data, nothing more.
You still use the app like a normal web app. The encryption is invisible.
Three honest caveats. Every privacy product over-promises, and most people skip the small print. Read this part:
"Here we are faced with the problems of loss of privacy, creeping computerization, massive databases, more centralization, and [David] Chaum offers a completely different direction to go in, one which puts power into the hands of individuals rather than governments and corporations. The computer can be used as a tool to liberate and protect people, rather than to control them."
Hal Finney, cypherpunks mailing list, November 1992
Thirty-four years later, every mainstream personal-finance product operates exactly the way Finney warned against.
Monarch. Copilot. Simplifi. Empower. YNAB. Quicken. Intuit Mint (until Intuit shut it down in March 2024, giving 3.6 million users 90 days to migrate or lose years of financial history). Every single one stores your transactions, categories, budgets, notes, net-worth history, and connected-account credentials in a form their servers can read. "Bank-level encryption" means TLS in transit and AES at rest, with the keys they hold. One breach, one subpoena, one curious employee, one rogue administrator, and every line of your financial narrative is legible to someone who is not you.
That bargain made sense when "the cloud" was new. It makes less sense when:
Orange Way flips the model. We build the tracker. You hold the key. Neither of us can read your data without you.
This is not marketing. It's architecture. Read the threat model.
| Mint (killed 2024) | Monarch | Copilot | Simplifi | Empower | YNAB | Orange Way | |
|---|---|---|---|---|---|---|---|
| Open source | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ |
| Self-hostable | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ |
| Bitcoin-native (on-chain + Lightning) | ✗ | partial | ✗ | ✗ | partial | ✗ | ✓ |
| Server can read your categories and memos | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
| Server can read your net-worth history | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
| Data portable without vendor cooperation | ✗ | ✗ | ✗ | ✗ | ✗ | limited | ✓ |
| Cannot be shut down by an acquirer | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ |
| Published open threat model | ✗ |
Every other tracker keeps the means to decrypt your data on its servers. We keep only ciphertext. Decryption requires a key derived from your password in your browser, released when you unlock and wiped when you lock.
If an attacker breaches our database, they get encrypted blobs and the shape of your data (how many transactions, what date ranges). Without each user's password, the breach is worthless.
This is the same approach used by Bitwarden, 1Password, Proton, and Signal, applied for the first time to a personal-finance tracker.
flowchart LR
User["Your password<br/>(in your head)"] -->|"stretched into a key"| Key["Encryption key<br/>(browser-only)"]
Key -->|"encrypts each row"| Cipher["Locked data<br/>(transactions, categories,<br/>notes, balances)"]
Cipher --> DB[("Our database<br/>only sees locked data")]
User -->|"unlock"| Key
DB -->|"locked rows<br/>+ dates only"| Browser["Your browser<br/>after unlock"]
Browser -->|"unlocks in memory"| UI["Net worth, budgets,<br/>category totals"]
User -->|"lock or log out"| Wipe["Key wiped<br/>from memory"]
src/lib/vault.ts for the exact configuration).For the deep technical version (AES-256-GCM, Argon2id, ML-KEM-768 for household sharing, the full threat model), see SECURITY.md.
Early development. Working code, not vapor.
Today Orange Way is a local-first tracker with:
Next on the roadmap:
Nothing here is production-ready yet. Star the repo if this matters to you. Watch to follow the build.
This is a cypherpunk project. Its success depends on community scrutiny and contribution, not corporate marketing. We need:
Today the app runs locally against a Supabase project you control.
git clone https://github.com/The-Orange-Way/Orange-Way-Me
cd Orange-Way-Me
bun install # or: npm ci
cp .env.example .env # fill in Supabase URL + anon key (other entries are optional)
bun run dev # or: npm run dev
# Open http://localhost:5173
The minimum to run is a Supabase project plus the three VITE_SUPABASE_* values in .env. The rest of the file documents optional secrets:
.env): OR_PLATFORM_API_KEY, OR_SUPABASE_URL, RESEND_API_KEY, etc. Required for bank-sync via the ow-or-proxy function. The proxy enforces an outbound URL allowlist; if you need to point it somewhere new, add an entry in supabase/functions/ow-or-proxy/index.ts and redeploy.VITE_SENTRY_DSN, SENTRY_URL, SENTRY_ORG, SENTRY_PROJECT, and the GLITCHTIP_API_TOKEN secret. Each is optional. Error telemetry is a no-op when the DSN is unset and source-map upload is skipped when the token is unset.functions/api/signup.ts, set in the Pages project env): RESEND_API_KEY_OW is required (the function returns a 502 send failed without it). The function sends a transactional confirmation only; the Resend "Emails" log is the marketing-list source of truth until a launch broadcast is in scope.On first launch, create a vault password. Everything you enter from that point is encrypted in your browser before it reaches Supabase.
Stack: TanStack Start (SSR-capable React) + Vite + Supabase (auth, Postgres, row-level security) + Cloudflare Pages (deploy target) + TypeScript.
A turnkey self-host package (Docker compose, one-command setup) ships once the bank-sync integration hardens post-launch.
Orange Way stands on thirty-five years of cypherpunk thought.
Apache License 2.0. See LICENSE.
We chose Apache specifically for its explicit patent grant. This code is meant to be built on.
Orange Way. Because "trust me with your money" is not a business model anymore.
| ✗ |
| ✗ |
| ✗ |
| ✗ |
| ✗ |
| ✓ |