Skip to content

Screens server #1

@fabianabarca

Description

@fabianabarca

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
No labels

Projects

Status

Building

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions