- Framework: Next.js v16 with full prerendering using the new Cache Components where needed. only stuff like vote count and admin pages need to be dynamic, in which case we use
Suspense tags or make them client-side.
- we also prerender all 100+ projects/[id] pages at build time
- DB: Postgres with drizzle as an ORM and migration tool.
- Authentication: Clerk with passwordless login (magic link)
- Object Storage: Cloudflare’s R2 for project images and DB backups
- Notification: Next.js PWA
or this guide
or OneSignal
👆️ all of these I found fucking annoying to work with, so I just made my own
- API: TBD (most likely none; we might just use server actions and Next.js api routes)
- Secret Management: Infisical
Don't forget to compress your images kids.
Before 💀:

After
=========================================
Converted: 87/89 files
Original: 1.1G
Compressed: 198M
Saved: 841M (82% reduction)
=========================================