Workshops ... Q&A: common questions

Q&A: common questions

Questions that come up when people run this workshop on their own.

Frontend tools other than Lovable

You don't have to use Lovable. It's fast for generating a React app you can see running, but any tool that produces a frontend works. That includes Bolt, v0, Cursor, or your coding assistant writing React directly.

The rest of the workshop depends on how the frontend is built. It has to centralize its backend calls in one place and ship a mock implementation, so you can run it before the backend exists. Ask for that explicitly whatever tool you use.

Codex versus other assistants

You don't have to use Codex either. I use it, but every prompt is plain English and runs on other assistants like Claude Code, GitHub Copilot, or Cursor. Most assistants read the AGENTS.md file we add in Part 4: FastAPI backend from the spec, so the house rules follow you across tools.

Writing the spec before the backend

Writing openapi.yaml first makes the agreement between frontend and backend explicit and gives the backend a precise target. Without it, the assistant has to infer the backend from the frontend twice, once to build it and once every time they disagree. With the spec, one document settles those disagreements: whichever side doesn't match openapi.yaml is the one to fix. The details are in Part 3: OpenAPI spec from the frontend.

Skipping the AWS deployment

You can skip the deployment in Part 11: Deploy to AWS with infrastructure as code, which is optional. After Part 9: Postgres in a container you have a full app running locally under Docker Compose, which is enough to finish the workshop. You can also point the same Compose stack at any other cloud or a managed host.

Switching the database between SQLite and Postgres

The backend picks its database from the DATABASE_URL environment variable. Containers set it to the Postgres service, and for local development you set it to a SQLite file in backend/.env. The tests use SQLite automatically. One variable switches the whole app with no code change, which is why everything routes through DATABASE_URL in Part 7: Real persistence with SQLite.

Frontend and backend disagreements

A mismatch on a field name or a request body is normal during integration. Read the error from the browser console or the uvicorn log. Paste both the request and the error to the assistant, and ask it to make them agree and follow openapi.yaml. Let the spec settle the disagreement, and the debugging note in Part 5: Connect frontend and backend walks through one such mismatch.

Questions & Answers

Sign up to ask questions, track your progress, and get access to other workshops · Already have an account? Sign in