Repository navigation
Deployment
Home · Get started · Design · Architecture · Testing · Deployment · Watch & reflection · Weekly contribution
A push to main automatically deploys the Next.js app through the existing Vercel Git integration. Garmin binaries are built and installed separately; a web deployment does not update a watch automatically.
| Setting | Current configuration |
|---|---|
| Vercel project | andhikanayakaaws-projects / offshift |
| Production URL | https://offshift-nine.vercel.app |
| Root directory | offshift-phone |
| Production branch | main |
| Shared storage | Upstash Redis resource offshift-week, connected to Production |
| Billing choice | Free plan; autoUpgrade=false, prodPack=false
|
| Access |
OFFSHIFT_ACCESS_CODE, stored as a Production secret |
The push of 8b67263 automatically produced a successful production deployment and a successful GitHub validation run. No manual deployment command was needed for that release.
The live deployment passed 17 synthetic integration checks: access protection, a secure HttpOnly browser cookie, Redis storage, an ask read through the private watch route, concurrent duplicate answers, one accepted calendar shift, optional health bands, the team projection and deletion on sharing-off. The test session was cleared to an empty week. Verification record.
cd offshift-phone
npm ci
npm test
npm run typecheck
npm run build
cd ..
node --test offshift-watch/test/*.test.mjs
node --test prototype/offshift.logic.test.jsGitHub Actions runs these checks on main pushes and pull requests. Vercel deploys independently; CI is not a deployment approval gate. Confirm both statuses after a push.
The server recognizes KV_REST_API_URL plus KV_REST_API_TOKEN, or UPSTASH_REDIS_REST_URL plus UPSTASH_REDIS_REST_TOKEN. The connected Vercel integration supplies the KV pair. Without Redis the app falls back to a development file; that fallback is not durable shared storage on Vercel.
Production browser routes require the shared access code. After login, an HttpOnly cookie authorizes the browser. The watch uses the same code in its dedicated watch route. Keep the code and private watch URL out of screenshots, chat reports, source files and GitHub artifacts. Rotating the code requires a new private watch build and a browser login.
Set OFFSHIFT_GARMIN_SDK and OFFSHIFT_GARMIN_KEY to local paths outside the repository, then run from the repository root:
node offshift-watch/scripts/build.mjs \
--access-code-file /private/path/production.envThe environment file must contain OFFSHIFT_ACCESS_CODE=.... The builder defaults to the production origin and fenix847mm. It rejects HTTP release endpoints, copies resources and source to a temporary private directory, embeds the private endpoint there keeps MIR/gen intermediates there, and removes that directory after compilation. Only the program and symbol file are published after a successful compilation. Only the public origin is printed. The binary is ignored and restricted to owner access.
Back up the installed Offshift app before copying the release into the watch's GARMIN/Apps using MTP. Do not modify firmware, activities or other apps. See the native README.
One deployment serves one shared session. A shared code is not separate participant accounts or employer/worker role authorization. The /team response hides private fields, but everyone with the shared code has access to the prototype's other routes. The free storage plan has quotas; automatic paid upgrades are disabled. No worker evaluation or clinical interpretation is established by these technical checks.
Your week. Your call.
- Home
- 01 · Get started
- 02 · Design & research
- 03 · Architecture
- 04 · Testing & TDD
- 05 · Deployment
- 06 · Watch & reflection
- 07 · Weekly contribution
Explore
- Watch preview ↗
- Daily reflection ↗
- Week calendar ↗
- Immersive week ↗
- Source code ↗
- Research notes
- Console concept
DECO2850 · Care studio