Aller au contenu

Développeurs

Architecture technique et guide de contribution

4 couches logicielles

Une architecture en couches claire et modulaire pour faciliter le développement et la maintenance.

Hardware Layer

Layer 4
Raspberry Pi 4B (4GB RAM)
RC522 NFC Reader (SPI)
GPIO Buttons (5x)
Audio Output (USB/Bluetooth/Jack)

System Layer

Layer 3
Raspberry Pi OS Lite (Debian 12)
systemd Services
ALSA Audio Stack
SPI Kernel Modules

Application Layer

Layer 2
FastAPI Backend (port 8000)
Music Player Service
NFC Reader Daemon
WebSocket Server

Client Layer

Layer 1
Vue.js Web UI (embedded)
Flutter Mobile App (iOS/Android)
REST API Client
WebSocket Client

Technologies modernes et éprouvées

Chaque composant a été choisi pour sa fiabilité, sa performance et sa facilité de contribution.

Backend (Raspberry Pi)

1500+ tests • 95% coverage

Python 3.11+
Langage principal du backend
FastAPI
Framework web async haute performance
Pygame
Lecture audio et gestion du son
GPIO/SPI
Communication avec le lecteur NFC
WebSocket (Socket.IO)
Communication temps réel
Voir le code : raspberrypi-firmware

Frontend Web

Interface web embarquée

Vue.js 3
Interface web de configuration
Vite
Build tool ultra-rapide
TailwindCSS
Styling utility-first
Pinia
State management moderne
Voir le code : raspberrypi-firmware/frontend

Application Mobile

iOS & Android • 49% API coverage

Flutter 3.16+
Framework cross-platform
Dart
Langage natif de Flutter
Riverpod
State management réactif
Dio
Client HTTP avec interceptors
Voir le code : flutter_app

API Contracts

v3.1.0 • Spec complète

OpenAPI 3.0
30 REST endpoints documentés
Socket.IO
15 événements temps réel
JSON Schema
Validation des données
Voir le code : contracts

30 REST endpoints + WebSocket

API REST complète avec documentation OpenAPI 3.0 et événements temps réel via Socket.IO.

GET
/api/v1/library
Liste complète de la bibliothèque musicale
POST
/api/v1/playlists
Créer une nouvelle playlist
PUT
/api/v1/nfc/{card_id}
Associer une carte NFC à une playlist
GET
/api/v1/player/status
État actuel du lecteur audio
POST
/api/v1/player/control
Contrôles playback (play, pause, next, etc.)
WS
/ws
WebSocket pour événements temps réel

6 façons de contribuer

Que vous soyez développeur backend, designer UI, ou passionné de documentation, il y a une place pour vous dans le projet.

Core Backend

Python, FastAPI, audio playback, NFC handling

Intermédiaire
PythonAsyncIOHardware I/O

Mobile App

Flutter development, UI/UX improvements

Facile à Intermédiaire
FlutterDartMaterial Design

Web Frontend

Vue.js interface, responsive design

Facile
Vue.jsTypeScriptTailwindCSS

3D Design

Boîtiers imprimables, accessoires

Créatif
CADFusion 360Impression 3D

Documentation

Guides, tutoriels, traductions

Facile
MarkdownRédaction technique

Testing & QA

Tests unitaires, intégration, E2E

Intermédiaire
PytestJestCI/CD

Prêt à contribuer ?

Consultez notre guide de contribution et notre code de conduite sur GitHub.

Nos priorités pour l'année

Fonctionnalités planifiées et en développement. Les priorités évoluent selon les contributions.

Q1 2025

En cours
  • YouTube Music integration
  • Multi-room synchronization
  • Parental controls (time limits)
  • Voice feedback (TTS)

Q2 2025

Planifié
  • Podcast support
  • Sleep timer & alarms
  • Equalizer & audio effects
  • Backup & restore system

Q3 2025

Planifié
  • Spotify integration (premium)
  • Smart home integration (HA)
  • OTA updates système
  • Battery management UI

Q4 2025

Idées
  • E-ink display option
  • Audiobook player mode
  • Learning mode (educational)
  • Cloud sync (optional)

Configuration développement

Guide rapide pour démarrer le développement en local.

1. Backend (Raspberry Pi)

git clone https://github.com/The-Open-Music-Box/raspberrypi-firmware
cd raspberrypi-firmware
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python3 main.py

2. Mobile App (Flutter)

git clone https://github.com/The-Open-Music-Box/flutter_app
cd flutter_app
flutter pub get
flutter run

3. Tests

# Backend tests
pytest tests/ -v --cov=app
# Mobile tests
flutter test