-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Project 8 — Screens server
General Objective
Implement the server that consumes data from the Infobús API and manages real-time information sent to information screens installed on buses and at stops.
Specific Objectives
- Screen configuration platform: register/deregister devices, grouping (by route, terminal, zone), environment variables, and per-device overrides.
- Persistent connection with screens via WebSockets/SSE with exponential backoff and heartbeats.
- Persistence and reliable delivery strategy: per-device queues, retries, and backoff.
- Presentation templates (layouts) for contexts: on-board (next stop, ETA, connections) and stop (upcoming departures, alerts, occupancy if available).
- Integration with Infobús API: efficient queries, cache usage, and differential updates.
- Content scheduling by time and location (windows, playlists) and handling of emergencies/alerts.
- Security: device authentication (tokens/keys per device), CORS, message signing, and audit logging.
- Observability: delivery/latency metrics, availability per device, logs, and a basic monitoring panel.
- Unit and integration tests (including simulated devices and screens fixtures).
Technologies
Repository: https://github.com/simovilab/infobus-screens
- Python
- Django
- Django Channels (WebSockets, SSE)
- Redis (pipeline and cache)
- httpx (HTTP client to Infobús API)
- Vue / TypeScript
- VueUse
- Tailwind
- Vite
Deliverables
- Server module with device administration, distribution channels, and templates.
- Admin panel for configuration and monitoring.
- Screen templates (on-board and stop) ready for use and customization.
- Docker container and deployment guide.
Sub-issues
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
Building