The public starting point for council updates, members, resources, and resident services.

Documentation

AreaStart here
Public product surfaceResident Council website
Content and data flowsHow content reaches the site
Deployment and recoveryOperations and troubleshooting
Visual behavior and accessibilityDesign and QA
Council identity and authorizationRC Console identity and access

The Resident Council home page showing the council introduction and resident-service directory Resident Council public home · July 2026

What residents see

The site brings together House Updates, council members, calendars, the Support Hub, voting, and links to other resident services. Most pages are static and fast to load; small Pages Functions supply dynamic content such as changelog entries, Canva previews, link analytics, and managed datasets.

How content reaches the site

ContentCurrent path
House updates and events from the weekly newsletterEmail Worker → Notion → site and calendar feeds
Events and observations shared in resident WhatsApp groupsPrivacy filter and classification Worker → review surfaces
Council member dataRC Console D1 → public member feed and publish outbox
Resident casework from WhatsApp, email, and contact formsShared casework routing → private Casework database
Changelog entriesGitHub API → Pages Function
Canva imagesCanva preview proxy with a screenshot fallback
Analytics and curated datasetsPages Functions → R2 and the analytics-store service

See Happenings ingest, WhatsApp ingest, and legacy n8n pipelines for the detailed flows.

Technical map

  • Cloudflare Pages serves the public site.
  • Pages Functions under /functions provide the APIs.
  • STATS_BUCKET stores link analytics; CSV_BUCKET stores managed datasets and publish records.
  • Static JSON files provide updates and the published council-member roster.
  • The protected rc-admin/ Worker runs RC Console: people, positions, term handover, public member publishing, casework ownership, and Calendar authorization.

Key routes

RouteAccessPurpose
/analyticsEdge protection expectedAnalytics dashboard
/api/changelogPublicAggregate changelog entries from GitHub
/api/canva-imagePublicFetch a Canva preview
/api/statsEdge protection expectedRead link analytics from R2
/api/csv-uploadEdge protection expectedUpload a managed dataset
/api/csv-listEdge protection expectedList datasets
/api/csv-dataEdge protection expectedFetch a dataset
/api/dataset-typesEdge protection expectedList supported dataset schemas
/api/publishEdge protection expectedPublish to analytics-store
/statsPublicRedirect to /analytics

Deployment boundary

The repository expects edge protection on operator routes. Confirm the production Cloudflare Access policy before relying on those routes as private.

Documentation by topic

TaskGuide
Deploy or troubleshoot the siteOperations and troubleshooting
Check visual consistency or accessibilityDesign and QA
Understand newsletter ingestionHappenings ingest
Understand WhatsApp event ingestionWhatsApp ingest
Review retired member and update workflowsLegacy n8n pipelines
Maintain short links and QR toolsShort.io migration
Maintain Canva previewsCanva preview pipeline
Review the planned changelog enrichmentChangelog enrichment plan
Manage council people, roles, or handoverRC Console identity and access
Restore RC Console accessRC Console break-glass runbook

For the wider system, see the system overview and security model.

3 items under this folder.