Dev environment and make targets

Before we start wiring code, let us walk the repo. The workshop is a small monorepo with a backend folder for FastAPI plus Whisper, a frontend folder for the React recorder, and a Makefile that hides the setup and run commands behind clean targets.

Makefile
makefile
setup: ## Install backend and frontend dependencies
	@if [ ! -f backend/.env ]; then cp backend/.env.example backend/.env; fi
	@cd backend && uv sync
	@cd frontend && npm install

dev: setup ## Run backend and frontend together
	@$(MAKE) -j 2 backend frontend

backend: ## Run only the FastAPI backend
	@cd backend && uv run uvicorn app:app --reload --host 0.0.0.0 --port 8000

frontend: ## Run only the Vite frontend
	@cd frontend && npm run dev

make setup copies backend/.env.example to backend/.env, installs Python deps with uv, and installs npm packages. make dev runs backend and frontend together using parallel make. You can also run them in separate terminals with make backend and make frontend.

backend/.env.example
bash
# LLM API Configuration (OpenAI-compatible)
LLM_BASE_URL=https://openrouter.ai/api/v1
LLM_API_KEY=your_openrouter_api_key_here
LLM_MODEL=google/gemini-2.5-flash-lite

# Whisper Configuration (local speech-to-text)
WHISPER_MODEL=base.en

backend/.env.example ships with OpenRouter as the default provider. make setup copies it to backend/.env on first run, and you drop in your own API key. Whisper has no key because it runs locally.

Quiz: Quiz

Loading practice…