Vitrine
Écran de vote d'une résolution (visuel hero)

02 — Application web + API REST

CopropHub

Les assemblées de copropriété, sans papier.

septembre → octobre 2026 · Certification RNCP 37873, projet individuel

Contexte

Vote en ligne des résolutions d'AG avec calcul légal des majorités, procès-verbal PDF, incidents, charges et notifications.

RôleProjet individuel.

Statut MVP (27 tâches) + V1 terminés et vérifiés ; outillage de production prêt, hébergeur à choisir

Ce que j’ai construit

  • Assemblées générales : création, ouverture du vote, vote par résolution (pour / contre / abstention), modification tant que le vote est ouvert, clôture
  • Calcul des résultats selon la règle de majorité (art. 24, 25, second vote 25-1), électorat figé à l'ouverture
  • Procès-verbal PDF et relevé de charges PDF générés à la volée
  • Incidents : déclaration, suivi de statut (déclaré → en cours → résolu)
  • Charges : par lot, statut payé / à payer / en retard, taux de recouvrement
  • Notifications email (ouverture/clôture d'AG, incidents, charges) sans jamais divulguer votes ni montants
  • Thème personnalisable par utilisateur, contraste toujours conforme WCAG AA (OKLCH)
  • RGPD : anonymisation d'un ancien copropriétaire en conservant ses votes

Défis techniques

  • Intégrité du vote : test de course double vote concurrent, course vote/clôture, électorat figé
  • Sécurité : CSRF, en-têtes durcis (CSP stricte), révocation des sessions au changement de mot de passe, rate limiting partagé entre instances (Redis), rôle PostgreSQL applicatif à droits limités, tests XSS automatisés
  • Architecture en 3 couches physiquement séparées (controllers / services / repositories)
  • Déploiement : Docker Compose de production, Caddy (HTTPS automatique), sauvegarde/restauration, CI de livraison (GHCR + SSH)
93 %
de couverture
322
tests unitaires
184
tests d'intégration
39
scénarios E2E

Qualité et tests

  • 93 % de couverture de tests combinée
  • 322 tests unitaires backend, 184 tests d'intégration sur base réelle, 152 tests de composants, 39 scénarios E2E
  • 10 modèles de données

Stack

React · TypeScript · Vite · Node.js · Express · Prisma · PostgreSQL 16 · Redis · Zod · pdfkit · nodemailer · Docker · Caddy · GitHub Actions · Vitest · Supertest · Playwright · axe-core

Galerie

Méthode

Dossier complet de conception : exigences, Merise (MCD/MLD/MPD), UML (cas d'utilisation, séquences, états), zoning → wireframes → maquette Figma → prototype, ADR, veille technologique, plan de tests, éco-conception.

Liens