Skip to content

feat(deploy): migrate static site delivery to Cloudflare Workers#13

Merged
bubunyo merged 1 commit into
devcongress:mainfrom
Elvis020:feature/cloudflare-static-assets
Jul 12, 2026
Merged

feat(deploy): migrate static site delivery to Cloudflare Workers#13
bubunyo merged 1 commit into
devcongress:mainfrom
Elvis020:feature/cloudflare-static-assets

Conversation

@Elvis020

@Elvis020 Elvis020 commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator

DevCongress website migration plan

This is a staged migration of the DevCongress website into one Cloudflare-hosted product.

The immediate goal is to run the existing static Astro website on Cloudflare Workers alongside GitHub Pages, without changing what visitors see.

Roadmap

Phase Goal
1. Static hosting Deploy the current Astro site to Cloudflare Workers alongside GitHub Pages.
2. Verify and cut over Compare both deployments, then attach devcongress.org to the Worker. Keep GitHub Pages active during the soak period.
3. Organizer access Add Organizer, then move organizer capabilities into the website gradually.
4. Community features Move talks, speakers, feedback, attendance, checklists, quizzes, and related features one slice at a time.
5. Build forward Add new features directly in the website and retire duplicate legacy surfaces once stable.

This PR — Phase 1: Static hosting

Objective

Deploy the existing static Astro build through Cloudflare Workers Static Assets while keeping GitHub Pages current as the parallel deployment and rollback path.

In scope

  • Add Cloudflare Workers Static Assets for the existing Astro dist/ output.
  • Keep GitHub Pages deployment active during the migration.
  • Build once, then deploy the same output to both GitHub Pages and Cloudflare Workers.
  • Validate pull requests with Wrangler.
  • Run deployments on main, scheduled refreshes, and manual workflow runs.
  • Add pinned Wrangler tooling, pnpm native-build approvals, and local deployment commands.
  • Add Cloudflare setup and cutover guidance.

Out of scope

  • Public UI or content changes.
  • Supabase changes.
  • Organizer authentication or UI.
  • API/community-feature migration.
  • Runtime server routes or database bindings.
  • devcongress.org cutover.

Implementation

Item Value
New static Worker devcongress-website
Existing Worker website — unchanged; appears to be the older Nuxt deployment
GitHub Pages Continues deploying during the migration and soak period
GitHub environment cloudflare-workers-production
Local validation pnpm deploy:dry-run
Local deployment pnpm deploy

The Worker serves static assets only. No Worker server entrypoint, API route, authentication, Supabase integration, or database binding is introduced.

Verification completed

Check Result
Clean CI-mode dependency install Passed
pnpm deploy:dry-run Passed
Workflow YAML Parsed successfully
Home page 200
Meetup index 200
Generated meetup detail page 200
Unknown route 404

Admin decision required

Worker name

Cloudflare already has a Worker named website, which appears to be the older Nuxt deployment.

This PR uses devcongress-website so the new Astro website can be tested without overwriting that Worker.

Please confirm one option @bubunyo:

  1. Keep devcongress-website for the migration Worker.
  2. Rename it to website-static for a simpler temporary name.
  3. Reuse website only when we are ready to intentionally replace or retire the Nuxt Worker.

Admin setup required before merge

Create this GitHub environment:

cloudflare-workers-production
Add these environment secrets:

Secret Where to get it
CLOUDFLARE_ACCOUNT_ID Cloudflare → Workers & Pages → Account Details
CLOUDFLARE_API_TOKEN Cloudflare Profile → API Tokens → Create Token → Edit Cloudflare Workers

Restrict the API token to the DevCongress Cloudflare account and zone.
Do not commit either value to the repository.

@Elvis020

Copy link
Copy Markdown
Collaborator Author

Can you check it out @bubunyo

@Elvis020 Elvis020 force-pushed the feature/cloudflare-static-assets branch 2 times, most recently from 964641b to 10465ea Compare July 10, 2026 12:08
Comment thread .github/workflows/deploy.yml Outdated
Keep GitHub Pages and Cloudflare Workers as independent deployment workflows during the migration. Each workflow owns its triggers, build, concurrency group, permissions, and deploy target, so removing the Cloudflare workflow cannot change GitHub Pages behavior.

Add Cloudflare Workers Static Assets configuration, a pinned Wrangler 4.107.1 deployment action, local deploy scripts, automatic trailing-slash handling, and administrator cutover guidance. Preserve static-only behavior: no runtime server entrypoint, API, authentication, or database binding is introduced. The existing Nuxt website Worker remains untouched until a later deliberate retirement.

Record pnpm approvals for esbuild, sharp, and workerd so clean CI installs can execute Wrangler's trusted native runtime dependency. Verified both workflow YAML files, CI=true pnpm install --frozen-lockfile, pnpm deploy:dry-run, and local Workers Assets smoke tests returning 200 for public and meetup routes and 404 for an unknown route.
@Elvis020 Elvis020 force-pushed the feature/cloudflare-static-assets branch from 10465ea to b11b20f Compare July 10, 2026 15:51
@bubunyo bubunyo merged commit e0cf96e into devcongress:main Jul 12, 2026
4 checks passed
@Elvis020 Elvis020 deleted the feature/cloudflare-static-assets branch July 12, 2026 10:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants