Arona
Application de mixage audio et voix, avec traitement des fichiers côté serveur et stockage objet dédié.
En bref
- Stockage objet MinIO découplé de la base applicative
- Pipeline CI complet — lint, typecheck et tests sur le front comme sur le back
- Trois environnements isolés — développement, préproduction, production
Le projet
Arona est une application de mixage audio et voix : on dépose des fichiers, on les assemble, on récupère un rendu. Ce qui semble simple côté interface implique côté serveur une chaîne de traitement complète — validation des formats, transcodage, assemblage, stockage des rendus.
Architecture
| Couche | Choix |
|---|---|
| Frontend | Nuxt 3, TypeScript |
| Backend | Python 3.12, FastAPI, migrations Alembic |
| Base | PostgreSQL 16 |
| Stockage | MinIO (objets audio) |
Les fichiers audio ne transitent jamais par la base. MinIO reçoit les binaires, Postgres garde les métadonnées et les références — cette séparation garde les sauvegardes de base légères et permet de faire grossir le stockage indépendamment.
L'ensemble tourne en conteneurs : db, minio, back, front, back_storage, avec
trois fichiers compose distincts pour le développement, la préproduction et la production.
Qualité
Le projet applique une CI reproductible en local comme sur le serveur : make ci-local
enchaîne lint → typecheck → test, avec Biome et nuxi côté front, Ruff et mypy côté
back. Les trois étapes doivent passer avant tout merge.
Pouvoir rejouer exactement la CI en local avant de pousser fait gagner beaucoup plus de temps que l'inverse — attendre le retour d'un runner pour découvrir une erreur de typage.
Projet suivant
Cabinya