/001/
Overview
The site needed verified email sign-ups, file uploads and payments in one self-contained deployment.
My role
Full stack development: application, infrastructure and deployment.
/002/
Stack
- Next.js on Bun
- NestJS
- PostgreSQL 16
- MinIO
- Redis
- Stripe
- Docker
/003/
Architecture
Dockerized stack with PostgreSQL 16, MinIO, Redis and separate app and worker containers; NestJS services for email verification and file handling.
/004/
Key features
- /001/Email verification with token URL
- /002/Reusable S3-compatible file service (upload, stream, delete)
- /003/Zod-validated lazy env config
- /004/Stripe integration
/005/
The hard problem
The hard problem
Configuration errors only surfaced at runtime, deep into a request.
Solution
Zod-validated lazy environment config that fails fast at startup with readable errors instead.