Sites Web12 min de lecture

LMS pour formation en ligne Afrique : Moodle vs Teachable vs Custom (2026)

Mohamed Bah·Fondateur, Kolonell
16 mai 2026
Partager :
LMS pour formation en ligne Afrique : Moodle vs Teachable vs Custom (2026)

LMS pour formation en ligne Afrique : Moodle vs Teachable vs Custom (2026)

Sites Web

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èreMoodleTeachableCustom
Coût initialHosting €15/mois$39-149/mois8-25M FCFA dev
Coût scale 1000 students€15-50/mois$99 + 0 % feesHébergement only
Coût scale 10K students€100-300/mois$499 + 0 % feesHébergement only
UX apprenantDatéeExcellenteSur-mesure
MobileOKExcellentSur-mesure
VidéoUpload + stockageInclus (CDN)Mux / BunnyCDN
QuizTrès completBasiqueÀ coder
Certifications PDF✓ plugin✓ inclusÀ coder
Paiement Wave/OMPlugin manuelStripe onlyCustom
MultilingueOui (50+ langues)LimitéSur-mesure
APIBonneLimitéeSur-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 => (

setAnswers({...answers, [q.id]: a})} />

))}

);

}

`

Paiement multi-devises

Voir guide multi-devise →.

`tsx

function CourseCheckout({ course, currency }) {

const price = course.prices[currency];

if (currency === 'XOF') {

return ; // Wave / OM

} else if (currency === 'EUR' || currency === 'USD') {

return ;

}

}

`

Cas réel — bootcamp tech Dakar (1500 étudiants/an)

Choix : Custom Next.js + Postgres + Mux.

MétriqueValeur 2026
Investissement initial18M FCFA (5 mois dev)
Hosting mensuel€60 (Hetzner + Mux + Postgres)
Étudiants payants/mois125
Prix moyen formation95K FCFA
CA mensuel11.9M FCFA
Marge brute85 %

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.

Tags :#LMS#Moodle#Teachable#Custom#Formation en Ligne#Afrique
Partager :

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.