Paper-trading + budget simulator for students practicing before a first salary. Open to all. Simulated wallets, no real money.
Status: v1 in progress. No live URL yet.
- Onboarding with Peso validation. Amount to simulate plus category toggles and custom entries. Saved locally, no login wall.
- Dashboard with burn math. Free cash versus locked cash, per-day runway, leftover marked ready to trade, plus a spend-versus-invest line.
- Market sim over 8 symbols (PSE + crypto). PSE hours, board lots, fees, and spread enforced. Live real-clock mode plus a sim-time sandbox with separate wallets.
- Order ticket with server-computed totals. Market plus day-only limit orders with expiry and cancel. Gross, fee, cash left, and position size shown before confirm, plus a one-line reason saved to the journal.
- Immutable journal with CSV export. Filled orders are never edited. Filter by win, loss, or symbol.
- Starter lessons bound to your numbers. Accountancy basics shown through your own cash and expense rows.
- SvelteKit 5, Hono, Bun. Monorepo with
client,server,shared. - Drizzle, Supabase Postgres + Auth. Row-level rules plus app-side owner checks.
- Tailwind, shadcn-svelte, @lucide/svelte, lightweight-charts.
- Resend, Cloudflare, Sentry.
bun install
cp .env.example .env
bun run db:push
bun run dev| Command | Runs |
|---|---|
bun install |
Install |
bun run build |
Build |
bun run lint |
Lint |
bun test |
Tests |
| Name | Used for |
|---|---|
SUPABASE_URL |
API endpoint |
SUPABASE_ANON_KEY |
Client key |
DATABASE_URL |
Pooler connection |
DIRECT_URL |
Migration connection |
RESEND_API_KEY |
Auth email |
APP_URL |
Links in email |
Reference by name only. Never commit values.
client/
modules/
onboarding/
dashboard/
market/
ticket/
journal/
lessons/
settings/
lib/
ui/
charts/
server/
modules/
auth/
sim-settings/
wallets/
market/
orders/
holdings/
ledger/
expenses/
lessons/
journal/
common/
shared/
contracts/
db/
engine/
docs/
DECISIONS.md
activity-log.md
task/
task.md
Web never imports db directly. Money writes go through one transaction covering orders, holdings, and ledger.
bun run lint+bun testpass before a slice counts as done.- Money math runs server-side. Client sends intent only.
- Proof rows with
locked=truereject all writes. - OWASP L1 bar pre-release: strict headers, free baseline scan, rate-limit proof. Details in
docs/DECISIONS.md.
- Decisions and tradeoffs:
docs/DECISIONS.md. - v1 slices in build order:
task/task.md. - Session memory:
docs/activity-log.md.
- v1: onboarding, dashboard, market, ticket, journal.
- v2: RSI, GTC orders, delayed-real feed, Google login.
- v3: narrow AI coach over lessons and journals.
MIT.