Grew to 12,000+ unique visitors and 18,000+ AI queries within the first 6 months on the platform built here.
Run six production sites from one codebase: four build-time flags decide each deployment, so a feature ships once and every site gets the right version, copy and SEO.
Closed the API to everything but the platform's own frontend: no browser ever calls the backend directly - a server-only key, a required Origin header and sec-fetch checks reject scripts, curl and hot-linking before any route runs.
Kept private data private by construction: the portfolio is prerendered from a server-only data layer that drops the salary block, so it cannot reach the browser even by accident.
Delivered one login across three domains with httpOnly, per-domain session cookies, email OTP and Google / GitHub OAuth that always return visitors to the site they started on.
Replaced database scripts with an admin CMS and infra console: 13 resume sections, users, chats, site status, Redis keys and vector chunks are managed from one role-gated dashboard.
Made releases one push: GitHub Actions deploys the API over SSH and PM2 restarts it, reinstalling dependencies only when the lockfile changed, while each frontend site deploys on Vercel.
Kept the platform observable and recoverable: a locked status dashboard for every database, restart alert emails, daily-rotated logs and 30 days of MongoDB and Redis backups in Azure Blob.
Built the platform 0 to 1 as one Next.js 15 codebase shipped as six sites - princesinghdev.com, princesinghai.com, ai.princesinghdev.com, ai.princesinghai.com, princesingh.work and admin.princesinghdev.com - where four build-time flags (VIEW_MODE, VIEW_MODE_ISAIENGINEER, LITE_MODE, ADMIN_MODE) decide what each Vercel build is, and a single entry point resolves them in a fixed precedence: admin dashboard, Lite portfolio, full-screen chat, then the Prince AI Labs portfolio.
Designed two levels of screen routing in one root component: build mode first (the Lite build returns the Lite portfolio, the admin build returns the dashboard), then a runtime mode from the UI store in a fixed order - voice, battle, diagrams, chat (always chat on the ai.* builds), the lab landing, the original home feed - with every mode code-split so a deployment downloads only what it renders, and global layers (rate-limit countdown, sign-in, profile and history drawer, read mode, showcase and call-flow modals) mounted once on top.
Built the portfolio shell as a statically rendered route group that 404s on non-portfolio builds: a status gate, grouped navigation with breadcrumbs, a per-tab news ticker, a first-visit welcome tour, a persisted collapsible sidebar, sign-in, and an account page with history by chat, battle and voice - painted blue in Dev mode and orange on the AI build from the build flag, always dark - while the Lite build ships its own portfolio with 8 statically generated explorer routes.
Built the admin dashboard UI with a client gate (the signed-in user's id, email and role must all match the admin) in front of the server's JWT + role check: 14 tabs mounted on first visit and kept mounted, a 13-section resume CMS that caches each section once loaded, an infra console, AskDSA management and an APIs & Sites registry, every call carrying the stored token as a Bearer header through the same proxy.
Designed a locked API boundary: browsers only ever call a same-origin Next.js route (/api/proxy/[...path]) that rejects direct navigation through sec-fetch checks, injects a server-only x-internal-key, the origin and the real client IP, forwards cookies and Set-Cookie both ways and pipes streams through untouched; the Express API then layers CORS (allowlist + Vercel previews), compression, an originGuard that refuses requests without an Origin header and an internalKeyGuard that refuses requests without the key.
Prerendered the portfolio as static pages (force-static + generateStaticParams for every product, AI system and engineering system, each with its own metadata) from a server-only data layer over resumeData.json that strips the salary block before anything ships, so private fields can never leak through the client bundle.
By category
Layer 1 / 6
FrontendNext.js and React surfaces with SSR, streaming UI and hybrid rendering.One Next.js codebase shipped as six sites, one Express API behind a locked proxy, an admin CMS and the operations that keep it running. Click any step to see what runs there and where it lives in the code.