Admin Guide Overview¶
This guide covers installation, configuration, and administration of Milestone Planner, including multi-tenant SaaS deployment.
Deployment Modes¶
Milestone supports two deployment modes:
Single-Tenant¶
A single organization with one database. Simplest setup — suitable for on-premises or small-team deployments.
- One PostgreSQL database holds all data
- No master database or admin portal needed
- Users are managed within the application
Multi-Tenant (SaaS)¶
Multiple organizations, each with an isolated database. Includes a centralized admin portal for tenant and organization management.
- Master database (
milestone_admin) stores tenant registry, admin users, organizations, and SSO config - Tenant databases (
milestone_<slug>) hold per-tenant isolated data - Admin portal at
/admin/for tenant lifecycle management - Organization-level SSO with Microsoft Entra ID
- Automatic database provisioning for new tenants
System Requirements¶
| Component | Requirement |
|---|---|
| OS | Linux (Ubuntu 22.04+ recommended), macOS, or Windows with Docker |
| Docker | Docker Engine 24+ and Docker Compose v2 |
| PostgreSQL | 15+ (included in docker-compose.fresh.yml) |
| Memory | 1 GB minimum (2 GB+ recommended for multi-tenant) |
| Disk | 500 MB for application + database storage |
| Java | JRE 11+ (for MPP file import; included in Docker image) |
| Node.js | 20+ (for frontend development only; not required for production) |
Architecture Overview¶
┌─────────────────────────────────────┐
│ Port 8485 │
│ FastAPI Backend │
├─────────────────────────────────────┤
│ /api/* → API endpoints │
│ /t/{slug}/api/* → Tenant API │
│ /admin/ → Admin SPA │
│ /t/{slug}/* → Tenant SPA │
│ /* → Main SPA │
│ /health → Health check │
└──────────┬──────────────────────────┘
│
┌──────────┴──────────────────────────┐
│ PostgreSQL 15+ │
├─────────────────────────────────────┤
│ milestone_admin (master DB) │
│ milestone_acme (tenant DB) │
│ milestone_pharma (tenant DB) │
│ ... │
└─────────────────────────────────────┘
The FastAPI backend serves both the API and the pre-built React frontend as static files. All authentication is session-based with secure cookies.