Pilote
Pilote est une application personnelle de pilotage de projets. Elle découpe chaque projet en phases, tâches et sous-tâches, et suit son avancement avec des compteurs à seuil d’alerte et des signaux déclaratifs. Un planificateur hebdomadaire assisté par IA propose un plan de semaine, synchronisé avec Google Calendar. J’ai conçu et développé l’ensemble : API NestJS, base PostgreSQL, interface Next.js et une couche IA indépendante du fournisseur.
- Contexte
- Projet personnel
- Rôle
- Conception et développement full-stack, en solo
- Durée
- 3 mois
- Front
- Next.js 16, React 19, React Query, React Hook Form, Zod, Recharts
- Back
- NestJS 11, Prisma 6, PostgreSQL 15, JWT, Swagger
- IA
- Anthropic, OpenAI, Gemini, Groq, DeepSeek, Mistral ou Ollama, au choix
- Intégration
- Google Calendar (OAuth, jetons chiffrés en AES-256-GCM)
- Qualité
- Tests unitaires, e2e et de composants, lint, hook pre-commit

Piloter plusieurs projets
sans s’éparpiller
Pilote découpe des projets en phases, tâches et sous-tâches, avec un suivi de l’avancement. Le besoin tient en trois points : savoir où en est chaque projet, être alerté quand un indicateur dérive, et transformer des objectifs en un plan de semaine réaliste.
Un monorepo typé
de bout en bout
J’ai séparé une API NestJS (14 modules de contrôleurs, documentation Swagger) d’un frontend Next.js organisé par domaine. Prisma et PostgreSQL portent un modèle relationnel de 14 modèles, versionné par 6 migrations. L’authentification repose sur JWT, et Zod valide les données côté client comme côté serveur.
La couche IA est abstraite derrière une interface de fournisseur, avec des implémentations Anthropic, OpenAI, Gemini et un fournisseur compatible OpenAI (Groq, DeepSeek, Mistral, Ollama). Chaque utilisateur choisit son fournisseur et sa clé dans les Réglages. Les jetons Google sont chiffrés en AES-256-GCM avant stockage.


Alertes, IA et cohérence
des données
Les compteurs devaient alerter sur une fenêtre glissante. J’ai isolé la logique dans une fonction pure, qui renvoie « normal », « alerte » ou « absence de donnée » selon le seuil, le comparateur et le nombre de jours, et je l’ai couverte par un test unitaire dédié.
Le modèle de données a évolué avec l’usage, au fil des migrations : tâches sans projet, statut de phase, archivage de projet, réouverture d’une tâche terminée, modification et suppression des entrées de compteurs et de signaux. Une boîte de confirmation et des notifications encadrent les suppressions, qui sont définitives.
Une phase de consolidation a suivi : lint propre côté backend et frontend, puis tests de composants avec vitest et Testing Library.





Une application fonctionnelle,
documentée et testée
L’application couvre le cycle projets, phases, tâches, compteurs et signaux, les suggestions IA (tâches d’une phase, brouillon de projet, analyse des écarts), le planificateur hebdomadaire et un agenda synchronisé avec Google Calendar. Elle est documentée et testée (unitaires, e2e et composants). Limites assumées : pas de corbeille, et un planificateur qui ignore encore les phases.