I.The URL surface, at a glance
One canonical apex domain — cloudbase.foundation — fronts everything CBF runs. This document maps each subdomain to the service it points at, the phase that brings it online, and the audience it serves. It is the single source of truth for URL decisions.
II.The constellation
The diagram below groups every URL by the audience it serves and shows what backs it. Color encodes audience group; the connection lines show where service responsibility lies. The apex sits at center.
foundation")):::apex subgraph PUB["Public surfaces"] direction TB WWW["www
(redirects to apex)"]:::pub DON["donate"]:::pub APX2["apex
public site"]:::pub end subgraph INT["Internal / org"] direction TB BOARD["board"]:::int CRM["crm"]:::int LISTS["lists"]:::int end subgraph OSS["Groundcrew / OSS"] direction TB GC["groundcrew"]:::oss TRY["trygroundcrew"]:::oss end subgraph SVC["Service endpoints"] direction TB INTAKE["intake"]:::svc STATUS["status"]:::svc end APEX --- WWW APEX --- DON APEX --- APX2 APEX --- BOARD APEX --- CRM APEX --- LISTS APEX --- GC APEX --- TRY APEX --- INTAKE APEX --- STATUS WWW -.->|CF Workers / Next.js| H1[("Cloudflare Pages")]:::host APX2 -.->|CF Workers / Next.js| H1 DON -.->|custom domain| H2[("Donorbox")]:::host BOARD -.->|Pages CMS| H3[("documents repo")]:::host CRM -.->|Docker| H4[("DO droplet")]:::host LISTS -.->|Docker| H4 INTAKE -.->|Docker| H4 GC -.->|static site| H1 TRY -.->|seeded install| H5[("Supabase + CF Pages")]:::host STATUS -.->|reserved| H6[("future")]:::host classDef apex fill:#0c2540,stroke:#c8a14a,stroke-width:3px,color:#f6f1e7 classDef pub fill:#1f3b5e,stroke:#0c2540,color:#f6f1e7 classDef int fill:#c8a14a,stroke:#9a7826,color:#0c2540 classDef oss fill:#406b3f,stroke:#2d4e2c,color:#f6f1e7 classDef svc fill:#3a4250,stroke:#15171c,color:#f6f1e7 classDef host fill:#fbf7ee,stroke:#6c7585,color:#3a4250,stroke-dasharray:3 2
III.URL map
Each row is a production URL. Dev variants follow the *-dev convention documented in § IV. Phase pills indicate when the URL comes online — "Live" if active today, "P2/P3/P4" if a planned phase brings it up, "Future" if reserved.
| URL | Backed by | Status | What it is |
|---|---|---|---|
|
Public surfaces
What donors, partners, and the broader paragliding community see.
|
|||
| cloudbase.foundation | Cloudflare Workers + Next.js (OpenNext) + Tina CMS | Live | The public website — home, projects, get involved, about, news, contact. |
| www.cloudbase.foundation | Cloudflare DNS (CNAME) | Live | 301 redirect to apex. Single canonical hostname; www is alias only. |
| donate.cloudbase.foundation | Donorbox (custom-domain feature) | Phase 3 | Public donation entry point. Owning this URL means the platform can be swapped later without breaking inbound links. GiveLively URLs redirect here at cutover. |
|
Internal & org
Surfaces used by the board, staff, and partner organizers — not for the general public.
|
|||
| board.cloudbase.foundation | Pages CMS over Cloudbase-Foundation/documents |
Future | Internal docs site: meeting agendas, minutes, bylaws, board roster, reference materials, tech docs (the doc you're reading lives here under /tech). |
| crm.cloudbase.foundation | Twenty CRM in Docker on DO droplet | Phase 2 | Twenty CRM — donor records, donations, projects, project submissions. Single-workspace (multi-workspace mode is disabled), so no per-workspace subdomains. |
| lists.cloudbase.foundation | ListMonk in Docker on DO droplet | Phase 2 | Email list management and broadcasts. Admin UI for staff; transactional sends go via the Twenty Workflow integration. |
| kan.cloudbase.foundation | kan (self-hosted) in Docker — Unraid VM (dev), DO droplet (prod) | Future | Internal kanban board for org-wide work tracking. Running on dev today at kan.cbf-dev (LAN); the prod URL is reserved for the move alongside the CRM. Google + magic-link auth (Better Auth), locked to the thecloudbasefoundation.org Workspace — note the URL host (cloudbase.foundation) and the auth email domain are intentionally independent. |
|
Groundcrew (OSS)
Surfaces for the Groundcrew product — the open-source generalization of the chelan-comps app.
|
|||
| groundcrew.cloudbase.foundation | Cloudflare Pages, static site | Phase 4 | Groundcrew product home: what it is, who uses it, setup docs, contribution guide, link to source on GitHub. |
| trygroundcrew.cloudbase.foundation | Cloudflare Pages + dedicated Supabase project | Phase 4 | Demo install with seeded fixture data. Prospective comp organizers can click through the full applicant + admin flow without seeing real Chelan applicants. Resets nightly. |
|
Service endpoints
URLs that exist for other systems to reach, not for humans to browse to.
|
|||
| intake.cloudbase.foundation | cbf-intake-service in Docker on DO droplet |
Phase 3 | Public HTTPS endpoint Donorbox POSTs webhooks to. Also hosts the staging review queue UI for staff (auth-gated). Not publicly browsable in any meaningful way; signature-verified webhook traffic only. |
| status.cloudbase.foundation | Reserved — not yet provisioned | Future | Uptime / incident page. Likely Cloudflare-hosted or a third-party status page (Atlassian Statuspage, Better Stack). Reserved now so the URL is available when it's needed. |
IV.Conventions
Dev environments use a -dev suffix on the leftmost label
For services with separate dev and prod instances, the dev variant is the prod hostname with -dev appended to its leftmost label. So crm.cloudbase.foundation ↔ crm-dev.cloudbase.foundation; lists ↔ lists-dev; intake ↔ intake-dev. The apex site uses Cloudflare Pages preview deployments instead of a -dev hostname — PR previews land at *.pages.dev.
Twenty workspaces get their own subdomain layer
Multi-workspace mode is disabled (IS_MULTIWORKSPACE_ENABLED=false) in both dev and prod — CBF runs a single workspace, so the CRM uses no per-workspace subdomains. (Partner access is handled by Twenty roles, not separate workspaces.) See CLAUDE.md.
chelancomps.org is kept independent
The production Chelan paragliding comp app lives at chelancomps.org — a separate domain owned by CBF but not part of the cloudbase.foundation subdomain tree. It stays that way: Chelan organizers, applicants, and bookmarks already use that URL, and conflating it with the OSS Groundcrew product would be misleading. The Groundcrew subdomain at cloudbase.foundation represents the generalized OSS product; chelancomps.org is the canonical install for one specific event.
One URL per service; SaaS gets a custom domain where supported
Where a third-party SaaS supports custom domains (Donorbox, eventually a status page provider, possibly ListMonk if managed-hosted), use the CBF subdomain rather than the vendor's default URL. This means the URL is yours regardless of who runs the service behind it — vendor migrations don't break inbound links or bookmarks.
SSL via Let's Encrypt + certbot for self-hosted; managed certs for SaaS
DO-droplet-backed subdomains (crm, lists, intake) use Let's Encrypt via certbot with the nginx plugin, auto-renewed. Cloudflare-fronted subdomains use Cloudflare's automatic SSL. Donorbox manages SSL for donate as part of their custom-domain feature.
V.Email addresses
Distinct concern from subdomains, but worth recording here: outbound mail from cloudbase.foundation requires SPF, DKIM, and DMARC records configured in Cloudflare DNS. These come online during Phase 6 (donor communications) but should be set up earlier if any transactional mail starts flowing from ListMonk or Donorbox using @cloudbase.foundation as the From address.
| Address pattern | Purpose | Phase |
|---|---|---|
donations@ |
Reply-to on Donorbox receipts; landing inbox for donor questions. | Phase 3 |
hello@ |
General contact — the form-submission notification target on the website. | Phase 2 |
news@ |
From address for ListMonk newsletters and announcements. | Phase 2 |
board@ |
Distribution list to board members (handled outside this stack, but worth reserving the address). | Future |
VI.Decisions worth recording
| Decision | Reasoning |
|---|---|
Apex hostname is canonical — www redirects to apex, not the other way around. |
Simpler mental model; matches the convention of most modern sites. |
Single apex (cloudbase.foundation) for the org; no separate .org/.com variants. |
One canonical name. .foundation is on-brand for a foundation. |
trygroundcrew as flat subdomain, not demo.groundcrew. |
Easier to share verbally and in print; fewer dots to keep track of. "Try Groundcrew" reads as an invitation rather than a developer fixture. |
lists rather than email for ListMonk. |
Accurate to what the service is (an email list manager, not an inbox). Keeps the email namespace open if a different email surface ever lands. |
| Donation URL on a CBF subdomain, not a vanity Donorbox URL. | Decouples the inbound URL from the platform choice. If CBF later moves donation processing in-house or to another vendor, donate.cloudbase.foundation stays the same. |
| Groundcrew product separated from the Chelan production install. | Conflating them would make the OSS positioning confusing to prospective adopters and would break the Chelan brand for existing applicants. |
| Status page reserved but not provisioned now. | Reservation costs nothing (no DNS record needed yet). When a customer-facing reliability story matters, the URL is already conceptually allocated. |