Skip to content

The Public Service

<div align=“center”>

The Public Service

MIT Licence CI TypeScript Cloudflare Workers PRs Welcome

Open-source production toolkit for broadcast workflows

Build reliable, deterministic systems for live television and media production.

Quick Start · Documentation · Contributing

</div>


Features

  • Normalised Data Architecture — Single source of truth with dynamic views
  • Real-time Sync — Bi-directional synchronisation between Google Sheets and Supabase
  • Edge-First — Cloudflare Workers for low-latency validation and conflict handling
  • Touch-Optimised Studio View — React PWA designed for iPad use in production environments
  • API-Ready — REST endpoints for Companion, HyperDeck, vMix, and custom integrations
  • Broadcast-Grade Reliability — Built with deterministic behaviour and clear failure modes

Architecture

┌─────────────────────┐ ┌─────────────────────┐
│ Google Sheets │ │ Studio PWA │
│ (Familiar UI) │ │ (Touch Control) │
└─────────┬───────────┘ └─────────┬───────────┘
│ │
▼ ▼
┌─────────────────────────────────────────────────┐
│ Cloudflare Worker │
│ (Validation · Conflict Handling) │
└─────────────────────┬───────────────────────────┘
┌─────────────────────────────────────────────────┐
│ Supabase │
│ (PostgreSQL · Realtime · Audit Trail) │
└─────────────────────────────────────────────────┘

Quick Start

Option 1: Google Sheets Only

  1. Create a new Google Sheet at sheets.google.com
  2. Open Extensions > Apps Script
  3. Copy the .gs files from this repository
  4. Run System > Bootstrap Database from the custom menu

See QUICKSTART.txt for detailed instructions.

Option 2: Full Stack (Sheets + Supabase + Workers)

Terminal window
git clone https://github.com/FiLORUX/the-public-service.git
cd the-public-service
# Deploy the sync worker
cd worker
npm install
npx wrangler deploy
# Run the studio app locally
cd ../studio-app
npm install
npm run dev

See DEPLOYMENT.md for production deployment.


Documentation

DocumentDescription
QUICKSTART.txtGet up and running in minutes
ARCHITECTURE-2026.mdSystem design and data flow
API.mdREST endpoint reference
DEPLOYMENT.mdProduction deployment guide
FAQ.mdCommon questions and troubleshooting

Built With

ComponentTechnology
Data LayerGoogle Apps Script, Supabase (PostgreSQL)
Edge APICloudflare Workers, TypeScript
Studio AppReact 18, Vite, PWA
IntegrationsBitfocus Companion, BMD HyperDeck, vMix

Contributing

Contributions are welcome. Please read the existing code to understand the conventions, then submit a pull request.

Terminal window
# Clone and set up
git clone https://github.com/FiLORUX/the-public-service.git
cd the-public-service
# For Apps Script development
npm install -g @google/clasp
clasp push
# For Worker development
cd worker && npm run dev
# For Studio App development
cd studio-app && npm run dev

Licence

MIT — use freely, modify freely, contribute back if you can.


Acknowledgements

  • The broadcast engineering community for decades of battle-tested patterns
  • EBU Technical for standards that make reliable systems possible
  • Everyone who believes publicly funded work should remain publicly accessible

<div align=“center”>

Built for broadcast professionals

</div>