Version: 1.0.0 Date: 2026-03-01 Prepared for: Kerja Cerdas Status: Initial Draft
This document outlines the System Requirements for purple-siaran, a real-time online TV broadcasting platform developed for Kerja Cerdas. The platform enables users to manage, schedule, and broadcast live content using YouTube iframe embeds, complete with a full-screen timeline display, an admin panel with rotation controls, analytics, and automated notifications.
This SRD serves as the foundation for design, development, and deployment decisions throughout the project lifecycle. The system is intended to be fully functional and accessible online β not a demo or simulation β delivering a live, real broadcasting experience.
purple-siaran is a web-based TV broadcasting management system that allows administrators to schedule and stream YouTube-based content as a continuous live channel. Viewers access a full-screen timeline schedule, while admins manage playlists, embed YouTube videos/ads/iframes, preview content, rotate the schedule display, and monitor analytics in real time.
The system consists of:
The platform targets Indonesian users (timezone: WIB / UTC+7, locale: id-ID).
| Persona | Description |
|---|---|
| Super Admin | Full system access. Manages all admins, system configuration, and global settings. |
| Admin | Day-to-day operator. Manages schedule, uploads YouTube links, monitors analytics, receives notifications. |
| Viewer | Public audience. Watches the live broadcast on the full-screen viewer page. No login required. |
The color palette for purple-siaran is inspired by broadcast media, digital screens, and nighttime TV aesthetics β bold, premium, and modern.
| Role | Color | Hex |
|---|---|---|
| Primary Brand | Deep Purple | #6A0DAD |
| Secondary Accent | Electric Violet | #9B30FF |
| Background (Dark) | Midnight Black | #0D0D0D |
| Surface / Card | Dark Charcoal | #1A1A2E |
| Text Primary | Soft White | #F0F0F0 |
| Text Secondary | Cool Grey | #A0A0B0 |
| Accent Highlight | Neon Cyan | #00E5FF |
| Success | Bright Green | #00C853 |
| Warning | Amber | #FFB300 |
| Danger / Error | Vivid Red | #FF1744 |
Typography:
Inter or Space Grotesk β bold, clean, techyInter β readable at all sizesJetBrains Mono or Fira CodeDesign Language: Dark mode first. Glassy card surfaces with subtle purple glow. Neon accents for live indicators. Inspired by modern broadcast dashboards and streaming platforms.
Imagine opening purple-siaran and being greeted not by a flat webpage β but by a cinematic broadcast control room experience that feels alive.
π Home / Viewer Page β Full-Screen Live Broadcast Experience:
The viewer page is a full-bleed, edge-to-edge broadcast screen. The YouTube iframe occupies 100% of the viewport β no scrollbars, no chrome, just the broadcast. Overlaid at the bottom is a glowing neon ticker tape β a horizontal schedule ribbon that slides in from the right, showing upcoming programs in real time. The ticker uses JetBrains Mono font with a pulsing LIVE badge in vivid red that breathes (CSS pulse animation) to signal real broadcast status.
When a new program begins, the screen performs a channel-change transition: a brief horizontal static glitch effect (CRT scanline flash, ~300ms) before the new YouTube iframe fades in. It feels exactly like changing the channel on a real TV.
The schedule timeline at the bottom auto-rotates every 8 seconds β smoothly sliding left to reveal future programs β mimicking the look of a real broadcast network's on-screen guide.
π₯οΈ Admin Panel β The Control Room Aesthetic:
The admin dashboard looks and feels like a TV broadcast control room. Dark charcoal panels with glowing purple borders. The schedule timeline is presented as a horizontal swimlane timeline (like a DAW/video editor timeline) β each program slot is a draggable "clip" that snaps to time slots. Clips glow neon cyan when active/live, soft purple when scheduled, and grey when inactive.
Hovering over a clip reveals a floating preview card β a mini YouTube thumbnail with program name, duration, and quick-action buttons (βΆ Preview, β Edit, β Skip Live). The preview card animates in with a smooth 3D flip from the clip.
The top of the admin panel features a "NOW ON AIR" monitor widget β a small glowing screen showing what's currently broadcasting, with a red β LIVE dot and elapsed time counter ticking in real time.
Notifications appear as broadcast-style alert banners that slide in from the top-right β styled like an urgent news chyron: yellow background, black bold text, with a countdown timer.
Analytics pages use waveform-style bar charts β bars that animate upward like audio equalizer levels when the page loads, reinforcing the broadcast/studio theme.
Every micro-interaction is deliberate: button clicks produce a subtle "click" of a broadcast switcher, transitions use cut/fade-to-black effects familiar from TV production, and the entire experience immerses the admin in the fantasy of running a real television station.
| ID | Requirement | Detail |
|---|---|---|
| NFR-01 | Performance | Full-screen viewer page must load within 2 seconds on standard broadband |
| NFR-02 | Availability | System uptime target: 99.5% monthly |
| NFR-03 | Real-time | Schedule transitions and live status updates must reflect within 1 second |
| NFR-04 | Scalability | Must support at least 500 concurrent viewers without degradation |
| NFR-05 | Security | Admin panel protected by JWT-based authentication; HTTPS enforced |
| NFR-06 | Responsiveness | Admin panel must be fully usable on desktop (1080p+); viewer page must support TV display (1080p/4K) |
| NFR-07 | Timezone | All times stored in UTC, displayed in WIB (UTC+7) |
| NFR-08 | Browser Support | Chrome, Firefox, Edge (latest 2 versions); viewer page optimized for Chrome on TV/Chromecast |
| NFR-09 | Accessibility | Admin panel meets WCAG 2.1 AA contrast standards |
| NFR-10 | Localization | UI defaults to Bahasa Indonesia (id-ID); English toggle available |
| Layer | Technology |
|---|---|
| Web App (Viewer + Admin) | React (with Vite) |
| Styling | Tailwind CSS + custom CSS animations |
| State Management | Zustand or React Context |
| Real-time Updates | WebSocket (via FastAPI) |
| YouTube Integration | YouTube IFrame API |
| Layer | Technology |
|---|---|
| API Framework | FastAPI (Python) |
| Authentication | JWT (via python-jose) |
| Scheduler Engine | APScheduler (Python) |
| Notification Service | FastAPI Background Tasks + WebSocket push |
| Real-time Events | WebSocket (native FastAPI) |
| Layer | Technology |
|---|---|
| Primary RDBMS | MySQL (MariaDB compatible) |
| Migrations | Alembic |
| Analytics Store | MongoDB (time-series analytics data) |
| Layer | Technology |
|---|---|
| Local Development | Docker + docker-compose |
| Server Orchestration | Kubernetes (production deployment) |
| Static Assets / CDN | Nginx (within Docker/K8s) |
Note on Firebase: Firebase was considered but the preferred stack uses FastAPI + MySQL for full control over data, with MongoDB for analytics β giving Kerja Cerdas complete ownership and flexibility without vendor lock-in.
| Term | Definition |
|---|---|
| Siaran | Bahasa Indonesia for "broadcast" or "transmission" |
| SRD | System Requirements Document |
| Admin Panel | The backend management interface for schedule and content control |
| YouTube IFrame | The embedded YouTube player using the official YouTube IFrame API |
| Timeline Schedule | A visual, time-ordered list or grid showing what airs and when |
| Rotate (Schedule) | The auto-scrolling or manual reordering of schedule entries on the display |
| WIB | Waktu Indonesia Barat β Western Indonesian Time (UTC+7) |
| Live Badge | A visual indicator (e.g., red pulsing dot) showing a program is currently airing |
| Slot | A single scheduled time block assigned to a video or program |
| Chyron | A text overlay or banner (borrowed from broadcast TV terminology) used for notifications |
| APScheduler | Advanced Python Scheduler β a Python library for scheduling background tasks |
| Alembic | A database migration tool for SQLAlchemy/Python projects |
| JWT | JSON Web Token β used for secure admin authentication |
| WebSocket | A protocol for real-time, bidirectional communication between client and server |
| K8s | Abbreviation for Kubernetes, a container orchestration platform |
Document prepared by the purple-siaran SRD Generator for Kerja Cerdas | Version 1.0.0 | 2026-03-01

No comments yet. Be the first!