Open Net Worth
Open Net Worth is an open-source personal AI wealth assistant you run yourself: one ledger for your whole financial life, worked by an AI agent you control.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
A modular, white-label investment platform: client dashboard, admin control
center, deposits/withdrawals, an investment engine, and a fully-featured live
market simulator with manual override controls. See docs/SPEC.md
for the full product specification driving this build.
Built with React + TypeScript + Vite + Bootstrap 5 on the frontend, and
Supabase (Postgres + Auth + Realtime) on the backend. Business logic lives in
a typed service layer (src/services), not in components — see
Architecture below.Read the full README ↗A modular, white-label investment platform: client dashboard, admin control
center, deposits/withdrawals, an investment engine, and a fully-featured live
market simulator with manual override controls. See docs/SPEC.md
for the full product specification driving this build.
Built with React + TypeScript + Vite + Bootstrap 5 on the frontend, and
Supabase (Postgres + Auth + Realtime) on the backend. Business logic lives in
a typed service layer (src/services), not in components — see
Architecture below.
All 11 phases of the spec's build plan are implemented: Foundation, Client
Core, Admin Core, the Market System (automatic engine + full manual chart
controls), Financial Flows (deposits via a swappable PaymentProvider,
withdrawals, treasury, ledger, balance adjustments), White Label (dynamic
branding, business/domain settings), Integrations (credential storage with
RLS-enforced zero client access), Operations (announcements, maintenance
mode, activity/online-user simulation), Security (2FA, sessions, admin role
management), Sandbox (HMAC-verified webhook-driven deposit confirmation),
and Production Hardening (idempotent webhook completion, a negative-balance
guard on manual balance adjustments, automatic audit logging on every
settings table, a withdrawal double-submit cooldown, and added indexes).
See docs/PRODUCTION_READINESS.md for the
full spec-section-91 checklist mapped honestly against what's done versus
what still requires action on your real Supabase project (backups,
environment separation, Auth Hooks, a real payment/KYC/email provider —
none of that was requested or is buildable from this session).
Two post-build corrections extend this further, additive to everything above rather than replacing it:
effectivePrice = providerPrice + manualOffset) — fixed/
percentage/direct adjustment methods, undo, reset-to-live, reset-all,
per-capability toggles, and a dedicated override audit trail. This is
separate from (and doesn't touch) the original automatic-vs-manual chart
system, which still works exactly as before.Note: connecting a client's investment value to live market movement would require a real per-asset holdings/units model this platform doesn't have today (investment plans are principal + yield, not priced crypto holdings) — building that honestly was judged out of scope for this pass rather than half-implemented; flag it if you want it as a follow-up.
The front-facing public pages (landing, terms, privacy, risk disclosure,
contact) have also been built out — previously thin placeholders, now real
content: the landing page pulls live investment plan data, the legal pages
carry substantive (template) copy, and the Contact page is a working form
backed by a contact_messages table that accepts submissions from visitors
with no account. See docs/GAP_ANALYSIS.md for a
full spec-compliance audit — what's genuinely done vs. the handful of real
gaps still open (a Compliance Center admin UI, client onboarding-status
tracking, a few User Management actions, MFA recovery codes/device
management, and others), separate from the deliberately-scoped-out items
already noted above.
Two pieces need manual setup once you have real network access to Supabase
— see supabase/deploy/README.md: deploying the two Edge Functions
(payment-webhook, simulate-sandbox-webhook — written but never
runtime-tested, since this repo's development session could not reach
Supabase's network at all), and confirming the branding Storage bucket
exists.
npm install
cp .env.example .env
# fill in VITE_SUPABASE_URL / VITE_SUPABASE_ANON_KEY (see below)
npm run dev
The app runs at http://localhost:5173. Without Supabase configured, public
pages render normally and auth-gated pages show a clear "Supabase is not
configured" message instead of crashing — useful for frontend-only work.
Copy .env.example to .env. Client-side variables must be prefixed
VITE_ (Vite inlines them into the bundle — never put secrets there). Server-side
variables (used by Edge Functions / a future backend service, Phase 7) must
not be prefixed VITE_.
This is the beginning of the README. Read the rest at the original. Read the full README ↗