An API for searching, using, and maintaining Data Sources, built by the Police Data Accessibility Project (PDAP).
Live app: https://data-sources.pdap.io/ deployed from main
Dev app: https://data-sources.pdap.dev/ deployed from dev
API docs / base URL: https://data-sources.pdap.io/api (or ...dev/api)
Full documentation is in the docs/ directory:
- Architecture Overview — System design, dual Flask/FastAPI architecture, directory structure.
- API Overview — v2 and v3 APIs, versioning, and migration plan.
- Authentication — JWT, API keys, OAuth, and permissions.
- Endpoints — All available endpoints and what they do.
- Development Setup — Full setup guide (dependencies, database, secrets).
- Database — Schema, migrations, query builders.
- Testing — Running and writing tests.
- Workflow — Branching, PRs, CI/CD, code standards.
- Troubleshooting — Common issues and fixes.
# Clone
git clone https://github.com/Police-Data-Accessibility-Project/data-sources-app.git
cd data-sources-app
# Install dependencies (using uv)
pip install uv
uv sync --locked --all-extras --dev
# Set up pre-commit hooks
pre-commit install
# Configure environment (see docs/development/setup.md and ENV.md)
cp .env.example .env # Then edit with your values
# Set up local database
cd local_database && python setup.py && cd ..
uv run alembic upgrade head
# Run the app
python app.pyFor the full setup guide with all options, see Development Setup.
Please review CONTRIBUTING.md before submitting a Pull Request. For architecture and design decisions, see DESIGN.md.