Контент по расписанию на сеть экранов: медиатека, плейлисты, гибкое расписание и автономные плееры, которые продолжают играть даже без сети.
EFIR состоит из двух частей, которые общаются по защищённому device-API (регистрация по подтверждению, манифест, heartbeat, раздача медиа с проверкой целостности).
| 📱 Client — плеер | 🖥️ Server — панель |
|---|---|
|
Приложение-плеер на самих устройствах-экранах.
Платформы: Windows · Linux · Android / Android TV
|
Веб-панель управления и API для всей сети экранов.
Стек: FastAPI · Vue 3 · Postgres · MinIO · Redis · Keycloak |
flowchart LR
O([👤 Оператор]):::people
subgraph SRV["🖥️ EFIR Server"]
direction TB
PANEL["Веб-панель · Vue"]
API["FastAPI · device API"]
KC["Keycloak"]
DB[("Postgres")]
S3[("MinIO · медиа")]
PANEL --> API
API --- KC
API --- DB
API --- S3
end
subgraph SCREENS["📱 EFIR Clients"]
direction TB
C1["Экран 1"]
C2["Экран 2"]
C3["Экран N"]
end
O -->|управляет| PANEL
C1 -. "manifest / heartbeat / media" .-> API
C2 -. "manifest / heartbeat / media" .-> API
C3 -. "manifest / heartbeat / media" .-> API
classDef people fill:#fff,stroke:#888,color:#333;
Оператор готовит контент и расписание в панели → сервер собирает персональный манифест для каждого экрана → плееры забирают манифест, кэшируют медиа и играют по расписанию, продолжая работать даже при потере связи.
📐 Подробности архитектуры и планы развития — в README.md и ROADMAP.md каждого репозитория.
Дипломный проект (ВКР) · клиент + сервер