Third-party software¶
Fab Dispatch is MIT licensed. It is built on the open-source software below, each under its own license; this file lists what the app ships with. Every license here allows use in an MIT project, commercial use included. The data in the app is synthetic, made for this project, and covered by the MIT license too.
Runtime: API¶
| Package | Used for | License |
|---|---|---|
| fastapi | HTTP API | MIT |
| uvicorn | ASGI server | BSD-3-Clause |
uvicorn's [standard] extras: uvloop, httptools, websockets, watchfiles |
Faster event loop, HTTP parsing, WebSockets, auto-reload | uvloop: MIT or Apache-2.0; httptools: MIT; websockets: BSD-3-Clause; watchfiles: MIT |
| pydantic | Validation and models | MIT |
| pydantic-settings | Configuration from the environment | MIT |
| numpy | Numerics | BSD-3-Clause (bundled parts: 0BSD, MIT, Zlib, CC0-1.0) |
| scipy | Hungarian assignment, exact MILP (HiGHS, MIT) | BSD-3-Clause |
| pyvrp | Vehicle-routing solver strategy | MIT |
| highspy | Certified lower bounds by column generation (scripts/certified_bound.py) |
MIT |
| qdrant-client | Vector search for the assistant and repair history | Apache-2.0 |
| pyjwt with cryptography | Verifying sign-in tokens | MIT; cryptography: Apache-2.0 or BSD-3-Clause |
| psycopg | Postgres driver (production) | LGPL-3.0-only, see below |
psycopg (LGPL-3.0). Used unmodified, as a separately installed library the app imports. Under
the LGPL that places no conditions on Fab Dispatch's own code, and you can swap in any other build of
psycopg. Its source is at the link above. The default local setup (SQLite) doesn't load it at all.
The psycopg[binary] wheel the app installs bundles libpq (the
PostgreSQL License, a permissive MIT-style license) and OpenSSL
(Apache-2.0).
Runtime: web app¶
| Package | Used for | License |
|---|---|---|
| react and react-dom | UI | MIT |
| @supabase/supabase-js | Sign-in | MIT |
| react-markdown | Rendering help articles | MIT |
| remark-gfm | Tables and lists in help articles | MIT |
| Geist and Geist Mono | Typefaces, served by Google Fonts | SIL Open Font License 1.1 |
Documentation site and development tools¶
Used to build, test and document the project, not shipped with the app: MkDocs (BSD-2-Clause), Material for MkDocs (MIT), Redoc (MIT), Vite (MIT), Vitest (MIT), Playwright (Apache-2.0), axe-core (MPL-2.0) and ESLint (MIT).
The Python development dependencies (backend/requirements-dev.txt). Two of them produce numbers
in docs/ANALYSIS.md rather than test the app, so they are listed with the same
care as the runtime:
| Package | Used for | License |
|---|---|---|
| pytest and pytest-cov | Test runner and coverage | MIT |
| httpx | In-process API client in the tests | BSD-3-Clause |
| ruff | Lint and format | MIT |
| pip-audit | Known-vulnerability scan | Apache-2.0 |
| pyyaml | Reading mkdocs.yml in the docs-site test |
MIT |
| highspy | Certified optimality bounds by column generation (scripts/certified_bound.py, ANALYSIS.md) |
MIT |
| scikit-learn | Classifier and quantile trees in the repair-duration study (scripts/duration_study.py, ANALYSIS.md) |
BSD-3-Clause |
Complete lists¶
The tables above cover direct dependencies. Each one brings its own dependencies, under their own licenses. For the full list of an installed copy:
pip install pip-licenses && pip-licenses --from=mixed # API (in backend/.venv)
npx license-checker --production --summary # web app (in frontend/)
Hosted services¶
The production deployment uses Vercel (hosting), Supabase (database and sign-in) and Cloudflare Turnstile (bot check) on their free tiers, under each provider's terms of service. None of them is needed to run the app locally.