The project uses Docker Compose to provide local infrastructure for development. Two services are defined: a PostgreSQL database and a Mailpit SMTP server for local email testing.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/WilliamsDevos/fleet-management-system/llms.txt
Use this file to discover all available pages before exploring further.
Services
db
PostgreSQL 16 (Alpine). Stores all fleet management data. Persisted via the
postgres_data named volume.mailpit
Local SMTP server and web UI for catching outgoing emails during development. No emails are delivered externally.
Port mappings
| Service | Port | Purpose |
|---|---|---|
| db | 5432 | PostgreSQL connections |
| mailpit | 1025 | SMTP (send emails to) |
| mailpit | 8025 | Mailpit web UI |
Starting services
Start the database
postgres_data volume mounted at /var/lib/postgresql/data. Data persists across container restarts.docker-compose.yml
Backend Dockerfile
The backend image is built frompackages/backend/Dockerfile. Here is what each stage does:
- Uses Node 20 on Alpine Linux for a small footprint.
- Copies
package.jsonmanifests before source code so dependencies are cached unless lockfiles change. - Includes the
shipfree/coreshared package alongside the backend. - Creates an
uploadsdirectory for user-uploaded files (mounted as a bind volume in production). - Runs
prisma migrate deployautomatically on every container start before launching the server. - Exposes port
3001.
Environment variables for Docker-based setup
Set these inpackages/backend/.env when running against the Docker Compose database and Mailpit:
The default PostgreSQL credentials (
postgres / postgres) are intended for local development only. Never use these credentials in staging or production.Volumes
Thepostgres_data named volume persists your database across docker-compose down and container restarts. To fully reset local data, remove the volume explicitly: