- Python 3.14
- Node.JS >= LTS
- uv
cd backend
uv synccd frontend
npm installcd backend
uv run ruff check # Linting the code
uv run mypy # Type checking the code
uv run pytest # Running the testscd frontend
npm run lint # Linting the code
npm run typecheck # Type checking the code
npm run test # Running the testsGenerate the Open API specification file:
cd backend
uv run python scripts/export_openapi.pyGenerate the API schema types:
cd frontend
npm run generate-typesThis project uses SQLAlchemy 2 as the ORM and Alembic for database migrations.
The database URL is configured in app/settings.py and defaults to SQLite. You can override this by setting the DATABASE_URL environment variable or creating a .env file.
How to manage the database:
# Run all pending migrations
cd backend
uv run alembic upgrade headAfter modifying models in app/models.py, create a new migration:
# Auto-generate migration from model changes
cd backend
uv run alembic revision --autogenerate -m "Description of changes"
# Review the generated migration file in alembic/versions/
# Then apply it:
uv run alembic upgrade headTo run the project, you must start the backend and the frontend in the background:
cd backend
uv run uvicorn app.main:app --reloadcd frontend
npm startNote that the frontend (vite) contains a proxy to the backend API (see vite.config.ts).
docker run --rm -it -v ~/.mitmproxy:/home/mitmproxy/.mitmproxy -p 8080:8080 -p 8081:8081 mitmproxy/mitmproxy mitmweb --web-host 0.0.0.0 --listen-host 0.0.0.0 --listen-port 8080