Greenpill - VR learning platform
Server-side and system architecture for a VR education platform where teachers control and monitor student sessions in real time.
- Client
- Greenpill Technologies, via Starlio.tech
- My role
- Back-end and system architecture
- Period
- Apr - Sep 2025
Project Overview
A VR learning platform is a real-time system pretending to be an education product: the interesting problem is not the headset, it is that a teacher has to see and influence what a student is doing, live, with no perceptible delay, across a classroom of them at once. I designed and built the server side of that - session control, signalling, the data layer underneath, and the containerised delivery that lets the whole thing be stood up reliably.
Measured results
- Live session control
WebRTC over Janus
Session control and signalling over WebSockets, letting a teacher watch and steer student VR sessions as they happen rather than reviewing them afterwards.
- Delivery
All services containerised
The whole platform runs under Docker, so a VR classroom can be stood up reproducibly rather than assembled by hand.
Challenges
- Letting a teacher observe and control live VR sessions across a classroom without perceptible delay.
- Carrying real-time media and control signalling reliably between headsets and the platform.
- Designing a data layer that keeps up with real-time session state rather than lagging behind it.
- Making the platform reproducible to deploy, rather than a hand-assembled set of services.
Solutions
- Designed and built the entire server-side and system architecture for the platform.
- Implemented real-time session control and signalling over WebSockets with the Janus WebRTC media server.
- Built the data layer in Prisma and MySQL, shaped around live session state.
- Containerised all services with Docker, so environments are reproducible and deployable.
Key Features
- Real-Time Session Control - Teachers observe and steer student VR sessions as they happen.
- WebRTC Media Pipeline - Janus media server carrying live streams between headsets and the platform.
- WebSocket Signalling - Low-latency control channel underpinning session management.
- Containerised Delivery - Every service running under Docker for reproducible deployment.
Need something like this?
Tell me what you are building and where it is stuck. I will tell you plainly whether it is work I should be doing.