The technical system behind the public Pub website, in-venue displays, media controls, scheduling, and scoped administration.
Independent product authorization
Pub has its own planning board, repository, operator roster, permissions, Cloudflare Access application, and deployment path. Resident Council systems, House Desk, and Authentik do not grant Pub actions. These docs live on the Affective Technologies IHNYC domain because Pub is a separately stewarded product.
Documentation
| Area | Start here |
|---|---|
| Architecture and data flow | Architecture overview |
| Routes and response contracts | API reference |
| Admin surfaces and permissions | Admin reference |
| Deployment and recovery | Operations guide |
| Room equipment instructions | Pub equipment tutorials |
What the service covers
One Cloudflare Worker supports the public pages, in-venue screens, weekly tender scheduling, the nightly closing-report log, equipment tutorials, scoped admin tools, Q-SYS audio controls, lighting controls, and the system that identifies music playing in the room.
I-House Pub public home · July 2026
The project is resident-led and operated by Affective Technologies LLC in partnership with AVI Foodsystems.
Product surfaces
| Surface | Purpose | Access |
|---|---|---|
| Public website | Serving hours, events, menus, setlists, and public information | Public |
| TV and projector views | In-venue schedule, announcements, media, and live state | Venue displays |
| Admin hub | Scheduling, content, device health, permissions, and audit data | Cloudflare Access |
| Room controls | Q-SYS audio, projector, and lighting integration | Scoped operators and venue network |
| Equipment tutorials | Instructions for using physical Pub equipment | Public |
Administration
Cloudflare Access protects the admin area. The hub at /admin groups work by purpose:
| Area | What an operator can do |
|---|---|
| This week | Create shifts, collect availability, generate assignments, and send the tender schedule |
| Screens and DJ Mode | Pair TVs, check heartbeats, manage the projector queue, moderate patron uploads and visual requests |
| Takeovers | Put a curated slideshow on the bar TVs for an event, with a hard auto-stop |
| Pub content | Update announcements, specials, equipment tutorials, and visual themes |
| Floor operations | Review the nightly closing report, act on a warm fridge, and keep the stock catalog |
| In-venue systems | Check devices, control audio and lighting, set the quiet curfew, and review the audit timeline |
| Access and roles | Add delegated operators and grant only the scheduling, TV, audio, lighting, theme, content, DJ, tutorial, or floor-operations work they need |
| Feedback | Read, triage, and archive patron suggestions |
The admin guide lists every screen and action.
How it fits together
worker.jsroutes requests and renders the public, screen, and admin experiences.- D1 stores scheduling, closing reports and stock, setlist, theme, health, feedback, and audit data.
- R2 stores event media, takeover media, DJ visuals, health records, and mirrored images.
- A Durable Object coordinates TV identity, pairing, transitions, and the authoritative TV state push.
- KV stores the editable equipment tutorials, DJ mode state, and lyrics.
- Cloudflare Images and Stream support visual media.
- Events come from the Calendar service rather than from Notion.
flowchart LR PEOPLE["Patrons and tenders"] --> PUB["Pub Worker"] OPERATORS["Pub operators"] -->|Cloudflare Access| PUB CAL["I-House Calendar"] -->|"event projection"| PUB CHAT["Tenders WhatsApp group"] -->|"nightly closing report"| PUB PUB --> SCREENS["Bar TVs and iPad"] PUB --> DATA[("D1, R2, and KV")] PI["Pub Raspberry Pi"] <--> PUB PI <--> AV["Q-SYS, projector, and lighting"]
The Pub Worker verifies each operator’s Access identity, then reads that person’s Pub permissions. The current catalog contains 88 exact keys across operator support, scheduling, TV, audio, lighting, theme, content, DJ, tutorials, floor operations, and system scopes. A full administrator token remains a root path for automation and recovery.
Documentation by system
| System or task | Start here |
|---|---|
| Deploy, configure, or troubleshoot the Worker | Operations |
| Operate the Pub Raspberry Pi | Pi capture runbook and status reporter |
| Understand where events come from | Calendar event source and the retired Notion setup |
| Review the nightly closing report | Closing reports and the weekly operations report |
| Put a slideshow on the bar TVs for an event | Slideshow takeovers |
| Delegate admin work safely | Admin access and permissions |
| Run the weekly tender schedule | Pub Scheduler and scheduler state model |
| Understand music identification and setlists | Now Playing system, setlist, and content detection |
| Operate TVs and pairing | TV displays and TV health |
| Review the gated live-sports card | Now Showing |
| Operate audio and lighting | Audio control, Q-SYS control, DMX lighting, and lighting console |
| Review the K-array AV system history | K-array AV history (KA34 firmware failure and repair) |
| Understand DJ Mode and patron uploads | Photo Flash and DJ Mode |
| Maintain movies, specials, or feedback | Movie nights, specials, and feedback |
| Look up an exact route or admin control | API reference and admin guide |
Recent system changes
- Pub events now come from the Calendar service projection; the Notion Events reader has been removed.
- The nightly closing report is read as data, with alerting on a warm fridge.
- A weekly operations report tells the operations team how the week went, including tenders who stopped answering.
- Slideshow takeovers can replace bar TV programming for a bounded window.
- Admin permissions split further, so audio, lighting, theme, and floor operations are separately delegatable.
Earlier system notes
- TV health, Photo Flash, and Pi reporting went live — May 25, 2026
- AES67 source detection went live — May 21, 2026
Service links
- Site: pub.ihnyc-rc.org
- Repository: dghauri0/ihnyc-avi-pub-landing
For shared boundaries, see Integrations and Identity and access.