Sahaja Webinar Platform
Self-hosted real-time webinar and event platform
A self-hosted webinar platform for Sahaja Yoga Greece. Organizers schedule events. Attendees register on the public site and join a LiveKit room with a personal link. Hosts and presenters publish camera, microphone, and screen share. Attendees watch. It is intended as a Demio-class replacement for a small weekly program — not a general meeting SaaS, and not claimed as a completed public-production cutover.
The Challenge
The engineering problem
A weekly meditation program needed host, presenter, and attendee workflows, registration, email, and an operable self-hosted runtime. Generic meeting tools do not match that operations model.
Solution
What EWS built
Internet traffic terminates on Traefik with TLS at webinar.sahajayoga.gr. Next.js serves the public and organizer UI and proxies API calls. LiveKit handles WebRTC over secure WebSockets. A Spring Boot API and worker own events, registration, magic links, and Brevo email. PostgreSQL and Redis hold application state. The current host is Hetzner. Recording/Egress, YouTube/RTMP, and MinIO are not part of this deployment.
Product experience
Working software
Selected application views. These are product screens, not conceptual placeholders.
Architecture
How the system is composed
Current validation-host shape. Recording, YouTube broadcast, and object storage exist in source in places but are not running on this host.
Current runtime
Internet
webinar.sahajayoga.gr
Traefik / TLS
Let’s Encrypt on Hetzner
Next.js web application
Public site + organizer UI
Spring Boot API
Events, registration, magic links
LiveKit / WSS
/rtc signalling + WebRTC media
Worker
Scheduled email
WebRTC media
Camera, microphone, screen share
PostgreSQL / Redis
Records and session state
Brevo SMTP
Transactional email
Capabilities
What was implemented
Public landing and registration
Deployed and validated on the current host, including upcoming events and public registration.
Magic-link join
Attendees receive a personal join link. Inbox-click follow-through remains an operations thread, not a vanity metric.
Host, presenter, attendee roles
Hosts and presenters publish. Attendees subscribe. Camera, microphone, and screen share are validated.
Transactional email
Confirmation mail has been delivered to a real Gmail inbox. Reminder cadence is deployed and only partly validated.
Engineering decisions
Choices that matter
LiveKit for the media plane
Real-time media stays on LiveKit so application engineering can focus on events, roles, email, and operations.
Self-hosted Compose on Hetzner
The current story is a Hetzner validation host behind Traefik. A previous GCP UAT VM has been terminated and is not the hosting claim.
Recordings stay out of the current deploy
Egress, replay hosting, and YouTube/RTMP are not running on this host, even where code exists.
Technology
Stack by layer
Evidence
What we can stand behind
Validation host
https://webinar.sahajayoga.gr is the documented Hetzner host. It is not a permanently approved production SKU.
Media and session UAT
Host studio, presenter, attendee subscribe, camera, microphone, and screen share are recorded as deployed and validated. A 50-subscriber stay-up test completed with a quality caution — not a scale claim.
Branded confirmation email was delivered to a real Gmail address. That does not imply every reminder template has completed a natural run.
What is not claimed
Not a completed Demio replacement in public production. Recordings, YouTube/RTMP, and MinIO are not in the current deploy. Organizer admin screenshots were not copied here because a verified Sahaja admin capture was not available in the approved set.
Related capabilities
Related EWS Capabilities
Discuss a similar project
Start from the workflow, the constraints, and the systems that have to stay authoritative.
Discuss a Similar Project