Overview and setup
The app you will build
The classic game Snake, as a full-stack web app. We build the frontend as a single-page React app with a leaderboard, a spectate view for watching other games, and login and signup. We back it with a FastAPI service that stores users, scores, and active games in a database. One container serves both the API and the compiled frontend.
We build it in the order a real project grows. First the frontend, because it defines what the app needs to do. Then an OpenAPI spec that fixes the agreed API between frontend and backend. Then the backend that fulfils the agreed API and a database behind it. Finally we package and deploy with Docker Compose, AWS via infrastructure as code, and a CI/CD pipeline.
We let a coding assistant work in areas you don't know. You don't need to know React to get a working frontend, and you don't need to know FastAPI to get a working backend. You need to know what you want, how to read the result, and when to push back.
Prerequisites
You can do the whole workshop on a laptop.
Set up these accounts:
- GitHub account. Lovable pushes the frontend here, and the CI/CD pipeline runs on GitHub Actions.
- Lovable account. The free tier is enough to generate the frontend.
- A coding assistant. I use Codex, which comes with a ChatGPT account. Claude Code, GitHub Copilot, Cursor, Gemini CLI and Google Antigravity work the same way. The prompts are plain English.
- AWS account for the optional deployment part. You can stop after Docker Compose and still have a working local app, or deploy to any other cloud.
Install or confirm these local tools:
- Node.js 20 for the React frontend.
- Python 3.14 for the backend.
- uv for Python packaging.
- Docker with Docker Compose.
For the deployment part you also need the
AWS CLI,
signed in with aws configure.
The structure of the build
Each part is one job, and each builds on the last:
- The frontend with Lovable, then run and test it locally.
- An OpenAPI spec extracted from what the frontend calls.
- The FastAPI backend generated from that spec, on a mock database, with tests.
- The frontend wired to the backend, running side by side.
- A real database: SQLite locally, then Postgres once we containerize.
- Docker Compose, deployment to AWS with infrastructure as code, and GitHub Actions.
You can stop at any part and still have something that runs. There's nothing to set up before the first part: Lovable creates the project for us, so head to Part 1: Frontend with Lovable when you're ready.