DPM Elevate
Une application web de planification — agenda, tâches, habitudes, objectifs et focus — pensée « vie privée d'abord », avec synchronisation réelle des calendriers Google et Microsoft.
01 Résumé
DPM Elevate réunit agenda, tâches, habitudes, objectifs et focus dans une seule application web, déployée et fonctionnelle. Je l'ai conçue et développée seul, de bout en bout, avec une vraie exigence de sécurité et de vie privée : synchronisation réelle des calendriers Google et Microsoft, chiffrement des jetons, autorisation en défense en profondeur et fonctions Loi 25 en libre-service.
02 Problème
Les outils de productivité éparpillent le calendrier, les tâches et les habitudes dans plusieurs apps. DPM Elevate les réunit, en gardant les données de l'utilisateur sous son contrôle.
03 Mon rôle
Projet solo : conception produit, architecture, développement, sécurité, tests et déploiement — tout par moi. C'est mon terrain pour pousser une architecture propre et une sécurité sérieuse de bout en bout.
04 Contribution principale
- Architecture par feature avec API type-safe de bout en bout (tRPC)
- Sécurité : chiffrement des jetons + autorisation en défense en profondeur (RLS)
- Synchronisation réelle des calendriers Google et Microsoft
- Vraie stratégie de tests (unitaires, RLS, bout-en-bout Playwright)
05 Tests & qualité
▸
Une vraie stratégie de tests, du unitaire au bout-en-bout.
- Unitaires : chiffrement, limitation de débit, chronotype, planificateur IA
- Tests des routeurs tRPC
- Test d'intégration de la Row-Level Security (isolation entre utilisateurs)
- Suite Playwright end-to-end (~30 scénarios : isolation, vie privée, facturation)
06 État & résultats
Les résultats présentés sont techniques (implémenté, testé, déployé). Il n'y a pas encore de métriques d'usage réelles — l'app est mono-utilisateur.
07 Apprentissages
Investir tôt dans l'autorisation (RLS) et le chiffrement paie : ça encadre tout le reste. La migration incrémentale des jetons (préfixe de version pour détecter le déjà-chiffré) a évité un « big-bang » risqué.