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 updatesHouse Desk’s public notice feed → site Updates page
Council member dataRC Console D1 → public member feed and publish outbox
Resident casework from 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 Email and Happenings ingest and legacy n8n pipelines for the detailed flows. The weekly newsletter and resident WhatsApp groups are handled by House Desk, a separately stewarded product; see its integrations.

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, and casework ownership.

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
Find how WhatsApp group messages are handledHouse Desk integrations
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.