┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ Browser │────▶│ Nginx │────▶│ React Dashboard │
└─────────────┘ │ (port 80) │ └─────────────────┘
│ │ ┌─────────────────┐
└──────┬───────┴────▶│ FastAPI (API) │
│ └────────┬────────┘
│ │
│ ┌───────▼────────┐
│ │ PostgreSQL │
│ └────────────────┘
│ │
│ ┌───────▼────────┐
└─────────────▶│ Docker Engine │
│ (student apps) │
└────────────────┘
- User creates Project with
repo_url. - User triggers Deployment → API inserts row (
pending). - Background task: clone/copy source →
docker build→docker run. - Nginx routes
/apps/<id>/to the container port (Phase 2 enhancement). - Dashboard polls deployment status and shows logs.
- CI: GitHub Actions runs tests on push/PR.
- CD: On
main, SSH to EC2 runsscripts/deploy-stackpilot.sh.
| Cloud | Use |
|---|---|
| AWS EC2 | Host StackPilot + Docker |
| Azure Blob | Archive deployment logs |
| GCP Cloud Run | Demo deploy of sample app |