0%
Aymen
Retour aux projets
WebLivré2026

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
Aperçu

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 défi

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.

Expérience de lecture
Expérience de lecture
La solution

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.

Fonctionnalités clés

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.

Navigation du catalogue
Navigation du catalogue
Technologies utilisées

Construit avec

Frontend

Next.js

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.

TypeScript

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.

Tailwind CSS

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

React Native

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

Fastify

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

PostgreSQL

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.