Full-Stack Vibe Coding
We build the classic game Snake as a full-stack web app, end to end, with a coding assistant doing most of the work.
We work through it in this order:
- generate a React frontend with Lovable
- write an OpenAPI spec that the frontend and backend agree on
- let the assistant build a FastAPI backend from that spec
- add a real database and connect the frontend to the backend
- run tests, containerize with Docker Compose, deploy to AWS with infrastructure as code, and wire up a GitHub Actions CI/CD pipeline
No frontend, backend, or DevOps experience is required. You need general software-development sense and comfort with any programming language. The assistant fills the gaps in the areas you haven't worked in before.
Each step is driven by prompts to a coding assistant. I use Codex, but the prompts are plain English and work with any assistant. They run equally well in Claude Code or GitHub Copilot. Cursor, Gemini CLI, and Google Antigravity all handle them too.
Links
Useful resources for this workshop:
- Codex - the coding assistant I use
- Lovable - generates the React frontend
- AI Dev Tools Zoomcamp: end-to-end module - the module this workshop builds on
The app you will build
We build a multiplayer-ready Snake game with a leaderboard, a way to watch other games, and login and signup. The frontend runs as a single-page React app. The backend runs as a FastAPI service that serves both the API and the compiled frontend from one container, backed by a database.
An OpenAPI spec defines the API that frontend and backend share. We write that spec first, then generate the backend from it, so the frontend and backend agree on every endpoint before either is finished. The database starts as SQLite for local work, with zero setup, and becomes Postgres once we move into containers.
Tutorial pages
- Overview and setup
- Part 1: Frontend with Lovable
- Part 2: Run and test the frontend
- Part 3: OpenAPI spec from the frontend
- Part 4: FastAPI backend from the spec
- Part 5: Connect frontend and backend
- Part 6: A Makefile for the project
- Part 7: Real persistence with SQLite
- Part 8: Package as one container
- Part 9: Postgres in a container
- Part 10: Docker Compose
- Part 11: Deploy to AWS with infrastructure as code
- Part 12: CI/CD with GitHub Actions
- Where to go from here
- Continuing development with an agent team
- Q&A: common questions
- Appendix: file inventory