Give your agent a wallet you control.
에이전트가 일회용 카드나 기계 결제 프로토콜로 온라인 결제하고, 모든 요청을 직접 승인
Quantive replaces the spreadsheet you keep across brokers, banks, and currencies. Enter or import balances; track net worth, allocation, and forecast, with no bank logins. End-to-end encrypted. Free f
금융TypeScript · CSSGitHub @pedromlsreis온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A finance cockpit for personal‑finance nerds who enjoy giving themselves a well‑earned pat on the back.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗The net worth spreadsheet you've outgrown. If you track your wealth in a spreadsheet that has sprawled across brokers, banks, and currencies, Quantive replaces it: net worth over time, asset allocation, and a forecast of where it's heading, on any device, with no bank logins to set up. And because it's your money, every byte of portfolio data is encrypted in your browser before it reaches the server.
Live: https://usequantive.app · Try the demo without signing up: https://usequantive.app/demo · Changelog: https://usequantive.app/changelog
A spreadsheet is where most people start tracking net worth, and for a while it's fine. It stops being fine when the assets pile up: a brokerage in one country, a pension in another, some cash in a third currency, a flat you can only mark to market by hand, a couple of things a bank dashboard will never see. You end up maintaining FX columns and copy-pasting balances once a month, and the sheet you built to give you clarity now just nags at you.
Quantive is that sheet, rebuilt. Enter balances by hand or import them, tag each source by volatility and liquidity, and read your net worth over time, your allocation, and a forecast without rebuilding a single formula. Historical snapshots stay valued at the exchange rate of their original date, so last year's number doesn't drift when today's rates move. There are no bank logins and nothing to connect to an aggregator, which is the point: it tracks the illiquid and cross-border holdings a bank dashboard can't, and it works the same on your laptop and your phone.
This is the reason to pick Quantive over the next spreadsheet replacement. Most finance apps store your data in plaintext on the server. Quantive doesn't.
When you set up an account, a random 256-bit data key (DK) is generated in your browser. That DK is wrapped (encrypted) by a key-encryption key (KEK) derived from your password via Argon2id (t=3, m=64 MiB, p=1). The KEK is never stored. It is re-derived on each login. The server only ever receives the wrapped DK and the encrypted snapshot.
Password → Argon2id(salt) → KEK
KEK → XChaCha20-Poly1305 → wrapped DK (stored in user_keys)
DK + random 24-byte nonce → XChaCha20-Poly1305 → encrypted_data (stored in portfolio_snapshots)
This separation matters: changing your password re-wraps the DK under a new KEK, but does not re-encrypt your entire history.
Each ciphertext includes AAD bound to your user ID and schema version, so even with full database write access an attacker cannot transplant one user's ciphertext into another's row. The AEAD tag check fails before any plaintext is exposed.
A 24-word BIP-39 mnemonic serves as a recovery path: a second KEK derived from the mnemonic wraps the same DK, so you can regain access without your password. The mnemonic is shown once and never stored. If you skip it and forget your password, your data is gone by design.
The crypto module (src/lib/crypto/) is pure TypeScript, with no I/O and no side effects, and is licensed MIT for independent auditing.
Free
Pro (€9/month or €90/year, ~€7.50/mo)
Family (€14/month or €120/year)
| Layer | Choice |
|---|---|
| Frontend | React 18 + TypeScript 5, Vite 5 (SWC) |
| Routing / state | React Router 6, TanStack Query 5 |
| UI | Tailwind CSS 3 + shadcn/ui + Radix UI |
| Charts | Recharts 2 |
| Animation | CSS transitions, off under reduced motion |
| Crypto | libsodium-wrappers-sumo (XChaCha20-Poly1305, Argon2id) |
| Backend | Supabase (Postgres + Auth + Edge Functions on Deno) |
| Payments | Stripe |
| Tests | Vitest (unit) + Playwright (E2E) |
Requires Node.js ≥ 20 (use nvm).
git clone https://github.com/pedromlsreis/quantive
cd quantive
npm install
cp .env.example .env # fill in your Supabase keys
npm run dev # the dev server runs on http://localhost:8080
.env.example
VITE_SUPABASE_URL=https://<project-id>.supabase.co
VITE_SUPABASE_PUBLISHABLE_KEY=<anon-key>
VITE_POSTHOG_KEY= # optional, analytics
VITE_POSTHOG_HOST= # optional, e.g. https://eu.i.posthog.com
npm run dev # dev server
npm run build # production build
npm run preview # preview production build locally
npm run typecheck # tsc --noEmit (must pass before PRs)
npm run lint # ESLint (zero errors required)
npm run test # unit tests via Vitest (~20 s, crypto-heavy)
npm run test:watch # watch mode
npm run test:e2e # Playwright headless
npm run test:e2e:ui # Playwright with interactive UI
npm run test:all # unit + E2E
All four gates must pass before a pull request is mergeable: lint, typecheck, test, build.
src/
├── lib/crypto/ # Pure crypto module (MIT): AEAD, KDF, recovery, key wrapping
├── lib/ # forecast, fxConvert, dataProcessor (Excel parser), types
├── contexts/ # Auth, Portfolio, KeySession, Currency, Preferences
├── pages/ # Dashboard, Allocations, Forecast, Sources, Settings, Admin
├── components/ # charts/, dashboard/, auth/, layout/, ui/ (shadcn)
└── hooks/
supabase/
├── migrations/ # forward-only SQL migrations
└── functions/ # Deno edge functions: Stripe webhook, FX ingest, admin APIs
docs/legal/{impressum,privacy-policy,terms-of-service}.md are the canonical source for the rendered Impressum, Privacy and Terms pages. They are imported via ?raw by src/components/legal/MarkdownLegal.tsx and rendered with ReactMarkdown. Edit the markdown, not the React page.
Found a vulnerability? Please report it privately. See SECURITY.md.
Crypto patches must reference the relevant section of docs/security/encryption.md by heading. New crypto primitives or parameter changes require a written rationale.
Quantive is source-available, not OSI-approved open source. The application code is released under the PolyForm Noncommercial 1.0.0 licence; the crypto module (src/lib/crypto/) is released under the MIT licence. Commercial use requires a separate licence: contact [email protected].