Real-Time Systems · Events · Cloud OperationsValidation host · development frozen

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.

Next.js 14Spring Boot 3.2LiveKitPostgreSQL 16Hetzner

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.

Public webinar experience — current branded homepage
Public webinar experience — live application UI
Event registration

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

Frontend
Next.js 14
Backend
Spring Boot 3.2Java 17
Realtime
LiveKitWebRTCSecure WebSockets
Data
PostgreSQL 16Redis 7
Infrastructure
Docker ComposeTraefikLet’s EncryptHetzner
Communications
Brevo SMTP

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.

Email

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