Skip to content

Latest commit

 

History

History
103 lines (78 loc) · 1.97 KB

File metadata and controls

103 lines (78 loc) · 1.97 KB

TaskCraft

Development Flow

Starting Directly

uv run uvicorn app.main:app --reload

Frontend Development

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/

Using Docker Compose

To start all services:

docker compose -f docker-compose.dev.yml up
  • Code changes auto-reload via --reload flag
  • Frontend: just edit files, refresh browser

Database migrations

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

Access database directly

docker compose -f docker-compose.dev.yml exec db psql -U dev -d myapp_dev

Tear down

docker compose -f docker-compose.dev.yml down

Testing

Setup

Install development dependencies:

uv sync --extra dev

Running Tests

Run all tests:

uv run pytest

Run only unit tests:

uv run pytest -m unit

Run only integration tests:

uv run pytest -m integration

Run tests with verbose output:

uv run pytest -v

Run tests without coverage:

uv run pytest --no-cov

Test Structure

  • tests/unit/ - Fast, isolated unit tests
  • tests/integration/ - Full application flow tests
  • tests/conftest.py - Shared fixtures and configuration

Coverage

Tests automatically generate coverage reports. View the HTML report:

open htmlcov/index.html  # macOS
xdg-open htmlcov/index.html  # Linux

Docker Sanity Checks

Test the full Docker stack (app + database):

./test-docker.sh

This 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).