uv run uvicorn app.main:app --reload
The frontend uses Vite + SolidJS. Start the development server:
cd frontend
npm run dev
This starts Vite with hot module replacement on http://localhost:5173/
To start all services:
docker compose -f docker-compose.dev.yml up
- Code changes auto-reload via
--reloadflag - Frontend: just edit files, refresh browser
docker compose -f docker-compose.dev.yml exec app uv run alembic revision --autogenerate -m "description"
docker compose -f docker-compose.dev.yml exec app uv run alembic upgrade head
docker compose -f docker-compose.dev.yml exec db psql -U dev -d myapp_dev
docker compose -f docker-compose.dev.yml down
Install development dependencies:
uv sync --extra devRun all tests:
uv run pytestRun only unit tests:
uv run pytest -m unitRun only integration tests:
uv run pytest -m integrationRun tests with verbose output:
uv run pytest -vRun tests without coverage:
uv run pytest --no-covtests/unit/- Fast, isolated unit teststests/integration/- Full application flow teststests/conftest.py- Shared fixtures and configuration
Tests automatically generate coverage reports. View the HTML report:
open htmlcov/index.html # macOS
xdg-open htmlcov/index.html # LinuxTest the full Docker stack (app + database):
./test-docker.shThis script:
- Builds the Docker containers
- Starts the application and PostgreSQL
- Waits for services to be ready
- Sanity checks API endpoints with curl
- Cleans up automatically
Note: Requires jq for JSON formatting. Install with apt install jq (Linux) or brew install jq (macOS).