Étude de cas · CMS open source
Podcast · Auto-hébergé
Badal.
Un CMS de podcast pensé pour celles et ceux qui veulent garder la main.
Publier un podcast aujourd’hui, c’est choisir son camp : Spotify, Apple, Acast, Ausha… Chaque plateforme enferme les créateurs dans son écosystème, impose ses règles d’affichage, récolte les données des auditeurs et facture un abonnement mensuel pour des fonctions de base.
Pour un podcasteur indépendant qui veut héberger lui-même ses contenus, maîtriser son flux RSS et personnaliser son site, les options sont soit trop lourdes (WordPress + extensions), soit trop limitées (pages statiques sans administration).
Persona
« Je veux publier mes épisodes, voir mes statistiques et avoir un site correct — sans devenir ingénieur devops ni payer 15 €/mois à un hébergeur de podcasts. »AAlex – Podcasteur indépendant · Émission hebdomadaire · 2 000 auditeurs
01 — Recherche & cadrage
Du MP3 à la mise en ligne, le chemin le plus court.
Le point de départ n’est pas un cahier des charges technique – c’est une question : quel est le chemin le plus court entre « j’ai un MP3 » et « mon podcast est en ligne » ? L’analyse des solutions existantes (Anchor, Podbean, WordPress + Seriously Simple Podcasting) a révélé un schéma récurrent : des interfaces encombrées qui noient les 3 actions essentielles — publier un épisode, consulter ses statistiques, personnaliser son site.
- Importer le MP3
- Remplir les métadonnées
- Publier
- RSS généré automatiquement
- En ligne sur toutes les plateformes
Parcours utilisateur — du MP3 à la mise en ligne
Principe directeurChaque écran doit répondre à une seule question. Si l’utilisateur se demande « qu’est-ce que je suis censé faire ici ? », l’écran en fait trop.
02 — Architecture de l’information
Sept entrées, classées par habitude.
La navigation de l’administration a été réduite à 7 entrées (contre 15 à 20 dans un WordPress classique), organisées par fréquence d’usage.
- 01
Tableau de bord
Vue d’ensemble : statistiques clés, dernier épisode, actions rapides. Répond à « où en suis-je ? »
- 02
Épisodes
Créer, modifier, programmer. Le cœur de l’outil. Audio + pochette importés sur un seul écran.
- 03
Apparence
Couleurs, polices, mise en page – le tout avec aperçu en direct. Aucun code à toucher.
- 04
Statistiques
Écoutes par épisode, tendances, export CSV. Pas de métriques de vanité – seulement l’utile.
03 — Décisions de design
Ce qui reste, ce qui part.
Le périmètre est aussi une décision de design. Chaque « non » garde l’outil assez léger pour s’installer en quelques secondes et assez simple pour s’utiliser sans mode d’emploi.
Retenu
Intégré dès le premier jour
- Installation sur un seul écran (pas d’assistant en 5 étapes)
- Thème sombre par défaut (contexte studio)
- Enregistrement automatique AJAX des réglages d’apparence
- Lecteur persistant sur les pages publiques
- Flux RSS généré automatiquement
- Zéro configuration : tout est détecté à l’installation
Écarté
Laissé de côté volontairement
- Pas de base de données (complexité inutile)
- Pas de système d’extensions (dérive du périmètre)
- Pas de multi-utilisateur (v1 = solo)
- Pas de lecteur tiers intégré
- Pas de traçage tiers (vie privée)
- Pas de framework JS (performance brute)
04 — Micro-interactions
L’UX ne s’arrête pas au plan du site.
Les détails qui font la différence.
Transitions de page fluides
Fondus entre les vues, même sans SPA.
Aperçu des polices en temps réel
Le texte d’aperçu change à la volée dans l’administration.
Détection automatique de la durée
ffprobe extrait la durée à l’import, aucune saisie manuelle.
Horodatages cliquables
Dans les transcriptions, un clic renvoie au moment exact dans le lecteur.
Limitation de tentatives visible
En cas de blocage, un compte à rebours s’affiche au lieu d’une erreur générique.
Redirection intelligente vers l’installation
Si aucune configuration n’existe, toute URL redirige vers l’installation.
05 — L’interface
Écran par écran, une question chacun.
De la page d’accueil publique à l’audit de sécurité, la visite des écrans qui composent Badal.

01
Page d’accueil
La page d’accueil pose l’identité du podcast en un coup d’œil : titre, description, liens d’abonnement et plateformes de diffusion.
Le dernier épisode est mis en avant – pochette, titre, durée et bouton de lecture direct.
En dessous, la liste complète des épisodes offre une vue d’ensemble claire – pochette, titre, durée, nombre d’écoutes – avec un bouton de lecture pour lancer n’importe quel épisode sans quitter la page.

02
Tableau de bord
Le tableau de bord donne un instantané de la santé de votre podcast – épisodes publiés, écoutes totales, 7 derniers jours, espace utilisé.
Le dernier épisode est épinglé en haut pour des modifications rapides.
En dessous, la liste complète des épisodes avec le nombre d’écoutes et des boutons de modification directs : vous gardez la main sans fouiller dans les menus.

03
Podcast
L’identité de votre podcast au même endroit – titre, auteur, description, pochette.
Réglez une fois pour toutes la diffusion : catégorie Apple Podcasts, langue du flux, URL de base.
Tout ce qui définit votre émission sur toutes les plateformes, géré depuis un seul écran.

04
Épisodes
Tous vos épisodes en un coup d’œil – titre, extrait de description, date, durée, état du fichier audio.
Réordonnez-les par glisser-déposer, modifiez ou supprimez n’importe quel épisode en un clic. Une liste claire pour gérer votre flux sans vous perdre.

05
Statistiques
Écoutes totales, moyenne quotidienne, pic – filtrés sur 7, 30, 90 jours ou depuis le début.
Un graphique quotidien pour repérer les tendances, un classement des épisodes pour voir ce qui marche, et le détail par épisode avec le taux d’écoute. Tout s’exporte en CSV ou en PDF en un clic.

06
Apparence
Choisissez un thème, ajustez couleurs, typographie, textes, médias et mise en page – tout au même endroit.
Changez l’allure de votre podcast en un clic, ou créez votre propre thème de zéro.

07
Sécurité
Un audit de sécurité en temps réel de votre installation – en-têtes HTTP, permissions des fichiers, sessions actives, journaux d’authentification.
Vous voyez exactement ce qui est protégé et ce qui demande votre attention, sans fouiller dans les fichiers de configuration.

08
RSS
L’URL de votre flux RSS, prête à être soumise à Apple Podcasts, Spotify, Pocket Casts et aux autres.
Un validateur intégré vérifie chaque champ obligatoire et vous donne un score – pour savoir que votre flux est propre avant de le soumettre où que ce soit.

09
À propos
La page « À propos » – l’origine de Badal, sa philosophie et la liste complète de ses fonctionnalités.
Tout ce qui le distingue, au même endroit : gestion des épisodes, flux RSS, statistiques, thèmes, personnalisation, réorganisation par glisser-déposer, transcriptions, SEO, redirection de flux, sécurité, pas de base de données, outils et prise en charge multilingue.
06 — Choix techniques
Des choix techniques au service de l’UX.
Chaque décision technique de Badal découle d’un bénéfice pour l’utilisateur, pas d’une préférence d’ingénieur.
- Navigateur
- Apache + .htaccess
- Routeur PHP
- Fichiers plats (MD / YAML / JSON)
Architecture
| Choix | Bénéfice UX |
|---|---|
| Des fichiers plats plutôt que MySQL | Aucune base de données à créer. Sauvegarde = copier un dossier. Migration = déplacer des fichiers. |
| Zéro dépendance npm/composer | Pas de « npm install » qui échoue. On envoie, on installe, c’est en ligne. |
| Des variables CSS plutôt que Sass | Le thème change en temps réel dans le navigateur. Aucune étape de compilation. |
| Proxy audio PHP | Le comptage des écoutes est transparent. Pas d’analytics JS, pas de bandeau cookies. Uniquement côté serveur. |
- Lecteur
- /audio/ep.mp3
- Proxy PHP (comptage + diffusion)
- stats.json
Proxy audio — comptage transparent des écoutes
07 — Marque & identité
Le nom est une ouverture.
Le logo calligraphique est un trait continu unique – comme une voix qui coule sans se briser. Il existe en deux versions : le logotype complet et le monogramme « b » utilisé comme favicon.
BadalOccitan · [baˈðal]
Le nom Badal vient de l’occitan – « l’ouverture », le geste d’ouvrir grand la bouche pour parler, chanter, ou rester bouche bée devant une histoire.
Issu du latin batare, cousin du catalan badallar.
08 — Résultats
Léger par conception, en production.
Badal est en production sur robotetdragon.com/badal. Le code source est disponible sur GitHub.
Temps d’installation
Dépendances
Langues
Base de données
Badal est open source.
Un CMS de podcast sans base de données, sans abonnement, sans compromis.
