Bootstrap (first time only):
script/bootstrap # Installs Python and Node dependenciesSetup (first time and after migrations):
script/setup # Creates .env, database, runs migrationsServer (development):
script/server # Starts Flask on :5000 + Vite on :5173Run these slash commands to clean up code:
/python-code-simplifier- Simplifies recently modified Python code for clarity and maintainability while preserving functionality./typescript-code-simplifier- Simplifies recently modified TypeScript code for clarity and maintainability while preserving functionality.
IMPORTANT ALWAYS RUN these after implementing to get immediate feedback:
- Tests:
script/test→pytest+vitest- Direct:
PYTHONPATH=src pytest tests/(backend) +cd frontend && npm test(frontend)
- Direct:
- E2E:
script/test-e2e→ Playwright browser tests- Direct:
npx playwright test(auto-starts dev servers) - UI mode:
script/test-e2e --ui
- Direct:
- Typecheck:
script/typecheck→mypy+tsc- Direct:
mypy src/ --ignore-missing-imports+cd frontend && npm run typecheck
- Direct:
- Lint:
script/lint→flake8+eslint- Direct:
flake8 src/ tests/+cd frontend && npm run lint
- Direct:
- Backend: Flask on :5000,
PYTHONPATH=srcrequired when running pytest directly - Frontend: Vite dev server on :5173, React Islands pattern with
data-islandattributes in templates - Database: PostgreSQL, connection via
DATABASE_URLenv var (set byscript/setup) - Dev environment:
.envcreated byscript/setup, contains all runtime config
- Backend: Python/Flask in
src/, tests intests/ - Frontend: React in
frontend/, compiled to static assets - Templates: Jinja2 with Islands hydration points (
data-islandattributes) - Migrations: Alembic in
migrations/, auto-applied byscript/setup - E2E tests: Playwright in
e2e/, config inplaywright.config.ts
A Playwright MCP server is configured in .vscode/mcp.json for interactive browser testing via agent mode. Use the /test-in-browser slash command for the full workflow — it teaches you how to navigate the app, interact with elements, and verify results using accessibility snapshots.
Use the slash command /git-commit to create well-structured git commits.