Deployment
Where each app ships — Vercel, Cloudflare Workers, Expo EAS — and how each deploy is triggered.
Most user-facing apps deploy to Vercel; the public portal and the travel scraper run on Cloudflare Workers; the mobile app ships through Expo EAS. A few apps are local-only services.
Targets at a glance
| App | Platform | Production URL |
|---|---|---|
web | Vercel | www.albertonline.org |
cvm | Vercel | cvm.albertonline.org |
it-f-store | Vercel | it-f-store.albertonline.org |
juicy-shop | Vercel | juicy-shop.albertonline.org |
blog | Vercel | blog.albertonline.org |
market-web | Vercel | market-web.albertonline.org |
lila-web | Vercel | lila-web.albertonline.org |
remotion | Vercel (static) | remotion.albertonline.org |
storybook | Storybook deploy CI | storybook.albertonline.org |
portal | Cloudflare Workers | portal.albertonline.org |
travel-scraper | Cloudflare Workers | — |
native | Expo EAS | — (Android / iOS) |
lila-server | local-only | — |
cvm-server | local-only | — |
effect-app | local-only (example) | — |
scrapling-scraper | Python service | — |
teliaplay-e2e | CI E2E only | — |
Vercel apps
web, cvm, it-f-store, juicy-shop, blog, market-web, lila-web, and
remotion are each connected as a Vercel project pointed at their directory in
this monorepo. Pushes to main promote to production; PRs get preview
deployments (see vercel-preview-deploy.yml).
The web app also carries an OpenNext/Cloudflare pnpm -F web deploy script. Production for
apps/web is Vercel (the URL above); the Cloudflare path is an alternate target, not the live
deploy.
Cloudflare Workers
The public portal (apps/portal, TanStack Start) deploys to Cloudflare
Workers via .github/workflows/deploy-portal.yml. The
travel-scraper worker runs on Cloudflare as well.
Native — Expo EAS
pnpm -F native android
pnpm -F native iosStorybook
The component library deploys through
.github/workflows/storybook-deploy.yml on push to main,
serving storybook.albertonline.org.
Database migrations
Schema changes reach the database through Drizzle migrations
(pnpm db:generate → review → pnpm db:migrate); the
db-migrate.yml workflow applies them. Never db:push to
reconcile a prod migration — it drops RLS policies and Supabase system views.
See CI/CD for the workflows behind these deploys.