An incident management platform for tracking, triaging, and resolving incidents. Firetower provides severity and status classification, participant management, milestone tracking, and integrations with Slack.
- Backend: Django 5.2, Django REST Framework, PostgreSQL
- Frontend: React 19, TypeScript, TanStack Router/Query, Tailwind CSS, Radix UI
- SDK: Python SDK with JWT auth for programmatic access
- Tooling: uv (Python), Bun (JS), Docker Compose
cp config.example.toml config.toml
# Edit config.toml with your values
docker compose -f docker-compose.db.yml up -d
uv run manage.py migrateYou can inspect the database with Adminer at http://localhost:8089.
uv sync
uv run manage.py runserverThe API will be available at http://localhost:8000.
cd frontend
bun install
bun devThe dev server will be available at http://localhost:5173.
# Backend
uv run pytest
# Frontend
cd frontend
bun testPre-commit is set up to handle all linting and formatting automatically. Install the hooks with:
uv run pre-commit installThis runs ruff, mypy, eslint, and prettier on commit, with knip on push.
All configuration lives in config.toml (copy config.example.toml as a starting point). Sections include:
- postgres: Database connection
- slack: Slack bot token and team config
- auth: IAP authentication
- datadog: Datadog metrics and event logging
src/firetower/ # Django backend
incidents/ # Core incident models and API
integrations/ # Slack
auth/ # Authentication
frontend/ # React frontend
sdk/ # Python SDK