Personal, 2026
Product, architecture and all three surfaces
VM Academy
A multi-skill learning platform. Three repositories, one API, one database.
A place to learn several skills in one sitting rather than one skill across five abandoned tabs. Five domains, around twenty categories, tracks that run across them, and an invite-only faculty rather than a marketplace with two hundred thousand listings and no editor.
It is three separate repositories with nothing importing across the boundary: an Expo app, a TanStack Start web app, and a Hono API. The web app alone carries three audiences, the marketing site, the signed-in student experience and an admin panel, which is what decides most of the routing and the auth shape.
Money is the other axis. It sells a membership and a one-time purchase at the same time, with multi-instructor applications, review and payouts in the first version rather than deferred to later.
Surfaces
- webTanStack Start on Nitro
Marketing site, student experience and /admin in one application. Mux for video playback and direct uploads.
- TanStack Start
- TanStack Router
- TanStack Query
- Nitro
- Mux Player
- Base UI
- shadcn
- Tailwind v4
- Better Auth
- Cloudflare
- serverHono on Node
REST over Hono, Drizzle against Postgres, Razorpay for payments, Resend for mail. Each client carries a generated contract file, so no client imports server code.
- Hono
- Drizzle ORM
- Postgres
- Better Auth
- Razorpay
- Resend
- Zod
- Docker
- nativeExpo 57, React Native 0.86
Browse, learn and track progress. Web sells and mobile learns, which keeps store billing out of the purchase path.
- Expo 57
- React Native 0.86
- React 19
- TanStack Query
- Reanimated 4
- MMKV
- Better Auth
- Sentry
Engineering notes
- Three repositories with no cross-imports; each client holds a generated contract of every response type it uses
- One Better Auth configuration, mounted by both the API and the web application
- Passwordless sign-in by emailed code, with fixture accounts the server logs loudly in development
- A written PRD, file map and audit kept in all three repositories and reconciled by hand