learn about me
Under the hood
First, who's behind it — then how it actually works. This site isn't a static résumé; it's a live application, and the chat can tell you the rest.
↓ and here's how it works
01
The request lifecycle
Every question runs this exact path. The eight-node strip is the real control flow of an async generator on the server — each node is a yield that streams one event to the browser the instant it happens. Two of those stages make genuine network calls.
02
Why admin edits can't leak
The admin dashboard talks to the database straight from the browser — there's no separate backend standing guard. The safety comes from where the permission check actually lives.
03
Stack at a glance
Frontend
Next.js 16 (App Router), React 19, TypeScript
Styling / motion
Tailwind CSS v4, Framer Motion, React Three Fiber
Transport
Server-Sent Events over a Vercel serverless function
Generation
Gemini 2.5 Flash (streaming), swappable adapter
Retrieval
Gemini text-embedding-004 → pgvector cosine search
Database
Supabase Postgres, Row-Level Security, Auth, Storage
Ingestion
Standalone Python / FastAPI worker, idempotent chunk + embed
Deploy
Vercel + GitHub Actions CI, custom domain, PWA