Web-based fleet assignment system for assigning drivers to vans with multi-user authentication, role-based access control, daily persistence, audit logging, and XLSX export.
View on GitHubThree roles — Admin, Operator, and Read-only — with permissions enforced at both the API and UI levels.
Assign any driver to any van per day with autocomplete. Database constraints prevent double-booking.
Import vans and drivers from CSV or XLSX files. Re-uploading updates existing records without duplicates.
Export daily or weekly assignment reports to XLSX with a single click or API call.
Every data-modifying action is logged with user, action type, entity, details, and timestamp.
Ship with Docker Compose. Data persists in named volumes. Works on AWS, GCP, Azure, or any VPS.
| Component | Technology |
|---|---|
| Backend | Python 3.12 / FastAPI |
| Database | SQLite (WAL mode) with ACID constraints |
| ORM + Migrations | SQLAlchemy + Alembic |
| Authentication | JWT (httpOnly cookies + Bearer tokens) |
| Password Hashing | bcrypt via passlib |
| Frontend | Jinja2 + Bootstrap 5 + Vanilla JS |
| Import/Export | pandas + openpyxl |
| Tests | pytest (55 tests) |
| Deployment | Docker + docker-compose |
cd "Van List 2026"
pip install -r requirements.txt
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
Open http://localhost:8000 and log in with admin / admin123.
Change the default password immediately after first login.
cd "Van List 2026"
docker compose up -d
Data persists in Docker volumes vanlist-data and vanlist-backups.
| Role | Assignments | Upload | Manage Users | Toggle Vans/Drivers | Audit Log | Export |
|---|---|---|---|---|---|---|
| Admin | Create/Edit/Delete | Yes | Yes | Yes | Yes | Yes |
| Operator | Create/Edit/Delete | No | No | No | No | Yes |
| Read-only | View only | No | No | No | No | Yes |