É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.

Produit
CMS de podcast, administration + site public
Stack
PHP, Apache, fichiers plats (MD / YAML / JSON)
Licence
Open source, sur GitHub
Statut
En production

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.

  1. Importer le MP3
  2. Remplir les métadonnées
  3. Publier
  4. RSS généré automatiquement
  5. 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.

  1. 01

    Tableau de bord

    Vue d’ensemble : statistiques clés, dernier épisode, actions rapides. Répond à « où en suis-je ? »

  2. 02

    Épisodes

    Créer, modifier, programmer. Le cœur de l’outil. Audio + pochette importés sur un seul écran.

  3. 03

    Apparence

    Couleurs, polices, mise en page – le tout avec aperçu en direct. Aucun code à toucher.

  4. 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.

1

Transitions de page fluides

Fondus entre les vues, même sans SPA.

2

Aperçu des polices en temps réel

Le texte d’aperçu change à la volée dans l’administration.

3

Détection automatique de la durée

ffprobe extrait la durée à l’import, aucune saisie manuelle.

4

Horodatages cliquables

Dans les transcriptions, un clic renvoie au moment exact dans le lecteur.

5

Limitation de tentatives visible

En cas de blocage, un compte à rebours s’affiche au lieu d’une erreur générique.

6

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.

Page d’accueil publique de 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.

Tableau de bord de l’administration de Badal

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.

Écran des réglages du podcast dans Badal

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.

Liste des épisodes dans Badal

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.

Écran des statistiques de Badal

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.

Réglages d’apparence de Badal

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.

Écran d’audit de sécurité de Badal

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.

Flux RSS et validateur de Badal

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.

Page « À propos » de Badal

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.

  1. Navigateur
  2. Apache + .htaccess
  3. Routeur PHP
  4. Fichiers plats (MD / YAML / JSON)

Architecture

ChoixBénéfice UX
Des fichiers plats plutôt que MySQLAucune base de données à créer. Sauvegarde = copier un dossier. Migration = déplacer des fichiers.
Zéro dépendance npm/composerPas de « npm install » qui échoue. On envoie, on installe, c’est en ligne.
Des variables CSS plutôt que SassLe thème change en temps réel dans le navigateur. Aucune étape de compilation.
Proxy audio PHPLe comptage des écoutes est transparent. Pas d’analytics JS, pas de bandeau cookies. Uniquement côté serveur.
  1. Lecteur
  2. /audio/ep.mp3
  3. Proxy PHP (comptage + diffusion)
  4. 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.

Logotype
Monogramme / Favicon

08 — Résultats

Léger par conception, en production.

Badal est en production sur robotetdragon.com/badal. Le code source est disponible sur GitHub.

<30 s

Temps d’installation

0

Dépendances

4

Langues

Aucune

Base de données

Badal est open source.

Un CMS de podcast sans base de données, sans abonnement, sans compromis.