Give your agent a wallet you control.
Let your agents pay online using one-time-use cards or with machine payment protocols. You approve every request.
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
FinanceTypeScript · CSSGitHub @pedromlsreisOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
A finance cockpit for personal‑finance nerds who enjoy giving themselves a well‑earned pat on the back.
Taken from the repository README
Loading the full README.
Read the full 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].