Skip to content

Repository files navigation

Le Coran — avec ton Professeur

Application web (PWA) pour mémoriser et comprendre le Coran, en français — du déchiffrage jusqu'au Hifz complet, sur plusieurs années. L'app joue le rôle d'un professeur de Coran (شيخ), et tu es son élève. Pas de deck, pas de streak, pas de points — des leçons, des récitations, et un Professeur qui se souvient de ce que tu dois réviser.

👉 coran-learning.vercel.app

Le tableau du jour : « Ce que ton Professeur te propose », avec les leçons en cours et leur état Lecture verset par verset pendant l'écoute : calligraphie arabe, translittération et traduction française, verset actif mis en avant

Comment ça marche

Chaque leçon est un chunk naturel du Coran : une sourate entière si elle est courte, sinon un rukūʿ (unité thématique de ~8–12 versets) — soit 556 leçons pour couvrir tout le Coran. Une leçon se vit en trois moments, à ton rythme — elle peut s'étaler sur plusieurs jours :

  • Avec le Professeur (/lesson) — introduction guidée : lecture mot à mot, sens, traduction (Hamidullah), translittération, audio verset par verset.
  • En autonomie (/practice) — pratique libre : écoute, répétition, texte masqué progressivement.
  • Réciter au Professeur (/recite) — tu récites de mémoire en t'enregistrant au micro, tu te réécoutes, puis tu t'évalues verset par verset. Pas de reconnaissance vocale, et c'est un choix : dans la méthode traditionnelle aussi, l'élève récite et écoute son propre retour — c'est toi qui juges. Le verdict final fait avancer la leçon vers la maîtrise.

Début d'une leçon : nom de la sourate, présentation de son contexte, puis chaque verset avec son audio

À côté des leçons :

  • Lecture (/read) — lire n'importe quel passage, avec audio et traduction, sans objectif de mémorisation.
  • Catalogue (/catalogue) — vue d'ensemble des 114 sourates et de ta progression.
  • Statistiques (/stats) — ce qui est appris, en cours, à réviser.

Le catalogue : tout le Coran en 556 leçons, avec recherche et parcours par juzʾ

Révision (murājaʿa)

Le planificateur de révision suit les cycles traditionnels du Hifz avec trois files : sabaq (la leçon récente), sabqi (les leçons des derniers jours) et manzil (le répertoire ancien). C'est la mémoire à long terme du Professeur : c'est lui qui décide quoi réviser aujourd'hui.

Hors ligne

C'est une PWA installable : l'audio écouté est mis en cache, et les actions effectuées hors ligne (progression, notes) sont synchronisées au retour du réseau.

Choix techniques

  • Planificateur de révision à trois files — sabaq / sabqi / manzil modélisent les cycles traditionnels du Hifz ; seule la file manzil est pilotée par la répétition espacée (FSRS). La leçon en cours ne passe jamais par un algorithme : elle suit une machine à états explicite (not_started → introduced → learning ⇄ ready_to_recite → recited → mastered).
  • Synchro hors ligne par outbox — les mutations faites hors ligne (progression, évaluations, notes) sont écrites dans IndexedDB (Dexie) puis rejouées vers le serveur au retour du réseau. Server-first assumé : le serveur reste la source de vérité, pas de local-first intégral ni de CRDT.
  • Audio synchronisé mot à mot — les timings par mot de la récitation de Husary sont ingérés en base, ce qui permet la surbrillance du mot actif pendant l'écoute et la lecture suivie.

Sources et remerciements

  • Texte arabe (Uthmani), découpage en rukūʿ et traduction française de Muhammad Hamidullah : API alquran.cloud
  • Audio : récitation de Cheikh Mahmoud Khalil al-Husary, via everyayah.com
  • Introductions de sourates : Wikipédia FR, avec Quran.com en repli
  • Police coranique : Amiri Quran (licence SIL Open Font License), chargée via next/font — aucun fichier de police n'est distribué dans ce dépôt

Stack technique

Next.js 16 (App Router) · React 19 · TypeScript · Tailwind CSS 4 · shadcn/ui · Auth.js v5 (Google) · Neon Postgres + Drizzle ORM · TanStack Query · Dexie · ts-fsrs · déployé sur Vercel.

Développement

npm install
npm run dev

Prérequis : un fichier .env.local avec DATABASE_URL (Neon Postgres), AUTH_SECRET, AUTH_GOOGLE_ID / AUTH_GOOGLE_SECRET, et ADMIN_EMAILS pour l'accès admin.

La base doit ensuite être créée et remplie :

npm run db:push         # applique le schéma Drizzle
npm run ingest:quran    # texte arabe, traduction, découpage en chunks
npm run ingest:segments # timings audio mot à mot

Les scripts d'ingestion appellent des sources externes (alquran.cloud, everyayah.com) : compter environ 5 minutes pour les 114 sourates, réseau requis. Ils sont idempotents — on peut les relancer sans risque si l'exécution s'interrompt.

Autres commandes utiles :

npm run test       # tests unitaires (vitest)
npm run typecheck  # tsc --noEmit
npm run lint

Licence

Code sous licence MIT. Le texte coranique, les traductions et l'audio appartiennent à leurs sources respectives (voir ci-dessus).

About

Application web (PWA) pour mémoriser et comprendre le Coran en français — leçons, récitation, révision Hifz (sabaq/sabqi/manzil + FSRS)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages