Skip to content

About

A website containing everything you need to monitor police scanners in Chicago.

Topics

Resources

Security policy

Stars

8 stars

Watchers

2 watching

Forks

Repository files navigation

CrimeIsDown

Tools for listening to Chicago scanner audio, searching transcripts, looking up locations and managing notifications. The application uses an Astro/React frontend and a FastAPI backend, with SQLAlchemy, Redis, Celery, Meilisearch and FFmpeg.

backend/       API, workers, account pages and self-contained contract tests
frontend/      Astro/React website and frontend tests
scripts/       Local development and publication checks
compose.yml    Optional local Redis and Meilisearch services

Development

Use Python 3.14+, uv, Node.js 24+ and npm. FFmpeg is required for audio tests.

uv sync --frozen --package app
npm --prefix frontend ci
# Terminal 1: temporary SQLite and memory state; no real provider credentials.
CID_DEMO=1 uv run --package app python scripts/dev-api.py
# Terminal 2: website against the local API.
PUBLIC_API_BASE_URL=http://localhost:8000 npm run dev

To share the local preview with another machine, start the demo API with --host 0.0.0.0 --app-url http://YOUR_LAN_IP:8000 --frontend-origin http://YOUR_LAN_IP:4321. Set PUBLIC_API_BASE_URL=http://YOUR_LAN_IP:8000 in the ignored frontend/.env.local, then rebuild/restart the frontend. The startup script still uses loopback by default. Account endpoints require authentication; a signed-out local account check returns 401, just as it does on the deployed API.

The development API uses an empty application schema and blocks outbound provider calls. It demonstrates startup and logged-out behavior; authenticated scenarios are covered by synthetic fixtures and mocked providers in the tests. Public map and scanner links still use external services. No production account database, audio corpus or deployment configuration is included.

Validate

npm test
npm run test:backend
npm run build
python3 scripts/check-publication.py --history
# Install Gitleaks, then scan every locally available Git ref.
gitleaks git --log-opts=--all --redact=100

The public test suite requires no PHP, private repository or historical backend commit. Original-implementation comparisons are maintained separately. The optional Meilisearch integration test needs a disposable local search service.

Read configuration, architecture deployment and security. The backend retains compatible account records, sessions and API contracts; deployment-specific mappings are configured separately. The earlier frontend history is preserved with credential literals removed.

This project incorporates work derived from the FastAPI full-stack template. See third-party notices for the template attribution. No project-wide license is granted for CrimeIsDown original code.

About

A website containing everything you need to monitor police scanners in Chicago.

Topics

Resources

Security policy

Stars

8 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages