Partoches
Application web permettant de centraliser un catalogue de chants avec accords, gérer les auteurs et préparer des listes de chants partageables pour les répétitions musicales.
Contexte & Objectifs
Le projet est né d’un besoin concret : disposer d’un outil centralisé pour gérer les chants utilisés lors de répétitions musicales et éviter la dispersion des partitions sur différentes sources.
Avant Partoches, les chants provenaient de plusieurs sites ou documents avec des formats et des systèmes de notation différents, ce qui compliquait la préparation des répétitions et le partage des partitions entre musiciens.
L’objectif principal était de créer une application permettant de regrouper les chants dans un catalogue unique, de standardiser leur structure et leur notation, et de faciliter la préparation et le partage de listes de chants prêtes à être utilisées en répétition.
Mon rôle
Projet conçu et développé entièrement en autonomie.
J’ai conçu l’architecture de l’application, développé l’interface utilisateur et les API, modélisé la base de données et mis en place les fonctionnalités liées à la gestion des chants, des auteurs et des listes.
J’ai également mis en place l’authentification, la gestion des rôles utilisateurs, l’import de contenus externes et le pipeline de déploiement avec CI/CD.
Fonctionnalités principales
- Catalogue de chants avec recherche avancée (titre, paroles, auteurs, numéro)
- Affichage structuré des paroles et des accords par sections
- Transposition des tonalités et choix de systèmes de notation d’accords
- Import automatique de chants depuis certaines sources externes
- Gestion des auteurs et association auteurs/chants
- Création et gestion de listes de chants personnalisées
- Partage de listes via un lien public avec expiration
- Mode lecture optimisé pour les répétitions
- Authentification et gestion des rôles utilisateurs
- Administration des utilisateurs et des invitations
- Génération de PDF de chants
- Recherche full-text performante
Architecture
- Architecture full-stack Next.js avec interface utilisateur et routes API dans le même projet
- Organisation par domaines fonctionnels : chants, auteurs, listes, authentification, administration
- Séparation claire entre interface, logique métier et accès aux données
- Frontend : Next.js avec React et TypeScript
- Backend : API Routes Next.js
- Base de données : PostgreSQL avec Prisma ORM
- Authentification : NextAuth (credentials + rôles utilisateurs)
- Stockage local : IndexedDB via Dexie pour les listes locales
- Déploiement : GitHub Actions + VPS
Réflexions techniques
Les tonalités majeures et mineures sont traitées séparément afin d’éviter des transpositions incorrectes et garantir une cohérence musicale.
Un système interne normalise les accords afin de permettre la conversion entre différents systèmes de notation et la transposition dynamique tout en conservant une bonne lisibilité pour les musiciens.
L’import de chants depuis des sites externes repose sur des parseurs spécifiques qui convertissent les contenus dans une structure interne standardisée.
La recherche repose sur PostgreSQL avec full-text search et les extensions pg_trgm et unaccent afin de permettre des recherches rapides et tolérantes aux variations d’écriture.
L’application intègre plusieurs mécanismes de sécurité : gestion de rôles utilisateurs, rate-limit par IP, tokens sécurisés pour invitations et réinitialisation de mot de passe.
Ce que ce projet démontre
- Conception d’une application web complète orientée produit
- Modélisation d’un domaine métier spécifique (chants, accords, tonalités)
- Implémentation d’une logique de transposition et de notation musicale
- Conception d’une architecture full-stack avec Next.js
- Gestion d’authentification et de rôles utilisateurs
- Intégration de fonctionnalités avancées (recherche full-text, génération de PDF, import de contenu)
- Mise en place d’un pipeline de déploiement automatisé