WebRTC + HLS fallback, state machine, Socket.IO realtime events, consent logging en creator tools
Fastify 5 β stream lifecycle routes, Lucia Auth middleware
PostgreSQL 16 + Drizzle ORM β streams, consent, viewer events
WebRTC primair (<1s latency) Β· HLS fallback voor viewers (3β5s buffer)
Socket.IO β viewer count, chat, tips, gift events tijdens stream
TeezU gebruikt WebRTC als primair protocol voor minimale latency. Bij browserincompatibiliteit of viewer-only modus schakelt het systeem automatisch over op HLS.
Elke stream doorloopt een formele state machine. Overgangen worden gevalideerd op de Fastify 5 backend β ongeldige overgangen retourneren HTTP 422. Alle Freeze & Panic events worden ook gelogd in de consent-tabel.
Stream aangemaakt, nog niet live. Creator kan instellingen aanpassen.
Stream actief. Viewers kunnen joinen, chatten, tippen.
Video gepauzeerd (Freeze & Reveal). Gelogd in consent_log.
Noodstop. Stream direct offline, moderator alert, consent gelogd.
Stream beΓ«indigd. Recording verwerkt, statistieken opgeslagen.
Alle Freeze & Reveal acties worden onveranderlijk gelogd naar de consent_log tabel in PostgreSQL 16. Dit is een compliance-vereiste.
One-click stream starten en stoppen. Bevestigingsdialoog bij stoppen.
720p / 1080p / 4K β instelbaar vΓ³Γ³r en tijdens stream
Scheduled streams β volgers krijgen automatisch een notificatie
Automatische opname β beschikbaar als VOD na afloop
Beeld bevriezen voor tip-incentive. Consent gelogd. Zone 5 Creator Tools.
Noodstop met bevestigingsmodal. Stream direct offline + moderator alert.
WebRTC <1s join β geen buffering. HLS fallback beschikbaar.
Token tips sturen β verschijnt real-time als stream overlay
Animated gifts met audio β Rose (10t), Diamond (50t), Crown (100t), Rocket (500t)
Socket.IO realtime chat β emoji reactions, pinned berichten
Floating emoji overlay β gebroadcast naar alle viewers via Socket.IO
Betaal tokens om vergrendeld stream-content vrij te spelen (Freeze & Reveal)
Socket.IO verzorgt alle realtime communicatie tijdens een stream. De Fastify 5 server host de Socket.IO instantie via @fastify/socket-io.
stream:viewer_count
Bijgewerkt viewer-aantal elke 5 seconden
stream:chat_message
Nieuw chatbericht van een viewer
stream:tip_received
Tip event β overlay animatie triggeren
stream:gift_sent
Animated gift broadcast naar alle viewers
stream:state_changed
State machine overgang (live β frozen β panic)
stream:join
Viewer joint de stream β WebRTC offer sturen
stream:send_chat
Chatbericht sturen (rate-limited: 3/sec)
stream:react
Emoji reaction sturen
stream:leave
Viewer verlaat de stream β viewer count bijwerken
Alle routes zijn beveiligd via Lucia Auth sessie middleware. Database operaties via Drizzle ORM op PostgreSQL 16.
/streams
creator role
Maak een nieuwe stream aan (state: idle). Geeft stream-ID en WebRTC signaling tokens terug.
/streams/:id/state
creator role
Verander de staat van de stream. Invalide overgangen worden geblokkeerd (HTTP 422). Freeze/Panic wordt gelogd in consent_log.
/streams/:id/viewers
Haal de actieve viewer-lijst en statistieken op voor een stream.