
Live
App Registry
Personal project infrastructure dashboard
Notes
Password auth uses bcrypt hash stored as base64 in env vars to avoid special character parsing issues with $ and / in bcrypt hashes. Session managed via iron-session with a 7-day cookie expiry.
Auth model
- Public read on all routes — dashboard and project detail pages are shareable
/admin/*routes gated viaproxy.ts(Next.js 16 convention)- Mutating API routes (
POST,PATCH,DELETE) check session server-side
Data layer
- Upstash Redis shared with Mise en Place — keys namespaced under
registry:to avoid collision registry:projects:indexholds the array of project IDs- Projects stored individually at
registry:projects:{id} - Array fields (
stack,futureIdeas) normalised on read to guard against missing data from older records
Thumbnails
- Vercel Blob (public store) — client-side upload from the edit form, URL stored in Redis
- Falls back to
/thumbnails/default.svgif no thumbnail set
Future ideas
Stored as { text: string, done: boolean } objects to support checkbox completion tracking on the detail page.
Future Ideas
- Mobile view optimisation
- Upload thumbnails via UI (Vercel Blob)
- Checklist styling on future ideas
Stack
Next.jsTailwind CSSUpstash RedisVercel Blobiron-session
Infrastructure
HostingVercel
Meta
Last reviewed2026-05-17
Added5/17/2026