lami1a logo

statuts & projects

Rapport d'estimation — yofeed.liismaiil.org

Rapport d'estimation — yofeed.liismaiil.org

Document préparé le : 2 août 2026

Destinataires : Associés / Investisseurs

Objet : Évaluation technique, architecture applicative et estimation financière du projet


Vue d'ensemble du projet

yofeed.liismaiil.org (dossier /stages) est une plateforme de suivi de progression par stagiaire, développée de juillet 2023 à mars 2026, couvrant :

  • Une authentification dédiée (/signin)
  • Un dashboard hôte/invité de suivi des stagiaires (interns)
  • Un espace de progression par stagiaire (stages/[viewerId]) avec 3 vues chargées en parallèle : invités, sprints, étapes
  • Un module de récompenses (gifts) avec visualisation D3 dédiée
  • Des pages marketing publiques (à propos, mentions légales, confidentialité)

C'est la même famille technique que www.liismaiil.org (Next.js App Router, HeroUI, Redux Toolkit, Firebase, D3, Google Maps), avec une architecture de routes encore plus poussée : une page dynamique par stagiaire compose trois parallel routes simultanément.


Architecture applicative — routes et patterns

Routes constatées dans le code

RouteGroupeRôle
/racinePage d'accueil
/signin(auth)Authentification
/interns(dashbord)Dashboard de suivi des stagiaires
/gifts(dashbord)Module de récompenses (visualisation D3)
/stages(progress)Vue d'ensemble des stages — parallel route @steps
/stages/[viewerId](progress)Fiche détaillée par stagiaire — 3 parallel routes simultanées : @guests, @sprints, @steps
/about, /confidentialite, /mentions-legales, /privacy(marketing)Pages publiques

La route /stages/[viewerId] est le point le plus sophistiqué de l'application : trois zones (invités, sprints, étapes) se chargent indépendamment et simultanément dans le même layout pour un même stagiaire — chaque zone peut avoir son propre état de chargement/erreur sans bloquer les deux autres. C'est un pattern avancé du Next.js App Router, plus complexe à maintenir qu'une simple page avec des useEffect de fetch.

3 endpoints API applicatifs (app/api/route.ts, app/api/cleanup/route.ts, app/api/debug-refresh/route.ts), plus des modules internes (app/api/lib/*) pour l'auth, les types de données et Prisma.

Modules de composants (86 composants)

DossierContenu
components/internsStatistiques hôte/invité
components/giftsModule de récompenses, vue D3 dédiée (GiftsD3ViewWrapper)
components/stage / components/spacePlateaux d'évaluation (glisser-déposer, sélection, suites d'évaluation)
components/insightComposants d'analyse partagés
components/mapsCarte interactive Google Maps
components/authAuthentification (Firebase Auth + JWT)
components/frontNavigation, footer, thème
components/organisation, components/liismaiil, components/presentation, components/search, components/shared, components/sprintComposants transverses

Visualisation de données et expérimentation 3D

  • D3.js est utilisé pour les visualisations custom, notamment GiftsD3ViewWrapper.tsx (module récompenses).
  • Le dossier components/liismaiil contenait une scène 3D expérimentale en Three.js (Scene/Custom, avec @react-three/drei, OrbitControls, géométries personnalisées) — du vrai travail de 3D temps réel a donc été engagé sur ce projet, mais ce composant n'était pas branché à une route active : il faisait partie d'un lot de fichiers désactivés (voir note nettoyage ci-dessous), retiré du dépôt à ta demande.

Nettoyage effectué pendant cet audit : 35 fichiers .txt dans components/ (composants désactivés/dupliqués : anciennes versions des plateaux d'évaluation sprint, la scène 3D expérimentale, des variantes de cartographie, etc.) ne pouvaient de toute façon pas être importés par le build (extension .txt non résolue par Next.js/webpack) — ils ont été supprimés avec ton accord. D'autres fichiers du même type existent hors du périmètre components/ (app/api/lib/mongoose-db.txt, store/slices/productSlice.txt, viewerSlice.txt, snackbarSlice.txt) et n'ont pas été touchés dans le cadre de cet audit.

Paiement Stripe — préparé, non branché

8 fichiers référencent un champ stripe_account_id / stripeCustomerId (types de données, modèle Prisma), mais aucune route /subscription ou tunnel de paiement actif n'a été trouvée dans ce dépôt — contrairement à www.liismaiil.org. L'intégration Stripe semble préparée au niveau du modèle de données (probablement pour du Stripe Connect côté hôtes) sans être branchée côté interface.


Volume et complexité technique

Chiffres mesurés directement sur le codebase

IndicateurValeur
Fichiers source (TypeScript + React)181 fichiers
Lignes de code~24 200 lignes
Pages et routes10 routes adressables + 4 slots de parallel routes + 3 endpoints API
Composants React86 composants (après nettoyage des 35 fichiers .txt morts)
Composants connectés au store (Redux)61 composants
Slices de state management (Redux)5 slices actives (stageSlice, guestPrismaSlice, searchSlice, lessonSlice, coursSlice) — 3 slices supplémentaires désactivées (.txt) non comptées
Fichiers utilisant Firebase/Firestore8 fichiers
Fichiers liés à Stripe (données seulement)8 fichiers — pas de tunnel de paiement actif
Tests automatisés0playwright.config.ts présent mais __tests__/ vide
Dépendances56 packages (39 production + 17 dev)

Stack technique

CoucheTechnologieUsage
FrameworkNext.js 14 (App Router)Route groups + parallel routes (jusqu'à 3 slots simultanés)
InterfaceHeroUI + Tailwind CSS + Framer MotionDesign system + animations
StateRedux ToolkitGestion d'état globale
Base de donnéesFirebase/Firestore + PrismaConfig Prisma présente (prisma.config.ts → SQLite prisma/stage.db) mais schéma prisma/schema.prisma absent du dépôt ; un fichier store/shem.prisma distinct contient un modèle de données non branché à cette config
AuthentificationFirebase Auth + JWT customPage dédiée /signin
Visualisation de donnéesD3.jsModule récompenses (gifts)
3D (expérimental, retiré)Three.js + @react-three/dreiScène 3D non branchée à une route, supprimée pendant cet audit
CartographieGoogle Maps (@vis.gl/react-google-maps)Intégration carte interactive
TestsPlaywright (configuré)Aucun test écrit à ce jour
TypageTypeScript strictQuasi-totalité du codebase en .ts/.tsx

Estimation financière

Méthodologie

Estimation basée sur le volume de code mesuré, la complexité des routes imbriquées (parallel routes par stagiaire) et les standards du marché pour un développeur senior full-stack (React / Next.js / Firebase / Prisma).

Décomposition par module

ModuleHeures
Architecture Next.js App Router (route groups, 3 parallel routes par stagiaire, middleware)50h
Authentification (Firebase Auth + JWT + page signin)55h
Dashboard interns (statistiques hôte/invité)110h
Fiche stagiaire /stages/[viewerId] (guests + sprints + steps en parallèle)160h
Module gifts (récompenses + visualisation D3)90h
Modèle de données Prisma/SQL + synchronisation Firestore55h
Champs de préparation Stripe Connect20h
Intégration cartographie Google Maps35h
Expérimentation 3D (Three.js, non aboutie)15h
Qualité du code (TypeScript, ESLint, nettoyage)30h
Total620 heures

Équivalent : 78 jours de travail (base 8h/jour) soit environ 3,5 mois pour un développeur à temps plein.

Valorisation selon profil et marché

ProfilTarif journalierEstimation totale
Développeur senior — France (freelance)600 €/j47 000 €
Agence web — France800 €/j62 000 €
Développeur senior — Europe (freelance)400 €/j31 000 €
Développeur senior — Maghreb (freelance)250 €/j20 000 €

Comparaison avec le marché

Type de projet comparableFourchette marché
Dashboard de suivi avec authentification10 000 € — 25 000 €
Plateforme avec routes imbriquées complexes (parallel routes)20 000 € — 40 000 €
Module de visualisation de données custom (D3)10 000 € — 20 000 €
yofeed.liismaiil.org (cumul des trois + préparation Stripe Connect)35 000 € — 55 000 €

Résumé exécutif

Ce que représente ce projet

yofeed.liismaiil.org est une plateforme de suivi individualisé de stagiaires avec une architecture de routes avancée :

  1. Une fiche stagiaire à 3 vues parallèles — invités, sprints, étapes chargés simultanément sans se bloquer
  2. Un module de récompenses en D3.js — visualisation custom construite à la main
  3. Une préparation Stripe Connect au niveau du modèle de données, non branchée côté interface
  4. Une expérimentation 3D en Three.js engagée puis mise de côté (composants retirés lors de cet audit)
  5. Une architecture Next.js avancée partagée avec www.liismaiil.org (route groups, parallel routes)

Indicateurs vérifiables statiquement

(Aucun audit Lighthouse live n'a été lancé pour ce rapport — indicateurs vérifiables directement dans le code, sans exécuter l'application.)

CritèreRésultat
TypeScript strict (tsconfig strict: true)🟢 Activé
Tests automatisés🔴 Aucun (__tests__/ vide, Playwright configuré mais inutilisé)
Configuration ESLint🟢 Présente (next lint)
Fichiers morts identifiés et supprimés🟢 35 fichiers .txt retirés de components/ pendant cet audit
Configuration Prisma🟠 Présente mais schéma prisma/schema.prisma absent du dépôt
Durée du projet🔵 Juillet 2023 → Mars 2026

Estimation finale

Entre 35 000 € et 55 000 € selon les standards du marché français, pour une application développée par 2 contributeurs principaux sur 32 mois.


Rapport généré le 2 août 2026 — données extraites directement du codebase (comptages de fichiers, lignes, dépendances, routes) Aucun audit Lighthouse ou build n'a été exécuté pour produire ce rapport — voir section "Indicateurs vérifiables statiquement"