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.
| |
|---|
| Type | Plateforme dâentraide locale, multi-quartier, mobile-first |
| Cible | Habitants dâun quartier (rayon ~ 1 km) |
| Volume | ~ 50-200 utilisateurs actifs par quartier |
| Stack frontend | Next.js 16 + PWA installable |
| Stack backend | Hono (Node 24) + Yjs server pour le temps réel |
| Base de données | Postgres + Drizzle |
| Auth | Better Auth (email + magic link + Apple Sign-In) |
| Paiement | Aucun (gratuit, modĂšle communautaire) |
| Real-time | WebSocket + Yjs pour les conversations |
| IA | Claude Haiku pour la pré-modération des signalements |
| Hébergement | Fly.io (multi-région européen pour latence) |
| Sous-axe | Ăpisode |
|---|
| 5.1 HTML | Léa structure : feed des demandes, profil voisin, formulaire de demande. Mobile-first dÚs le début. |
| 5.2 CSS | Grid pour le feed, Flex pour les cartes. Mode sombre par défaut (économie batterie mobile). |
| 5.3 A11y | Plusieurs voisins ùgés ou malvoyants. WCAG 2.2 AA visé. Contrastes ℠4.5:1, focus visibles partout. |
| Sous-axe | Ăpisode |
|---|
| 6.1 JS | Filtres du feed : par type (objet, service, info), par distance, par date. Ătat local complexe. |
| 6.2 Async | Création de demande : photo + titre + description, upload progressif, prévisualisation. |
| 6.3 APIs navigateur | Géolocalisation, Web Notifications (push), Service Worker (offline + sync différée). |
| 6.4 TypeScript | Léa type le domaine : Demande, User, Message, Signalement. Discriminated unions pour les types de demande. |
| Sous-axe | Ăpisode |
|---|
| 7.1 Concepts communs | Le feed temps réel + chat partagé impose un framework moderne. |
| 7.2 React | Composants : Feed, DemandeCard, ChatDrawer, ProfileSheet. |
| 7.3 Alternatives | Léa teste Svelte 5 sur un prototype, séduisant mais reste sur React (écosystÚme PWA + Yjs). |
| 7.4 Next.js | App Router + Server Components pour le feed initial, client pour les updates live. |
| 7.5 Build | PWA : manifeste, icĂŽnes adaptatives, Service Worker via Workbox. Score Lighthouse PWA 100. |
| 7.6 Design system | Tailwind v4 + Radix UI pour les modales, drawers et menus accessibles. |
| Sous-axe | Ăpisode |
|---|
| 8.0 Concepts communs | API REST pour les demandes, WebSocket pour le chat et la présence. |
| 8.1 Node + Hono | API + Yjs server. Premier déploiement multi-région Fly.io. |
| 8.2 Auth + sécu | Magic link + Apple Sign-In. Isolation forte des messages privés (RLS Postgres). |
| 8.3 ModĂ©ration | Endpoint 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 16 | Couverture |
|---|
| 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.