-
Notifications
You must be signed in to change notification settings - Fork 4
Deployment Flow
This guide describes how projects in the practicum should be deployed, even though we do not currently deploy automatically via CD pipelines. The goal is to prepare student teams to deploy safely, consistently, and with clear documentation for future cohorts.
Deployment is about more than pushing code live β it requires infrastructure, secrets, permissions, and reproducibility.
Deployments should only be performed by:
| Role | Deployment Permission |
|---|---|
| Professor / TPM | Full admin access |
| Lead Engineers | Temporary deploy access |
| PMs (when approved) | May assist with secrets & environment setup |
| Students / Contributors | No deployment permission |
Deployment decisions must be approved by:
- The TPM, and
- The instructor
Deployment is never automatic and must be intentional. (for now)
The practicum projects may be deployed using manual cloud hosting and/or managed static hosting.
| Tech | Deployment Style | Common Hosts |
|---|---|---|
| Next.js / React | Static or Node-hosted | Vercel, Netlify, Railway |
| NestJS / Node APIs | Persistent backend service | Render, Railway, AWS |
| Databases | Managed cloud DB | Supabase, Railway, Neon, ElephantSQL |
| Small apps / utilities | Lightweight deploy | GitHub Pages, Cloudflare Pages |
Each project must document:
- which host is chosen
- how to deploy
- who has access
No deployment without documentation.
Before deploying, teams must complete:
npm run buildThis shows required environment variables without exposing credentials.
In README.md, include:
- Hosting service used
- Deployment steps
- Required environment variables
- Rollback steps
Deployment must be requested, not assumed.
Before deployment can occur, students must provide:
| Requirement | Description |
|---|---|
| Production Build Verified |
npm run build must succeed |
| Required Env Vars Listed | In .env.example
|
| Secrets Documented | In a secure channel, not in repo |
| No Local-Only Data | Test accounts, no personal data |
| README Deployment Section | Instructions clear and reproducible |
| Rollback Plan | How to revert to previous version |
If any part is missing, deployment is postponed.
Click to Expand Deployment Steps
Choice depends on cost, traffic, longevity, and DB needs.
Access is never permanent and expires after project completion.
Secrets are entered into:
- Cloud host environment variable panel
- Never committed to the repo
- Shared only by secure message, not Slack channels
Deploy manually through the hosting interface, then:
- Visit public URL
- Test authentication (if applicable)
- Test critical routes/services/API endpoints
Must include:
- Hosting service
- Secrets required
- Deployment steps
- How to rollback
Only TPM and Instructor maintain ongoing control.
Deployments must be reversible. A rollback plan must include:
| Requirement | Example |
|---|---|
| Previous stable build | Store build artifact or previous commit |
| DB backup before deploy | Export/backup with timestamp |
| Steps to redeploy old version | Document re-deploy instructions |
| Access to logs | From hosting provider |
| Responsible roles | Who performs rollback? |
Rollback documentation is part of a professional deployment, not optional.
Each deployed project must contain:
π Deployment Section in README.md
π .env.example file
π Hosting provider chosen + account owner
π Rollback instructions
π Access list (who has deploy rights and expiration date)
The goal is reproducible deployments, not one-time student experiments.
Home β’ New Student Onboarding β’ Guides β’ Projects β’ Code of Conduct β’ FAQ
Last updated: 12/7/2025