Skip to content

About

Open Source Project and Resource Planning solution, MS Project alternative

Topics

Resources

Contributing

Security policy

Stars

3 stars

Watchers

1 watching

Forks

Latest commit

 

History

189 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Milestone

Backend CI Frontend CI Backend coverage Frontend coverage

Screenshot 2026-05-04 at 22 55 43

A comprehensive R&D project management platform for multi-site organizations.

Screenshot 2026-05-04 at 22 53 48


Open in GitHub Codespaces

Features

  • Gantt chart visualization — Interactive timeline with drag & drop, resize phases
  • Resource management — Staff allocation with percentage-based assignments
  • Equipment scheduling — Book equipment across projects and phases
  • Multi-tenant architecture — Separate databases per organization
  • Organization-level SSO — Microsoft Entra ID with group-based access control
  • Cross-site visibility — View resources across locations while maintaining confidentiality
  • What-If planning — Scenario planning without affecting production data
  • Real-time collaboration — WebSocket-powered live updates
  • Import/Export — Microsoft Project (CSV, XML, MPP) support
  • Mobile responsive — Touch-optimized for tablets

Tech Stack

  • Backend: Python 3.11+ / FastAPI / SQLAlchemy 2.0 (async) / PostgreSQL 15+
  • Frontend: React 18 / TypeScript / Zustand / Vite / TanStack Query
  • Deployment: Docker / Docker Compose
  • Documentation: MkDocs Material / Cloudflare Pages

Quick Start

Option 1: GitHub Codespaces (Recommended for Demo)

Click the badge above to launch a fully configured environment with PostgreSQL, Python, Node.js, and a pre-seeded demo tenant.

The backend starts automatically on port 8485 serving the pre-built frontend — the demo is usable as soon as the Codespace is ready. For frontend development with hot reload, optionally run:

cd frontend && npm run dev -- --host 0.0.0.0 --port 3333

The Codespace automatically creates a demo tenant with sample data:

Access URL Email Password
Admin Portal /admin/ admin@demo.local demo1234
Demo Tenant /t/demo/ admin@demo.local demo1234

The demo tenant includes 2 sites (Winterthur, Frankfurt), 4 projects with phases and assignments, 8 staff members with skills, and 8 equipment items. All staff accounts use password demo1234.

Option 2: Docker Fresh Install

git clone https://github.com/vincentmakes/milestone-planner.git
cd milestone-planner
cp .env.example .env
docker compose -f docker-compose.fresh.yml up -d

This starts PostgreSQL + the app with auto-initialization. Check docker logs milestone-fresh for the admin password. Access at http://localhost:8486/.

Option 3: Production with External DB

cp .env.example .env
# Edit .env with your database credentials and secrets

# Start against a managed/external PostgreSQL (auto-creates DBs with PG_ADMIN_* creds)
docker compose -f docker-compose.external-db.yml up -d

Access at http://localhost:8485/. (The plain docker-compose.yml targets a specific Unraid deployment — external network + hardcoded host path — adapt it before using it elsewhere. See the installation guide.)

Documentation

Full documentation is published at docs-milestone.verdet.me.

Resource Description
User Guide Day-to-day usage: Gantt charts, staff, equipment, vacations
Admin Guide Installation, multi-tenant management, SSO configuration
Developer Guide Architecture, local development, API reference
API Documentation Swagger UI (when running)
Changelog Release history (SemVer)

File Structure

milestone-planner/
├── app/                    # FastAPI backend
│   ├── main.py            # Application entry point
│   ├── config.py          # Pydantic settings
│   ├── database.py        # Tenant DB engine/session
│   ├── routers/           # API endpoints (18 modules + admin/ package)
│   ├── models/            # SQLAlchemy models (15 modules)
│   ├── schemas/           # Pydantic schemas
│   ├── scripts/           # init_db (auto-init), seed_demo
│   ├── services/          # Business logic (encryption, SSO, tenant management)
│   ├── middleware/        # Auth, tenant resolution, broadcast middleware
│   └── websocket/         # Real-time collaboration (presence, change events)
├── frontend/              # React frontend source
│   └── src/               # Components, stores, API clients, types
├── docs/                  # MkDocs documentation source
│   ├── user-guide/        # End-user documentation
│   ├── admin-guide/       # Admin & multi-tenant docs
│   └── developer-guide/   # Architecture & API reference
├── .devcontainer/         # GitHub Codespaces configuration
├── .github/workflows/     # CI (audits, lint, test, build, version gate; docs deploy via Cloudflare Pages)
├── migrations/            # Raw SQL migration files
├── scripts/               # Utility scripts
├── public/                # Served frontend (built from frontend/dist/)
├── docker-compose.yml     # Production deployment
├── docker-compose.fresh.yml  # Self-contained fresh install
├── docker-compose.dev.yml # Development with hot reload
├── Dockerfile             # Multi-stage container build
├── mkdocs.yml             # Documentation site config
├── setup_databases.sql    # Complete database schema
└── .env.example           # Environment template

Multi-Tenant Mode

For SaaS deployment with multiple organizations:

  1. Set MULTI_TENANT=true in .env
  2. Configure master DB settings (MASTER_DB_HOST, MASTER_DB_NAME, etc.)
  3. Set TENANT_ENCRYPTION_KEY (64-char hex, required)
  4. Set PG_ADMIN_USER / PG_ADMIN_PASSWORD for auto-provisioning
  5. Access admin panel at /admin/

Each tenant gets an isolated PostgreSQL database. Credentials are encrypted with AES-256-GCM. See the Multi-Tenant Management Guide for details.

Access URLs

URL Description
/ Main application
/t/{slug}/ Tenant-specific access
/admin/ Multi-tenant admin panel
/api/docs API documentation (Swagger)
/health Health check endpoint

Environment Variables

Key variables (see .env.example for full list):

Variable Description
DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD PostgreSQL connection
SESSION_SECRET Secret for session signing
MULTI_TENANT Enable multi-tenant mode (true/false)
MASTER_DB_HOST, MASTER_DB_NAME, etc. Master DB (multi-tenant only)
TENANT_ENCRYPTION_KEY 64-char hex for credential encryption
PG_ADMIN_USER, PG_ADMIN_PASSWORD For auto-provisioning tenant DBs

License

MIT

About

Open Source Project and Resource Planning solution, MS Project alternative

Topics

Resources

Contributing

Security policy

Stars

3 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages