A multi-participant video meeting app where every audio/video chunk flows through PostgreSQL's Write-Ahead Log. No media server. No WebRTC. WebSocket + Go + Postgres WAL logical replication — running on a local Kubernetes cluster with CloudNativePG.
The setup script handles everything — kind cluster, CloudNativePG, monitoring, build, and deploy:
cd k8s
chmod +x setup.sh
./setup.shThis runs 10 steps:
| Step | What it does |
|---|---|
| 1 | Create kind cluster (pg-meet, 3 nodes) |
| 2 | Install kube-prometheus-stack (Prometheus + Grafana) |
| 3 | Install CloudNativePG operator |
| 4 | Create namespace + secrets |
| 5 | Deploy PostgreSQL cluster (primary + replica, WAL logical) |
| 6 | Deploy postgres-exporter |
| 7 | Provision CNPG Grafana dashboard |
| 8 | Build + load Docker image into kind |
| 9 | Deploy Go server |
| 10 | Port-forward (app + Grafana) |
Once complete:
- App: http://localhost:8080
- Grafana: http://localhost:3000 (admin / admin)
Open multiple browser tabs to simulate a meeting:
http://localhost:8080?name=Alice&room=meeting-1
http://localhost:8080?name=Bob&room=meeting-1
http://localhost:8080?name=Carol&room=meeting-1
Each tab auto-connects its camera and joins the room. All participants see each other in a responsive grid.
To test late join, open a fourth tab after the others are streaming:
http://localhost:8080?name=Dave&room=meeting-1
Dave gets cached init segments from memory and starts seeing all active streams immediately — zero database queries.
Chrome/Edge recommended. Firefox and Safari have limited MediaRecorder + MSE support.
kind delete cluster --name pg-meetDemo project — use as you like.