Rawy
Plateforme de lecture numérique arabe — ebooks, livres audio et podcasts, avec abonnements, tableau de bord éditeur et droits d'accès par type de contenu.
- Mon rôle
- Ingénieur Full Stack
- Période
- févr. 2026 — août 2026
- Statut
- Livré

Rawy est une plateforme d'édition numérique arabe couvrant quatre types de contenus : livres numériques, livres audio, podcasts et cours. L'accès se vend par plans d'abonnement différenciés par type de contenu, les éditeurs configurent leurs propres extraits gratuits, et un calcul automatisé des revenus alimente les reversements aux éditeurs — le tout piloté depuis des tableaux de bord éditeur et administrateur dédiés.
Les médias sont stockés sur Cloudflare R2 et servis par requêtes HTTP range : le lecteur et le lecteur audio démarrent à la plage d'octets demandée au lieu de télécharger des fichiers entiers. Les images téléversées sont converties en dérivés WebP avec sharp, les contrats PDF en arabe sont produits en superposant du texte pdf-lib en police Tajawal sur un fond rasterisé, et une application React Native porte sur mobile le lecteur EPUB, un lecteur de Coran et un lecteur audio avec notifications média, complétés par le push FCM.
Le problème à résoudre
Les vrais problèmes étaient la diffusion des médias et la monétisation multi-formats. Le téléchargement de fichiers entiers bloquait le lecteur et le lecteur audio jusqu'à l'arrivée complète d'un livre ou d'un épisode. Quatre types de contenus ne pouvaient pas partager une règle d'accès unique — un plan peut inclure les podcasts et exclure les cours — et chaque support exigeait son propre mécanisme d'extrait. Enfin, les contrats éditeurs devaient être livrés en PDF arabe correctement composé, ce que la génération PDF standard gère mal.

Comment cela a été construit
La diffusion a été reconstruite autour du streaming HTTP range depuis Cloudflare R2 : le lecteur et le lecteur audio récupèrent des plages d'octets à la demande, ce qui a corrigé les temps de chargement sans toucher à la couche de stockage. Les droits d'accès vivent dans un jsonb features porté par chaque plan d'abonnement et sont appliqués par type de contenu ; les plans se composent donc librement entre livres, livres audio, podcasts et cours. Les extraits suivent la même logique par support — un pourcentage du livre fixé par l'éditeur, un clip audio généré par ffmpeg pour un podcast.
Côté éditeur, un tableau de bord de quinze écrans sur un design system navy/gold s'appuie sur un calcul automatisé des revenus qui alimente les reversements, avec un tableau de bord administrateur distinct pour l'exploitation de la plateforme. Les contrats sont générés en superposant du texte pdf-lib en Tajawal sur un fond rasterisé — contournant le rendu défaillant de l'arabe dans l'outillage PDF — et le pipeline sharp produit des dérivés WebP pour chaque image téléversée.
Ce que ça fait
Streaming par plages HTTP
Des requêtes par plages d'octets sur Cloudflare R2 remplacent le téléchargement de fichiers entiers et corrigent les temps d'ouverture du lecteur et du lecteur audio sur les gros ouvrages et épisodes.
Droits par type de contenu
Chaque plan d'abonnement stocke ses droits dans un jsonb features, appliqués séparément aux livres, livres audio, podcasts et cours.
Extraits gratuits configurables
Chaque support a son mécanisme : un pourcentage du livre choisi par l'éditeur, un clip audio généré par ffmpeg pour les podcasts.
Revenus et reversements automatisés
Les revenus sont calculés automatiquement et alimentent les reversements aux éditeurs, exposés dans un tableau de bord éditeur de quinze écrans navy/gold, doublé d'un tableau de bord administrateur.
Application mobile React Native
Lecteur EPUB avec mode immersif, lecteur de Coran et lecteur audio avec notifications média, complétés par le push FCM.
Contrats PDF en arabe
Générés en superposant du texte pdf-lib en police Tajawal sur un fond rasterisé, pour un rendu correct de l'écriture arabe.

De plus près

Construit avec
Frontend
Le rendu côté serveur porte le catalogue public et les deux tableaux de bord dans un même framework : les pages de contenu arrivent déjà rendues au lieu d'hydrater une coquille vide.
Un modèle typé unique des plans, des droits et des contenus circule entre l'API, le web et le mobile — essentiel quand un jsonb features décide de ce qu'un utilisateur peut ouvrir.
Les classes utilitaires maintiennent la cohérence du design system navy/gold sur les quinze écrans éditeur et le tableau de bord administrateur, sans feuille de style parallèle par surface.
Mobile
Une seule base de code réunit le lecteur EPUB, le lecteur de Coran et le lecteur audio avec notifications média et push FCM sur les deux plateformes mobiles.
Backend
Un serveur Node à faible surcoût convient à une API dont le chemin chaud est le service de requêtes média par plages d'octets et de petites réponses JSON.
Données
Abonnements, revenus et reversements exigent l'intégrité relationnelle, tandis que la carte features de chaque plan loge naturellement dans une colonne jsonb de la même base.