SANS ABONNEMENTCoût d'usage :0 € / mois · Logiciel libre sans engagement, sans coût caché
CODE OUVERTTransparence totale :Code source public sur GitHub : auditable par n'importe qui, aucune boîte noire
MAC & MAC MINIRégie studio :Régie sous macOS : les sorties vidéo et le démarrage automatique dépendent du modèle et des réglages
APPLE SILICONPaquet macOS :Version Apple Silicon : vérifiez les prérequis et testez vos médias sur votre Mac
MATÉRIEL RECONDITIONNÉMini PC :Une piste pour réutiliser du matériel : vérifiez la configuration, l’état et la compatibilité avant achat
GUIDE MATÉRIELChoisir son équipement :La sélection est en cours de révision : caractéristiques, compatibilité et disponibilité à confirmer avant achat
PC DÉJÀ POSSÉDÉZéro rachat :Essayez votre ordinateur existant ; les sorties vidéo et le mode capot fermé dépendent du matériel
ACCÉLÉRATION GRAPHIQUEDécodage fluide :Le décodage matériel dépend du système, du navigateur, du codec et du processeur graphique
100% HORS-LIGNERésilience fibre :Lecture locale sans Internet ; les sorties réseau nécessitent une connexion locale
BORNE TACTILELibre accès :Kiosque tactile adhérents avec décompte des créneaux à la demande
MULTI-ÉCRANSDouble diffusion :Diffusion simultanée : grand écran cours en salle + téléviseurs plateau
RADIO PLATEAU 24/7Ambiance sonore :Flux musical continu avec fondu sonore et annonces programmées
COURS SUR MESURECatalogue ouvert :100% Libre : diffusez vos vidéos (Cycling, HIIT, Yoga, Pilates, Renfo)
MULTI-OSCompatibilité :Windows 10/11, macOS, Linux, tablettes Android et étude iPadOS
ANDROID NATIFApplication dédiée :Disponible sur tablette tactile pour piloter le studio du bout des doigts
DÉPÔTS LINUXMises à jour natives :Paquets signés GPG : APT (Debian 13+/Ubuntu 24.04+), DNF (Fedora/RHEL 10+) et Pacman (Arch) sur packages.bobine.fit
TÉLÉCOMMANDE SIMPLEContrôle en salle :Au choix : télécommande sans fil 2.4 GHz ou smartphone via QR code
CONFIDENTIALITÉProtection RGPD :100% Local : zéro pistage, zéro caméra, vos données restent dans votre club
REPRISE SUR COUPURESécurité électrique :Reprise prévue après redémarrage : vérifiez le démarrage automatique sur votre appareil
SAUVEGARDE EN 1 CLICExport universel :Sauvegardez toute votre programmation et vos cours en une archive ZIP
ÉCO-RESPONSABLEFaible consommation :Consommation et bruit dépendent du matériel et de la charge : mesurez votre configuration
Architecture & Référence API

Documentation Développeurs & Architecture

Cette documentation constitue la référence technique pour les développeurs et intégrateurs du système Bobine : architecture système, endpoints de l'API REST locale, protocole d'événements WebSockets temps réel, superviseurs systemd et guide de contribution AGPL-3.0.

100% Local & Respect de la vie privée
L'ensemble des APIs et flux WebSockets s'exécute exclusivement sur le réseau local (LAN / Wi-Fi) du mini PC. Aucun média, clé d'authentification ou donnée télémétrique n'est transmis à des serveurs tiers.

Stack Technique Détaillée

CoucheTechnologieRôle & Responsabilité
Backend APIPython 3.11+, FastAPI, UvicornAPI REST asynchrone ultra-rapide et gestion des connexions WebSockets
PersistanceSQLite + SQLAlchemy 2.0Métadonnées des vidéos, planning hebdomadaire, playlists et paramètres
Moteur de LectureMPV + VA-API (Intel iHD & AMD mesa-va-drivers)Décodage matériel vidéo zero-copy (1080p60 et 4K) piloté via socket IPC Unix
Interface FrontendNext.js 16 (App Router), React 19, TSApplication web universelle et réactive (Admin, Kiosque, Télécommande, Radio)
Routage AudioALSARoutage de la sortie audio multi-canaux et gestion du volume

Développement Local & Console Interactive d'API

Prérequis : Node.js ≥ 20, Python ≥ 3.11.

Démarrage du serveur Backend avec rechargement à chaud (Hot Reload)

Lance FastAPI sur le port 8000 avec documentation Swagger interactive disponible sur http://localhost:8000/docs.

bash — environnement dev & console api bobine
fanta@wyse:~$cd backend && .venv/bin/uvicorn app.main:app --reload --port 8000
INFO: Will watch for changes in ['/home/fanta/Bobine/backend']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [19450] using WatchFiles
INFO: FastAPI app initialized: routes registered (/api/playback, /api/settings, /api/audio, /api/kiosk)
Documentation interactive OpenAPI disponible sur http://127.0.0.1:8000/docs

Référence de l'API REST Locale

Le démon Bobine expose une API REST complète et typée sur http://bobine.local/api (ou http://127.0.0.1:8000/api) :

GET/api/health

Point de contrôle de santé machine interrogé en continu par le chien de garde systemd.

bash
// Réponse JSON (200 OK)
{
  "status": "healthy",
  "database": "ok",
  "kiosk_active": true,
  "uptime_seconds": 86420
}
GET/api/status

Retourne l'état de diffusion en temps réel, le cours en cours, le timecode et le volume.

bash
// Réponse JSON (200 OK)
{
  "state": "playing",
  "current_workout": {
    "id": "w_982a7f",
    "title": "RPM Sprint 45",
    "category": "Spinning",
    "duration_seconds": 2700
  },
  "timecode": 1420.5,
  "volume": 80,
  "next_scheduled_class": {
    "title": "Yoga Vinyasa",
    "starts_in_seconds": 840
  }
}
POST/api/playout/play

Déclenche la lecture immédiate d'une vidéo par son identifiant unique.

bash
// Corps de requête
{ "workout_id": "w_982a7f", "target_display": "hdmi_wired" }

// Réponse JSON (200 OK)
{ "success": true, "message": "Lecture démarrée" }
POST/api/playout/volume

Ajuste le volume sonore général de la salle (valeur de 0 à 100).

bash
// Corps de requête
{ "level": 85 }

// Réponse JSON (200 OK)
{ "success": true, "current_volume": 85 }
POST/api/backup/export

Génère une archive ZIP complète de la vidéothèque, du planning et des réglages pour sauvegarde ou migration.

Protocole d'Événements WebSockets

WS/ws/events

Les interfaces clientes se connectent à ws://bobine.local/ws/events pour recevoir les mises à jour en direct :

bash
// Message JSON diffusé à tous les clients connectés :
{
  "event": "PLAYBACK_STATE_CHANGED",
  "payload": {
    "state": "playing",
    "workout_id": "w_982a7f",
    "timecode": 45.2,
    "volume": 80
  }
}

Architecture des Services Systemd

Bobine est orchestré par 3 unités systemd indépendantes :

  • bobine-backend.service — Application FastAPI Python et démon SQLite.
  • bobine-kiosk.service — Session graphique X11 allégée affichant Chromium en plein écran sur la TV.
  • bobine-watchdog.service — Superviseur de résilience interrogeant /api/health toutes les 10s avec relance automatique.

Communauté, Contact & Contribution

Bobine est publié sous licence AGPL-3.0. Les contributions de code, rapports de bugs et retours d'expérience matériel sont les bienvenus.

Distribution via Tor (.onion)

En soutien à la communauté du logiciel libre et au projet Tor, je distribue aussi Bobine via deux services onion (v3), sans journal de visite et avec une disponibilité au mieux :

  • Site : http://bobinedaoki42tt33rxacmtaab2gxvxb2orqgcyhvowv3aggxhruvrid.onion/
  • Dépôt APT : tor+http://rzvwjat5pidtxtwzcsvew7yc5ugfjvzz432ecpn3s5mlch4cs7vvmqad.onion/ (même clé de signature que packages.bobine.fit/debian, vérifiée par apt ; installer d'abord apt-transport-tor)

Le miroir est un export statique de ce site, sans aucune route serveur ; la boutique matériel et l'assistant Baamix n'y sont volontairement pas proposés. Pour en savoir plus sur Tor : torproject.org et son code source sur GitHub.