full-stack starter
A running start.
Next.js, FastAPI and PostgreSQL — already wired, already serving. Everything on this page is live: the forms write to your database and the status line below is a real health check.
what's in the box
Live.
Frontend, API and database run behind one gateway. Hot reload in development, hardened multi-stage builds for production.
Inbox.
The contact form below writes straight to PostgreSQL — no third-party form service, your data stays in your stack.
Audience.
Newsletter signup with unsubscribe built in, stored alongside the rest of your data and ready to export.
Night.
Dark mode that respects the system preference and remembers the choice — every component ships styled for both.
Shipped.
Dockerfiles, compose files and migrations included. The same images that run here deploy to staging and production.
questions
How this works
How do I change what this page says?
Edit frontend/content/site.ts — every headline, feature and answer on this page lives in that one file. The components under components/sections/ control layout only.
Where do form submissions go?
Into your PostgreSQL database. The contact form posts to /api/contact and newsletter signups to /api/newsletter/subscribe — inspect them with docker compose exec db psql.
How do I add an API endpoint?
Model in backend/models, schema in backend/schemas, logic in backend/services, route in backend/routes, then wire it in main.py. The contact feature is the reference implementation.
How do I deploy it?
docker-compose.prod.yml builds production images behind a Traefik-ready configuration — no bind mounts, no published ports. Point your pipeline at it and go.
contact
Say hello
This form is real — submissions land in your database the moment you press send.
Get updates
Occasional email, one-click unsubscribe.