ADR-0007: Host Portfolio App on Vercel with Promotion Gated by GitHub Checks
Purpose
Record the decision to host the Portfolio App on Vercel, using:
- preview deployments for PRs
- production deployments from
main - production promotion gated by imported GitHub checks (Deployment Checks)
Scope
In scope
- environment strategy (preview vs production)
- gating rules for production promotion
- rollback strategy and operational implications
Out of scope
- vendor account details and secrets (never document publicly)
- non-Vercel hosting strategies beyond initial consideration
Prereqs / Inputs
- Decision owner(s): Portfolio maintainer
- Date: 2026-01-10
- Status: Proposed (accept on successful deploy + checks gating)
- Related artifacts:
- Portfolio App dossier deployment page:
docs/60-projects/portfolio-app/deployment.md - Ops runbooks (this set): deploy/rollback/CI triage
- ADR-0004: CI quality gates (pattern mirrored here)
- Portfolio App dossier deployment page:
Decision Record
Title
ADR-0007: Host Portfolio App on Vercel with Promotion Gated by GitHub Checks
Context
The Portfolio App is a public-facing application and must demonstrate enterprise release governance:
- PR review with preview environments
- deterministic build contract
- production promotion only when checks pass
- fast rollback capability
Vercel provides Git-integrated deployments and preview environments by default, and supports gating production promotion on GitHub checks via Deployment Checks.
Decision
Host on Vercel with the following governance:
- PR branches → preview deployments (review URLs)
main→ production deployment- production promotion (domain assignment) requires GitHub checks to pass:
ci / qualityci / build
- rollback is primarily Git revert + redeploy from corrected
main
Alternatives considered
- GitHub Pages
- Pros: free static hosting
- Cons: less natural for Next.js; preview workflows less seamless; weaker full-stack narrative
- Not chosen: Vercel is more aligned with the intended stack and enterprise delivery story.
- Netlify
- Pros: similar preview support
- Cons: comparable; selection depends on ecosystem preferences
- Not chosen: standardize on Vercel for the portfolio program to reduce variance.
- Self-hosting
- Pros: control and “SRE story”
- Cons: operational overhead not justified for initial portfolio; increases risk of reliability issues
- Not chosen: reserved for a dedicated infrastructure demo project later.
Consequences
Positive consequences
- Strong enterprise signal: gated promotion + PR previews
- Consistent workflow across portfolio properties (docs app and portfolio app)
- Simple rollback via Git revert preserves traceability
- Reduced release risk: checks must pass before production is promoted
Negative consequences / tradeoffs
- Vendor dependency (hosting feature set and stability)
- Requires stable check naming and CI triggers
- Must maintain parity between preview/prod build settings
Operational impact
- Runbooks must define:
- deploy validation steps
- rollback triggers and procedures
- handling “checks pending” scenarios
- CI must run on
pushtomain, not just PRs, so checks exist for the production commit.
Security impact
- Promotion gating reduces risk of shipping broken or unsafe changes
- Still requires strict “no secrets” hygiene and dependency governance
Implementation notes (high-level)
- Configure Vercel project:
- connect GitHub repo
- enable preview deployments
- enable Deployment Checks and import required GitHub checks
- Ensure GitHub Actions:
- runs
cion PRs and onpushtomain - check names remain stable (do not rename lightly)
- runs
- Validate with a controlled change:
- create PR, confirm preview, merge, confirm production promotion waits on checks
Validation / Expected outcomes
- PR previews exist and are used for review.
- Production promotion is blocked until:
ci / qualitypassesci / buildpasses
- Rollback can be executed quickly and deterministically with Git revert.
Failure modes / Troubleshooting
- Vercel waits indefinitely for checks:
- ensure workflows run on
pushtomain - ensure check names match imported checks
- ensure workflows run on
- Preview differs from production:
- align Node/pnpm/toolchain and environment variables across environments
- Broken
/docslinks:- treat as regression; fix and record in release notes if material
References
- Portfolio App deployment dossier:
docs/60-projects/portfolio-app/deployment.md - Runbooks (this set):
docs/50-operations/runbooks/rbk-portfolio-<deploy/rollback/CI triage> - Docs App hosting ADR:
docs/10-architecture/adr/adr-0003-hosting-vercel-with-preview-deployments.md