Le marché de la formation en ligne en Afrique francophone explose : +35 % par an depuis 2023. Bootcamps tech, cours métiers, formations professionnelles, certifications. Mais le choix du LMS détermine 80 % de l'expérience apprenant et 60 % de la rentabilité.
TL;DR
- Moodle : open-source, mature, gratuit, mais UX années 2010.
- Teachable / Thinkific : SaaS prêt à l'emploi, parfait pour démarrer, fees 5-15 %.
- Custom (Next.js) : effort 3-6 mois, ROI scaling, pas de fees.
Comparatif détaillé
| Critère | Moodle | Teachable | Custom |
|---|---|---|---|
| Coût initial | Hosting €15/mois | $39-149/mois | 8-25M FCFA dev |
| Coût scale 1000 students | €15-50/mois | $99 + 0 % fees | Hébergement only |
| Coût scale 10K students | €100-300/mois | $499 + 0 % fees | Hébergement only |
| UX apprenant | Datée | Excellente | Sur-mesure |
| Mobile | OK | Excellent | Sur-mesure |
| Vidéo | Upload + stockage | Inclus (CDN) | Mux / BunnyCDN |
| Quiz | Très complet | Basique | À coder |
| Certifications PDF | ✓ plugin | ✓ inclus | À coder |
| Paiement Wave/OM | Plugin manuel | Stripe only | Custom |
| Multilingue | Oui (50+ langues) | Limité | Sur-mesure |
| API | Bonne | Limitée | Sur-mesure |
Quand choisir Moodle
Cas :
- Université / établissement éducation
- Budget limité
- Besoin fonctionnel large (forums, devoirs, quiz complexes)
- Équipe technique disponible
Stack :
- Hetzner CX21 (€8/mois)
- Postgres ou MariaDB
- Caddy + Let's Encrypt
- Plugin Wave/OM custom
`bash
# Setup Moodle Docker
docker run -d --name moodle \
-p 80:80 \
-e MOODLE_DATABASE_TYPE=pgsql \
-e MOODLE_DATABASE_HOST=db \
-e MOODLE_DATABASE_NAME=moodle \
-e MOODLE_DATABASE_USER=moodle \
-e MOODLE_DATABASE_PASSWORD=secret \
-v moodle_data:/bitnami/moodle \
bitnami/moodle:latest
`
Quand choisir Teachable / Thinkific
Cas :
- Coach / formateur solo
- 1-10 cours
- Besoin de lancer en 1-2 semaines
- Pas de budget dev
Pricing Teachable 2026 :
- Basic : $39/mois + 5 % transaction
- Pro : $119/mois + 0 % transaction
- Business : $499/mois + 0 % + features avancées
Avantages :
- Setup en 2-3 jours
- UI moderne par défaut
- Email automation inclus
- Affiliés natifs
Inconvénients pour Afrique :
- Stripe-only paiement (pas de Wave / OM natif)
- $ pricing rebute marché local
- Pas de multilingue natif fort
Solution : Teachable pour cours premium (clients EU/US), site custom pour clients XOF.
Quand choisir Custom (Next.js + Postgres)
Cas :
- 100+ étudiants/an objectif court terme
- Marketplace formateurs (multi-formateurs)
- Intégrations spécifiques (CRM, ERP existant)
- Marque forte propre
Architecture Custom
`prisma
model Course {
id String @id @default(cuid())
slug String @unique
title String
description String
thumbnail String
category String
level String // BEGINNER / INTERMEDIATE / ADVANCED
language String
duration Int // minutes total
priceXof Int
priceEur Int?
priceUsd Int?
modules Module[]
enrollments Enrollment[]
instructorId String
status String // DRAFT / PUBLISHED / ARCHIVED
publishedAt DateTime?
}
model Module {
id String @id @default(cuid())
courseId String
course Course @relation(fields: [courseId], references: [id])
title String
order Int
lessons Lesson[]
}
model Lesson {
id String @id @default(cuid())
moduleId String
module Module @relation(fields: [moduleId], references: [id])
title String
type String // VIDEO / TEXT / QUIZ / ASSIGNMENT / LIVE
videoUrl String? // Mux ou BunnyCDN URL
transcript String? // pour SEO + accessibilité
durationSec Int?
content String? // markdown
order Int
isFree Boolean // preview
}
model Enrollment {
id String @id @default(cuid())
studentId String
courseId String
course Course @relation(fields: [courseId], references: [id])
enrolledAt DateTime @default(now())
completedAt DateTime?
progress Json // {moduleId: {lessonId: completedAt}}
certificateUrl String?
}
model QuizAttempt {
Besoin d'un site web professionnel ?
Kolonell crée des sites web qui attirent des clients, optimisés pour le marché sénégalais. Devis gratuit en 2 minutes.
id String @id @default(cuid())
studentId String
lessonId String
answers Json
score Int // 0-100
passedAt DateTime?
attemptNum Int
}
`
Streaming vidéo
Mux ou BunnyCDN pour l'hébergement vidéo HLS streaming :
`tsx
// Lecteur vidéo avec progress tracking
import { MuxPlayer } from '@mux/mux-player-react';
export function LessonPlayer({ lesson, enrollment }) {
return (
streamType="on-demand"
playbackId={lesson.muxPlaybackId}
metadata={{
video_title: lesson.title,
viewer_user_id: enrollment.studentId,
}}
onTimeUpdate={(e) => {
// Save progress every 10 sec
if (Math.floor(e.target.currentTime) % 10 === 0) {
saveProgress(enrollment.id, lesson.id, e.target.currentTime);
}
}}
onEnded={() => markLessonComplete(enrollment.id, lesson.id)}
/>
);
}
`
Quiz et certifications
`tsx
// Quiz à choix multiples
export function Quiz({ lesson, onSubmit }) {
const [answers, setAnswers] = useState({});
return (
e.preventDefault();
const result = await submitQuiz({ lessonId: lesson.id, answers });
if (result.score >= 70) {
// Pass
if (result.isFinal) {
// Generate certificate PDF
const cert = await generateCertificate(enrollmentId);
window.open(cert.url);
}
}
}}>
{lesson.questions.map(q => (
))}
);
}
`
Paiement multi-devises
Voir guide multi-devise →.
`tsx
function CourseCheckout({ course, currency }) {
const price = course.prices[currency];
if (currency === 'XOF') {
return
} else if (currency === 'EUR' || currency === 'USD') {
return
}
}
`
Cas réel — bootcamp tech Dakar (1500 étudiants/an)
Choix : Custom Next.js + Postgres + Mux.
| Métrique | Valeur 2026 |
|---|---|
| Investissement initial | 18M FCFA (5 mois dev) |
| Hosting mensuel | €60 (Hetzner + Mux + Postgres) |
| Étudiants payants/mois | 125 |
| Prix moyen formation | 95K FCFA |
| CA mensuel | 11.9M FCFA |
| Marge brute | 85 % |
VS scenario Teachable :
- Hosting Pro : $1428/an
- Fees Stripe 2.9 % × 11.9M = 345K FCFA/mois
- Total fees Teachable + Stripe : ~$50K/an
- Pas de Wave / OM natif = 35 % conversion perdue → -4M FCFA/mois
Custom paie son investissement en 8 mois.
FAQ
Q : Migrer de Teachable vers Custom ?
R : Difficile. Export contenu OK mais étudiants/progress = casse-tête. Démarrer custom = mieux si volume > 500/an envisagé.
Q : Vidéos auto-hébergées vs Mux ?
R : Mux = $1-3/utilisateur actif. À volume élevé (1000+ users), self-host BunnyCDN moins cher (~$50/mois fixe).
Q : Multilingue formation FR + EN ?
R : Si même contenu : sous-titres synchronisés (Whisper auto + revue). Si contenu réellement différent : 2 cours séparés.
Conclusion
LMS choisi = stratégie business. Solo formateur démarrant : Teachable. Université / institution : Moodle. Bootcamp / scale-up : Custom. Investir au bon niveau au bon moment évite re-migration coûteuse 18 mois plus tard.
Mohamed Bah
Fondateur, Kolonell
Passionné par le digital et l'entrepreneuriat en Afrique, Mohamed accompagne les entreprises sénégalaises dans leur transformation digitale depuis 2020. Fondateur de Kolonell, il croit que chaque PME mérite une présence en ligne professionnelle et accessible.
