Esc
↑↓ Naviguer ↔ Ouvrir Esc Fermer
Aller au contenu

đŸ€ LĂ©a · CoupDeMain

LĂ©a, 22 ans, Ă©tudiante en informatique. Le canal Telegram bordĂ©lique de son quartier (Bagnolet, banlieue est de Paris) est plein de demandes : « qui prĂȘte un escabeau ? », « besoin d’aide pour dĂ©mĂ©nager samedi », « cherche garde de chat 3 jours ». C’est prĂ©cieux mais ingĂ©rable — les messages se perdent, pas de modĂ©ration, pas de profil.

LĂ©a propose Ă  30 voisins de migrer vers une vraie plateforme. C’est son projet de fin de licence + son potentiel premier produit indie.

TypePlateforme d’entraide locale, multi-quartier, mobile-first
CibleHabitants d’un quartier (rayon ~ 1 km)
Volume~ 50-200 utilisateurs actifs par quartier
Stack frontendNext.js 16 + PWA installable
Stack backendHono (Node 24) + Yjs server pour le temps réel
Base de donnéesPostgres + Drizzle
AuthBetter Auth (email + magic link + Apple Sign-In)
PaiementAucun (gratuit, modĂšle communautaire)
Real-timeWebSocket + Yjs pour les conversations
IAClaude Haiku pour la pré-modération des signalements
HébergementFly.io (multi-région européen pour latence)
Sous-axeÉpisode
5.1 HTMLLéa structure : feed des demandes, profil voisin, formulaire de demande. Mobile-first dÚs le début.
5.2 CSSGrid pour le feed, Flex pour les cartes. Mode sombre par défaut (économie batterie mobile).
5.3 A11yPlusieurs voisins ĂągĂ©s ou malvoyants. WCAG 2.2 AA visĂ©. Contrastes ≄ 4.5:1, focus visibles partout.
Sous-axeÉpisode
6.1 JSFiltres du feed : par type (objet, service, info), par distance, par date. État local complexe.
6.2 AsyncCréation de demande : photo + titre + description, upload progressif, prévisualisation.
6.3 APIs navigateurGéolocalisation, Web Notifications (push), Service Worker (offline + sync différée).
6.4 TypeScriptLéa type le domaine : Demande, User, Message, Signalement. Discriminated unions pour les types de demande.
Sous-axeÉpisode
7.1 Concepts communsLe feed temps réel + chat partagé impose un framework moderne.
7.2 ReactComposants : Feed, DemandeCard, ChatDrawer, ProfileSheet.
7.3 AlternativesLéa teste Svelte 5 sur un prototype, séduisant mais reste sur React (écosystÚme PWA + Yjs).
7.4 Next.jsApp Router + Server Components pour le feed initial, client pour les updates live.
7.5 BuildPWA : manifeste, icĂŽnes adaptatives, Service Worker via Workbox. Score Lighthouse PWA 100.
7.6 Design systemTailwind v4 + Radix UI pour les modales, drawers et menus accessibles.
Sous-axeÉpisode
8.0 Concepts communsAPI REST pour les demandes, WebSocket pour le chat et la présence.
8.1 Node + HonoAPI + Yjs server. Premier déploiement multi-région Fly.io.
8.2 Auth + sécuMagic link + Apple Sign-In. Isolation forte des messages privés (RLS Postgres).
8.3 ModĂ©rationEndpoint signalement → Claude Haiku qui prĂ©-classe (spam / harcĂšlement / OK) → file de modĂ©ration humaine.

C’est le parcours le plus complet sur l’axe 16 :

Sous-axe 16Couverture
16.1 Mobile & cross-platform✅ PWA installable, push notifications
16.2 Temps rĂ©el & collaboratif✅ WebSocket, Yjs pour le chat collaboratif
16.3 3D, jeu, crĂ©atif❌ pas pertinent
16.4 IA appliquĂ©e✅ Claude Haiku pour modĂ©ration
16.5 Edge & WebAssembly⚠ multi-rĂ©gion Fly mais pas Cloudflare Workers
16.6 Web3❌ pas pertinent
  • Axe 12 sĂ©cu : un voisin tente de rĂ©cupĂ©rer la liste des emails via une faille IDOR. LĂ©a dĂ©couvre l’autorisation par ressource.
  • Axe 12 RGPD : messages privĂ©s entre voisins → registre des traitements + DPO bĂ©nĂ©vole.
  • Axe 13 perf : feed scroll infini sur mobile bas-de-gamme. LĂ©a virtualise la liste.
  • Axe 13 a11y : un voisin malentendant veut ĂȘtre notifiĂ© visuellement plutĂŽt qu’au son. Customisation des notifs.
  • Axe 14 DevOps : sticky sessions Fly + Redis pub/sub pour le fan-out des messages.
  • Axe 16.4 IA : faux positif sur la modĂ©ration (Claude classe une demande de garde d’enfant comme suspecte). LĂ©a ajoute une boucle humaine.
  • Tu es motivĂ© par le social, la communautĂ©, l’inclusion.
  • Tu veux toucher au temps rĂ©el (chat, prĂ©sence) et au mobile PWA.
  • Tu t’intĂ©resses Ă  l’IA appliquĂ©e (modĂ©ration automatisĂ©e).
  • Tu veux un parcours qui couvre tout sans bascule, axe 1 Ă  axe 16.

DerniĂšre mise Ă  jour :