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.
翻訳待ち
Trade any SPL token through private, sealed-bid OTC auctions on Solana: blind quotes, competitive price discovery, verified liquidity and guaranteed on-chain settlement.
翻訳待ち
金融TypeScript · CSSGitHub @unleaktradeオンライン所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Landing page of the UnleakTrade project and the UnleakTrade Academy (Wick Masters, the arcade guide to reading crypto charts).
翻訳待ち
Loading the full README.
Read the full README ↗The official UnleakTrade landing page: a fast, modern web experience introducing the UnleakTrade ecosystem: confidential OTC trading, RFQs, and trustless settlement on Solana. It also hosts the UnleakTrade Academy and its first guide, Wick Masters (the arcade guide to reading crypto charts): a free demo download and the paid full guide.
React application whose public routes are prerendered to static HTML at build time, then hydrated in the browser (React Router). Dynamic routes render client-side. Static marketing pages, the Academy page (Wick Masters free demo and full guide), plus a waitlist registration + activation flow backed by a small external API (the waitlist service).
| Route | Page |
|---|---|
/ | Home: hero, value props, how it works, Shorts, settlement process, economics, team, community |
/roadmap | Roadmap |
/team, /team/:memberId | Team |
/faq | FAQ |
/builder | Builder page |
/academy | UnleakTrade Academy: Wick Masters free demo by email, buy button for the full guide, level overview, Shorts links, risk notice |
/academy/thanks | Thank-you page after buying the full guide (noindex) |
/waitlist, /waitlist/:sponsor, /app | Waitlist registration (optionally prefilled with a sponsor address) |
/activate/:token | Waitlist activation and uUSDC airdrop status |
Any other URL redirects to /.
| Layer | Technology |
|---|---|
| Build tool | Vite 8 + @vitejs/plugin-react |
| UI | React 19 + TypeScript |
| Routing | react-router 8 |
| Styling | Precompiled Tailwind v4 stylesheet (src/index.css) + a few Radix UI primitives (shadcn/ui) |
| Animation | Motion |
| Forms | react-hook-form |
| Notifications | sonner |
| Icons | lucide-react |
| Address validation | In-house base58 + ed25519 on-curve check (utils/validation.ts); @solana/web3.js is a dev dependency used only as a test oracle |
| Testing | Vitest 4 + Testing Library + jsdom + v8 coverage |
| CI / Deploy | GitHub Actions → GitHub Pages |
Node: 22.x LTS (Vite 8 requires >=20.19 or >=22.12). CI and deploy use Node 22, the Vercel preview workflow uses Node 20, and nothing pins the version locally (no .nvmrc, no engines).
Tailwind is not a build step. There is no tailwindcss dependency: src/index.css is a precompiled Tailwind v4 build, so only the classes already present in that file work.
No environment variables. Nothing reads import.meta.env; outbound URLs (waitlist API, app, Telegram, YouTube, TikTok, Wick Masters) are constants in src/components/utils/links.ts.
git clone https://github.com/unleaktrade/landing-page.git
cd landing-page
npm install
npm run dev
The dev server runs at http://localhost:3000.
| Command | Purpose |
|---|---|
npm run dev | Vite dev server with HMR |
npm run build | Production build + prerender of every public route (→ build/) |
npm test | Run the full test suite once |
npm run test:watch | Watch mode for local TDD |
npm run coverage | Run tests with v8 coverage and enforce the 80% threshold |
Vitest runs in a jsdom environment with Testing Library and a shared setup file (src/test/setup.ts) that shims matchMedia, scrollTo, scrollIntoView, IntersectionObserver, and ResizeObserver (skipped in suites that run in the Node environment).
Coverage thresholds are enforced at 80% (lines / branches / functions / statements). The following paths are excluded as vendored or non-business code:
src/components/ui/**: shadcn/ui primitives (only the ones the site imports; add a single file and its package when you need one, never the whole catalog)src/assets/**, src/styles/**, src/guidelines/**src/test/**, src/**/*.d.tssrc/main.tsxCoverage HTML report is written to coverage/ after npm run coverage.
This is the beginning of the README. Read the rest at the original. Read the full README ↗