How farrasai/signage works
Siaran is a digital-signage CMS: an administrator signs in, manages screens and media, arranges playlists and schedules, then assigns playback to TV browsers. The display player resolves scheduled or default playlists, renders media, and receives remote and emergency updates. Supabase provides persistence, authentication, storage, and realtime messaging. The README documents capabilities such as YouTube, agenda tables, pairing, and kiosk playback; some related page implementations were not sampled, so their detailed wiring is not inferred.
Main entry points: client.ts Browser client · [slug]/page.tsx Display player · schema.sql Supabase database · media/page.tsx Media library
Components 22
Admin console
- Admin sign-in
app/login/page.tsx - Screen overview
app/dashboard/page.tsx - Screen management
app/dashboard/displays/page.tsx - Emergency notices
app/dashboard/emergency/page.tsx - Remote controls
components/RemoteControls.tsx
Content planning
- Media library
app/dashboard/media/page.tsx - Media editor
components/EditMediaModal.tsx - Playlist management
app/dashboard/playlists/page.tsx - Playlist editor
app/dashboard/playlists/[id]/page.tsx - Schedule management
app/dashboard/schedules/page.tsx
Screen playback
- Screen pairing
app/display/page.tsx - Display player
app/display/[slug]/page.tsx - Media renderer
components/SlideStage.tsx - Emergency overlay
components/EmergencyOverlay.tsx
Supabase platform
- Browser client
lib/supabase/client.ts - Playback utilities
lib/utils.ts - Supabase database
supabase/schema.sql - Supabase Auth
- Supabase Storage
- Supabase Realtime
Other components
- Administrator
- TV browser
Connections 42
- Administrator → Admin sign-in: signs in
- Admin sign-in → Browser client: creates client
- Admin sign-in → Supabase Auth: authenticates
- Administrator → Screen overview: monitors screens
- Screen overview → Browser client: loads status
- Screen overview → Supabase Realtime: subscribes to changes
- Administrator → Screen management: manages screens
- Screen management → Browser client: reads and writes
- Screen management → Supabase database: manages screens and pairing codes
- Administrator → Emergency notices: publishes notices
- Emergency notices → Browser client: updates notice
- Emergency notices → Supabase database: writes notice
- Administrator → Media library: manages media
- Media library → Browser client: reads and writes
- Media library → Supabase database: stores media records
- Media library → Supabase Storage: uploads and removes files
- Media library → Media editor: opens editor
- Media editor → Browser client: updates media
- Media editor → Supabase database: saves media details
- Media editor → Supabase Storage: replaces files
- Administrator → Playlist management: organizes playlists
- Playlist management → Browser client: loads playlists
- Playlist management → Playlist editor: opens playlist
- Playlist editor → Browser client: manages playlist items
- Administrator → Schedule management: sets schedules
- Schedule management → Browser client: reads and writes schedules
- Schedule management → Supabase database: stores schedules
- TV browser → Screen pairing: enters pairing code
- Screen pairing → Browser client: redeems code
- Screen pairing → Supabase database: redeems pairing
- TV browser → Display player: opens screen URL
- Display player → Browser client: loads screen data
- Display player → Supabase database: reads schedule and playlist
- Display player → Supabase Realtime: subscribes to updates
- Display player → Playback utilities: resolves active schedule
- Display player → Media renderer: renders current media
- Display player → Emergency overlay: shows active notice
- Display player → Supabase database: updates screen heartbeat
- Administrator → Remote controls: issues playback command
- Remote controls → Browser client: sends command
- Remote controls → Supabase Realtime: dispatches command
- Supabase database → Supabase Realtime: publishes changes