- Custom User model with email as unique identifier (AUTH_USER_MODEL)
- POST /api/auth/register/ with email validation, password min 8 chars, duplicate rejection
- POST /api/auth/login/ returning JWT (access + refresh) tokens
- Passwords hashed via Django's make_password
- React LoginPage and RegisterPage with form validation
- AuthContext with useReducer for auth state management
- Axios API client with JWT token injection
- TypeScript conversion of frontend scaffold
- Root package.json with Yarn workspaces (web, api)
- /web: React 19 + Vite 6 + @vitejs/plugin-react
- index.html, src/main.jsx, src/App.jsx, vite.config.js
- /api: Django 5.x managed with uv
- pyproject.toml with Django + psycopg2-binary
- project/settings.py with PostgreSQL config from DATABASE_URL
- project/urls.py, project/wsgi.py, manage.py
- docker-compose.yml with db (postgres:15), api, web services
- Health check for db, live code volumes, dependency ordering
- Dockerfiles for both web (node:20-alpine) and api (python:3.12-slim)
- .gitignore updated for Python build artifacts and venv
- docs/implementation-issue-1-monorepo-scaffold.md