Me
EN

Quran8 : une application coranique organisée par thumun

Quran8 (المصحف المثمن) est une application de lecture et d'écoute du Coran conçue autour du thumun — la division en huitième de hizb imprimée dans le mushaf que la plupart des lecteurs tiennent réellement en main. Presque toutes les applications coraniques s'organisent par sourate ; les lecteurs qui suivent une portion quotidienne pensent en thumuns. Quran8 part de là, et couvre quatre riwayat — Hafs, Warsh, Qaloun et Douri — là où la plupart des applications n'en couvrent qu'une.

Quran8 est né à l'intérieur d'un autre projet. Majalisnoor avait besoin d'un lecteur pour ses élèves, alors j'en ai développé un — PHP, MySQL et JavaScript, le mushaf découpé en thumuns avec la récitation alignée sur la page, et guère plus que cela. Il a fait le travail pour lequel il avait été conçu, et le développer a rendu évident que le problème n'était pas propre à une seule école. Presque toutes les applications coraniques s'organisent par sourate ; un lecteur qui suit une portion quotidienne pense en thumuns, et il n'y avait nulle part où l'envoyer.

Il a donc été refondu plutôt que porté — une API Laravel derrière une application Vue livrée sur le web, iOS et Android depuis un seul code, ce qui est d'une autre nature que la page dont elle est issue. Elle continue d'être enrichie.

Lire la page imprimée

La surface de lecture est la page imprimée elle-même, pas du texte réagencé. Cela ne fonctionne que si l'application sait où se trouve chaque verset sur chaque page et où commence chaque verset dans chaque enregistrement : l'essentiel du travail est donc allé à produire cette donnée. Une chaîne Python lit les images de pages par vision par ordinateur pour tracer un polygone autour de chaque verset, et lit les enregistrements par reconnaissance vocale et analyse des silences pour trouver l'instant de départ de chaque verset. Les deux passes sont ensuite corrigées à la main dans deux éditeurs que j'ai écrits pour cela : un éditeur de polygones par glisser-déposer et un éditeur de frontières sur la forme d'onde.

Ce que cela achète, c'est précisément ce à quoi l'application sert. Le verset récité s'illumine sur la page pendant la lecture audio, et un appui long sur n'importe quel verset amène la récitation directement dessus. Les signets et les résultats de recherche se déplacent de la même façon.

Écouter écran éteint

L'autre moitié de l'application est celle que personne ne regarde. Un lecteur qui suit une portion quotidienne écoute en marchant, en conduisant ou en travaillant, et une application qui ne lit que lorsqu'elle est ouverte devant vous ne survit pas à cela.

  • La lecture continue d'une page à l'autre au lieu de s'arrêter au bout de chacune, pour qu'un thumun se lise comme un thumun.

  • La répétition sur un verset ou sur une plage — ce qui constitue l'essentiel du travail de mémorisation.

  • Une vitesse réglable, parce qu'une récitation suivie pour mémoriser et une récitation suivie pour lire n'ont pas le même tempo.

  • Des commandes sur l'écran de verrouillage et dans les notifications, pour que lecture, pause et saut fonctionnent sans déverrouiller le téléphone.

  • La gestion correcte du focus audio : un appel ou une vidéo dans une autre application met la récitation en pause au lieu de jouer par-dessous, et elle reprend ensuite.

La dernière de ces choses n'est demandée par personne. C'est ce que l'on ajoute après la troisième fois qu'un appel arrive et que la récitation continue imperturbablement.

Recherche

La recherche a été l'autre morceau difficile. L'orthographe coranique diffère d'une riwaya à l'autre, et diffère encore entre le rasm imprimé et la façon dont n'importe qui taperait une phrase de mémoire : une correspondance littérale ne renvoie rien. Le texte stocké et la requête passent par la même chaîne de normalisation avant comparaison — c'est ce qui permet à une phrase à moitié retenue de retrouver son verset.

Comment c'est fait

L'application est en Vue 3, empaquetée pour Android avec Capacitor, dialoguant avec une API Laravel qui sert les pages, les polygones, les minutages et la recherche, avec Firebase derrière les notifications. Un site Laravel distinct sur quran8.app porte la page vitrine et les dons PayPal, ponctuels et mensuels.

Android est en test fermé sur Google Play ; le même code produit la version iOS.

Outils de développement

  • LaravelLaravel
  • TailwindTailwind
  • JavascriptJavascript
  • PythonPython
  • OpenAIOpenAI
  • Vue JSVue JS
  • CapacitorCapacitor
  • FirebaseFirebase
  • PaypalPaypal

Parlons de votre projet

Quelques lignes sur le problème suffisent pour démarrer. Je vous dirai franchement si je suis la bonne personne ou non.

Démarrer un projet