What This Platform Is

  • Cloudflare Pages and Workers services for the IHNYC Resident Council
  • Public site, calendar subscriptions, voting, and gallery
  • Deployed independently with distinct runtimes

Sources: ihnyc-rc-landing/wrangler.toml, ihnyc-rc-cal-landing/wrangler.toml, ihnyc-rc-vote/wrangler.jsonc, ihnyc-rc-gallery/wrangler.toml


🌐 Resident-Facing Technology Map

A plain-language view of the tools residents see or touch

flowchart LR
  subgraph Users["πŸ‘₯ Users"]
    U["Residents & Guests"]
    URC["RC Members"]
  end

  subgraph Access["🧭 Access"]
    ENTRY["Website Access"]
    N_ACCESS["Notion Access"]
  end

  NOTION["⭐ Notion (central hub)"]
  SITE["🌐 Public Website"]

  subgraph Site_Sections["🏠 Public Website Sections"]
    S_HOUSE["🏠 House Updates"]
    S_RC["πŸ“’ RC Announcements"]
    S_SUPPORT["πŸ“š Support Hub"]
    S_CALS["πŸ“… Calendars"]
    S_EDIT["πŸ“– Editions"]
    S_MOM["πŸ“Έ Moments"]
    S_PUB["🍺 Pub Initiatives"]
    S_NOTES["πŸ“ Public Meeting Notes"]
    S_VOTE["πŸ—³οΈ Voting (Alpha)"]
    S_ANALYTICS["πŸ“Š Analytics (Alpha)"]
    S_CONTACT["βœ‰οΈ Contact the Council"]
    S_MEET["πŸ‘₯ Meet the Council"]
  end

  subgraph Intake["🧾 Intake & Operations"]
    FORMS["🧩 Other Forms (Google, Tally, Qualtrics, etc.)"]
    FORMDB["πŸ—‚οΈ Universal Form DB (manual setup)"]
    SHORT["πŸ”— Short.io (short links)"]
    VOTE_DB["πŸ—³οΈ Any Voting DB"]
    N8N["βš™οΈ n8n Automations"]
    CAL_SYS["πŸ“… Calendar System (Resend, Turnstile, Mixpanel)"]
  end

  classDef hub fill:#fff7d1,stroke:#4a4a4a,stroke-width:2px
  classDef touch fill:#f5f7ff,stroke:#4a4a4a,stroke-width:1px
  classDef intake fill:#f7fbf2,stroke:#4a4a4a,stroke-width:1px
  classDef access fill:#f1f1f1,stroke:#4a4a4a,stroke-width:1px

  class NOTION hub
  class SITE,S_HOUSE,S_RC,S_SUPPORT,S_CALS,S_EDIT,S_MOM,S_PUB,S_NOTES,S_VOTE,S_ANALYTICS,S_CONTACT,S_MEET touch
  class FORMS,FORMDB,SHORT,VOTE_DB,N8N,CAL_SYS intake
  class ENTRY,N_ACCESS access

  U --> ENTRY
  URC --> ENTRY
  U --> N_ACCESS
  URC --> N_ACCESS

  ENTRY --> SITE
  N_ACCESS --> NOTION
  NOTION --> N8N
  N8N -->|content feeds| SITE

  SITE --> S_HOUSE
  SITE --> S_RC
  SITE --> S_SUPPORT
  SITE --> S_CALS
  SITE --> S_EDIT
  SITE --> S_MOM
  SITE --> S_PUB
  SITE --> S_NOTES
  SITE --> S_VOTE
  SITE --> S_ANALYTICS
  SITE --> S_CONTACT
  SITE --> S_MEET

  FORMS -->|submissions| FORMDB
  FORMDB -->|intake data| NOTION
  SHORT -->|short links| SITE
  VOTE_DB -->|results, status| NOTION
  VOTE_DB -->|results link| S_VOTE
  NOTION -->|events feed| CAL_SYS
  CAL_SYS --> S_CALS

🧩 Service Directory

ServicePurposeTech Stack
ihnyc-rc-landingPublic website with Pages Functions and R2-backed stats/CSV APIsPages + R2
ihnyc-rc-cal-landingCalendar subscriptions with D1 + R2, Resend, Turnstile, MixpanelPages + D1 + R2
ihnyc-rc-voteVoting worker with D1, Durable Object token manager, and scheduled tasksWorker + D1 + DO
ihnyc-rc-galleryGallery worker with R2 + KV and scheduled repair jobsWorker + R2 + KV
pub-scheduler-n8nPub scheduling automation (availability form, assignments, mass email)n8n + Notion + Formbricks + Email

Sources: Service wrangler configs and respective index/routing files


πŸ—ΊοΈ System Context Diagram

System architecture showing all services and external dependencies

flowchart LR
  subgraph Users
    U_RES["USER: Resident"]
    U_ADMIN["USER: Admin"]
  end

  subgraph Services
    S_LANDING["SVC: ihnyc-rc-landing"]
    S_CAL["SVC: ihnyc-rc-cal-landing"]
    S_VOTE["SVC: ihnyc-rc-vote"]
    S_GALLERY["SVC: ihnyc-rc-gallery"]
  end

  subgraph External_Systems
    EXT_NOTION["EXT: Notion"]
    EXT_N8N["EXT: n8n"]
    EXT_RESEND["EXT: Resend"]
    EXT_TURNSTILE["EXT: Cloudflare Turnstile"]
    EXT_MIXPANEL["EXT: Mixpanel"]
    EXT_GITHUB["EXT: GitHub API"]
    EXT_CANVA["EXT: Canva"]
    EXT_SCREENSHOT["EXT: screenshot.website"]
  end

  subgraph Storage
    STORE_R2["STORE: R2"]
    STORE_D1["STORE: D1"]
    STORE_KV["STORE: KV"]
    STORE_ASSETS["STORE: Static Assets"]
  end

  U_RES -->|browse| S_LANDING
  U_RES -->|subscribe| S_CAL
  U_RES -->|vote| S_VOTE
  U_RES -->|view| S_GALLERY
  U_ADMIN -->|admin| S_LANDING
  U_ADMIN -->|admin| S_CAL
  U_ADMIN -->|admin| S_VOTE
  U_ADMIN -->|admin| S_GALLERY

  S_LANDING -->|stats & CSV| STORE_R2
  S_LANDING -->|static files| STORE_ASSETS
  S_CAL -->|subscriptions| STORE_D1
  S_CAL -->|ICS files| STORE_R2
  S_GALLERY -->|media| STORE_R2
  S_GALLERY -->|metadata| STORE_KV
  S_VOTE -->|elections| STORE_D1
  S_VOTE -->|assets| STORE_ASSETS

  S_LANDING -->|changelog| EXT_GITHUB
  S_LANDING -->|previews| EXT_CANVA
  S_LANDING -->|fallback| EXT_SCREENSHOT
  S_CAL -->|magic link| EXT_RESEND
  S_CAL -->|verify| EXT_TURNSTILE
  S_CAL -->|analytics| EXT_MIXPANEL
  S_CAL -->|proxy| EXT_N8N
  S_VOTE -->|emails| EXT_RESEND
  S_VOTE -->|sync| EXT_NOTION
  EXT_N8N -->|write JSON| S_LANDING

Sources: ihnyc-rc-landing/wrangler.toml, ihnyc-rc-landing/functions/api/, ihnyc-rc-landing/N8N_.md, ihnyc-rc-cal-landing/functions/api/, ihnyc-rc-gallery/src/index.ts, ihnyc-rc-vote/src/, ihnyc-rc-vote/wrangler.jsonc


πŸ—ΊοΈ Cross-Service Data Flow

How data flows between services and external systems

flowchart LR
  subgraph Users
    U_RES["USER: Resident"]
    U_ADMIN["USER: Admin"]
    U_CAL["USER: Calendar Client"]
  end

  subgraph Services
    S_LANDING["SVC: ihnyc-rc-landing"]
    S_CAL["SVC: ihnyc-rc-cal-landing"]
    S_VOTE["SVC: ihnyc-rc-vote"]
  end

  subgraph External_Systems
    EXT_NOTION["EXT: Notion"]
    EXT_N8N["EXT: n8n"]
    EXT_RESEND["EXT: Resend"]
    EXT_TURNSTILE["EXT: Cloudflare Turnstile"]
  end

  subgraph Storage
    STORE_D1["STORE: D1"]
    STORE_R2["STORE: R2"]
    STORE_ASSETS["STORE: Static Assets"]
  end

  EXT_NOTION -->|export| EXT_N8N
  EXT_N8N -->|write JSON| S_LANDING

  U_RES -->|read| S_LANDING
  S_LANDING -->|serve| STORE_ASSETS

  U_RES -->|subscribe| S_CAL
  S_CAL -->|verify| EXT_TURNSTILE
  S_CAL -->|write| STORE_D1
  S_CAL -->|email| EXT_RESEND
  U_RES -->|verify| S_CAL
  S_CAL -->|mint token| STORE_D1
  U_CAL -->|fetch ICS| S_CAL
  S_CAL -->|read| STORE_R2

  U_ADMIN -->|create| S_VOTE
  S_VOTE -->|write| STORE_D1
  S_VOTE -->|invite| EXT_RESEND
  U_RES -->|vote| S_VOTE
  S_VOTE -->|ballot| STORE_D1
  S_VOTE -->|sync| EXT_NOTION

Sources: ihnyc-rc-landing/N8N_.md, ihnyc-rc-cal-landing/functions/api/subs/.ts, ihnyc-rc-cal-landing/functions/cal/programs.ics.ts, ihnyc-rc-vote/src/routes/*.ts, ihnyc-rc-vote/src/utils/notion.ts


🧭 How to Navigate This Vault

FolderPurpose
overviewSystem-wide overview and decisions
platformShared patterns (security, naming, API contracts)
servicesPer-service onboarding pages