- Added sections for future features including TFS/Azure DevOps integration, task management, and modular architecture. - Detailed a migration plan for restructuring the project directory to align with Next.js 13+ best practices. - Included specific tasks for improving integration interfaces and enhancing the user experience.
23 KiB
23 KiB
TowerControl v2.0 - Gestionnaire de tâches moderne
✅ Phase 1: Nettoyage et architecture (TERMINÉ)
1.1 Configuration projet Next.js
- Initialiser Next.js avec TypeScript
- Configurer ESLint, Prettier
- Setup structure de dossiers selon les règles du workspace
- Configurer base de données (SQLite local)
- Setup Prisma ORM
1.2 Architecture backend standalone
- Créer
services/database.ts- Pool de connexion DB - Créer
services/tasks.ts- Service CRUD pour les tâches - Créer
lib/types.ts- Types partagés (Task, Tag, etc.) - Nettoyer l'ancien code de synchronisation
1.3 API moderne et propre
app/api/tasks/route.ts- API CRUD complète (GET, POST, PATCH, DELETE)- Supprimer les routes de synchronisation obsolètes
- Configuration moderne dans
lib/config.ts
Architecture finale : App standalone avec backend propre et API REST moderne
🎯 Phase 2: Interface utilisateur moderne (EN COURS)
2.1 Système de design et composants UI
- Créer les composants UI de base (Button, Input, Card, Modal, Badge)
- Implémenter le système de design tech dark (couleurs, typographie, spacing)
- Setup Tailwind CSS avec classes utilitaires personnalisées
- Créer une palette de couleurs tech/cyberpunk
2.2 Composants Kanban existants (à améliorer)
components/kanban/Board.tsx- Tableau Kanban principalcomponents/kanban/Column.tsx- Colonnes du Kanbancomponents/kanban/TaskCard.tsx- Cartes de tâchescomponents/ui/Header.tsx- Header avec statistiques- Refactoriser les composants pour utiliser le nouveau système UI
2.3 Gestion des tâches (CRUD)
- Formulaire de création de tâche (Modal + Form)
- Création rapide inline dans les colonnes (QuickAddTask)
- Formulaire d'édition de tâche (Modal + Form avec pré-remplissage)
- Édition inline du titre des tâches (clic sur titre → input)
- Suppression de tâche (icône discrète + API call)
- Changement de statut par drag & drop (@dnd-kit)
- Validation des formulaires et gestion d'erreurs
2.4 Gestion des tags
- Créer/éditer des tags avec sélecteur de couleur
- Autocomplete pour les tags existants
- Suppression de tags (avec vérification des dépendances)
- Affichage des tags avec couleurs personnalisées
- Service tags avec CRUD complet (Prisma)
- API routes /api/tags avec validation
- Client HTTP et hook useTags
- Composants UI (TagInput, TagDisplay, TagForm)
- Intégration dans les formulaires (TagInput avec autocomplete)
- Intégration dans les TaskCards (TagDisplay avec couleurs)
- Contexte global pour partager les tags
- Page de gestion des tags (/tags) avec interface complète
- Navigation dans le Header (Kanban ↔ Tags)
- Filtrage par tags (intégration dans Kanban)
- Interface de filtrage complète (recherche, priorités, tags)
- Logique de filtrage temps réel dans le contexte
- Intégration des filtres dans KanbanBoard
2.5 Clients HTTP et hooks
clients/tasks-client.ts- Client pour les tâches (CRUD complet)clients/tags-client.ts- Client pour les tagsclients/base/http-client.ts- Client HTTP de basehooks/useTasks.ts- Hook pour la gestion des tâches (CRUD complet)hooks/useTags.ts- Hook pour la gestion des tags- Drag & drop avec @dnd-kit (intégré directement dans Board.tsx)
- Gestion des erreurs et loading states
- Architecture SSR + hydratation client optimisée
2.6 Fonctionnalités Kanban avancées
- Drag & drop entre colonnes (@dnd-kit avec React 19)
- Drag & drop optimiste (mise à jour immédiate + rollback si erreur)
- Filtrage par statut/priorité/assigné
- Recherche en temps réel dans les tâches
- Interface de filtrage complète (KanbanFilters.tsx)
- Logique de filtrage dans TasksContext
- Tri des tâches (date, priorité, alphabétique)
2.7 Système de thèmes (clair/sombre)
- Créer le contexte de thème (ThemeContext + ThemeProvider)
- Ajouter toggle de thème dans le Header (bouton avec icône soleil/lune)
- Définir les variables CSS pour le thème clair
- Adapter tous les composants UI pour supporter les deux thèmes
- Modifier la palette de couleurs pour le mode clair
- Adapter les composants Kanban (Board, TaskCard, Column)
- Adapter les formulaires et modales
- Adapter la page de gestion des tags
- Sauvegarder la préférence de thème (localStorage)
- Configuration par défaut selon préférence système (prefers-color-scheme)
📊 Phase 3: Intégrations et analytics (Priorité 3)
3.1 Gestion du Daily
- Créer
services/daily.ts- Service de gestion des daily notes - Modèle de données Daily (date, checkboxes hier/aujourd'hui)
- Interface Daily avec sections "Hier" et "Aujourd'hui"
- Checkboxes interactives avec état coché/non-coché
- Liaison optionnelle checkbox ↔ tâche existante
- Cocher une checkbox NE change PAS le statut de la tâche liée
- Navigation par date (daily précédent/suivant)
- Auto-création du daily du jour si inexistant
- UX améliorée : édition au clic, focus persistant, input large
- Vue calendar/historique des dailies
3.2 Intégration Jira Cloud
- Créer
services/jira.ts- Service de connexion à l'API Jira Cloud - Configuration Jira (URL, email, API token) dans
lib/config.ts - Authentification Basic Auth (email + API token)
- Récupération des tickets assignés à l'utilisateur
- Mapping des statuts Jira vers statuts internes (todo, in_progress, done, etc.)
- Synchronisation unidirectionnelle (Jira → local uniquement)
- Gestion des diffs - ne pas écraser les modifications locales
- Style visuel distinct pour les tâches Jira (bordure spéciale)
- Métadonnées Jira (projet, clé, assignee) dans la base
- Possibilité d'affecter des tags locaux aux tâches Jira
- Interface de configuration dans les paramètres
- Synchronisation manuelle via bouton (pas d'auto-sync)
- Logs de synchronisation pour debug
- Gestion des erreurs et timeouts API
3.3 Page d'accueil/dashboard
- Créer une page d'accueil moderne avec vue d'ensemble
- Widgets de statistiques (tâches par statut, priorité, etc.)
- Déplacer kanban vers /kanban et créer nouveau dashboard à la racine
- Actions rapides vers les différentes sections
- Affichage des tâches récentes
- Graphiques de productivité (tâches complétées par jour/semaine)
- Indicateurs de performance personnels
- Intégration des analytics dans le dashboard
3.4 Analytics et métriques
services/analytics.ts- Calculs statistiques- Métriques de productivité (vélocité, temps moyen, etc.)
- Graphiques avec Recharts (tendances, vélocité, distribution)
- Composants de graphiques (CompletionTrend, Velocity, Priority, Weekly)
- Insights automatiques et métriques visuelles
Autre Todo
- Avoir un bouton pour réduire/agrandir la font des taches dans les kanban (swimlane et classique)
- Refactorer les couleurs des priorités dans un seul endroit
- Settings synchro Jira : ajouter une liste de projet à ignorer, doit etre pris en compte par le service bien sur
- Faire des pages à part entière pour les sous-pages de la page config + SSR
- Afficher dans l'édition de task les todo reliés. Pouvoir en ajouter directement avec une date ou sans.
- Dans les titres de colonnes des swimlanes, je n'ai pas les couleurs des statuts
- Système de sauvegarde automatique base de données
- Sauvegarde automatique configurable (hourly/daily/weekly)
- Configuration complète dans les paramètres avec interface dédiée
- Rotation automatique des sauvegardes (configurable)
- Format de sauvegarde avec timestamp + compression optionnelle
- Interface complète pour visualiser et gérer les sauvegardes
- CLI d'administration pour les opérations avancées
- API REST complète pour la gestion programmatique
- Vérification d'intégrité et restauration sécurisée
- Option de restauration depuis une sauvegarde sélectionnée
🔧 Phase 4: Server Actions - Migration API Routes (Nouveau)
4.1 Migration vers Server Actions - Actions rapides
Objectif : Remplacer les API routes par des server actions pour les actions simples et fréquentes
Actions TaskCard (Priorité 1)
- Créer
actions/tasks.tsavec server actions de base updateTaskStatus(taskId, status)- Changement de statutupdateTaskTitle(taskId, title)- Édition inline du titredeleteTask(taskId)- Suppression de tâche- Modifier
TaskCard.tsxpour utiliser server actions directement - Remplacer les props callbacks par calls directs aux actions
- Intégrer
useTransitionpour les loading states natifs - Tester la revalidation automatique du cache
- Nettoyage : Supprimer props obsolètes dans tous les composants Kanban
- Nettoyage : Simplifier
tasks-client.ts(garder GET et POST uniquement) - Nettoyage : Modifier
useTasks.tspour remplacer mutations par server actions
Actions Daily (Priorité 2)
- Créer
actions/daily.tspour les checkboxes toggleCheckbox(checkboxId)- Toggle état checkboxaddCheckboxToDaily(dailyId, content)- Ajouter checkboxupdateCheckboxContent(checkboxId, content)- Éditer contenudeleteCheckbox(checkboxId)- Supprimer checkboxreorderCheckboxes(dailyId, checkboxIds)- Réorganiser- Modifier les composants Daily pour utiliser server actions
- Nettoyage : Supprimer routes
/api/daily/checkboxes(POST, PATCH, DELETE) - Nettoyage : Simplifier
daily-client.ts(garder GET uniquement) - Nettoyage : Modifier hook
useDaily.tspouruseTransition
Actions User Preferences (Priorité 3)
- Créer
actions/preferences.tspour les toggles updateViewPreferences(preferences)- Préférences d'affichageupdateKanbanFilters(filters)- Filtres KanbanupdateColumnVisibility(columns)- Visibilité colonnesupdateTheme(theme)- Changement de thème- Remplacer les hooks par server actions directes
- Nettoyage : Supprimer routes
/api/user-preferences/*(PUT/PATCH) - Nettoyage : Simplifier
user-preferences-client.ts(GET uniquement) - Nettoyage : Modifier
UserPreferencesContext.tsxpour server actions
Actions Tags (Priorité 4)
- Créer
actions/tags.tspour la gestion tags createTag(name, color)- Création tagupdateTag(tagId, data)- Modification tagdeleteTag(tagId)- Suppression tag- Modifier les formulaires tags pour server actions
- Nettoyage : Supprimer routes
/api/tags(POST, PATCH, DELETE) - Nettoyage : Simplifier
tags-client.ts(GET et search uniquement) - Nettoyage : Modifier
useTags.tspour server actions directes
Migration progressive avec nettoyage immédiat
Principe : Pour chaque action migrée → nettoyage immédiat des routes et code obsolètes
4.2 Conservation API Routes - Endpoints complexes
À GARDER en API routes (pas de migration)
Endpoints de fetching initial
- ✅
GET /api/tasks- Récupération avec filtres complexes - ✅
GET /api/daily- Vue daily avec logique métier - ✅
GET /api/tags- Liste tags avec recherche - ✅
GET /api/user-preferences- Préférences initiales
Endpoints d'intégration externe
- ✅
POST /api/jira/sync- Synchronisation Jira complexe - ✅
GET /api/jira/logs- Logs de synchronisation - ✅ Configuration Jira (formulaires complexes)
Raisons de conservation
- API publique : Réutilisable depuis mobile/externe
- Logique complexe : Synchronisation, analytics, rapports
- Monitoring : Besoin de logs HTTP séparés
- Real-time futur : WebSockets/SSE non compatibles server actions
4.3 Architecture hybride cible
Actions rapides → Server Actions directes
├── TaskCard actions (status, title, delete)
├── Daily checkboxes (toggle, add, edit)
├── Preferences toggles (theme, filters)
└── Tags CRUD (create, update, delete)
Endpoints complexes → API Routes conservées
├── Fetching initial avec filtres
├── Intégrations externes (Jira, webhooks)
├── Analytics et rapports
└── Future real-time features
4.4 Avantages attendus
- 🚀 Performance : Pas de sérialisation HTTP pour actions rapides
- 🔄 Cache intelligent :
revalidatePath()automatique - 📦 Bundle reduction : Moins de code client HTTP
- ⚡ UX :
useTransitionloading states natifs - 🎯 Simplicité : Moins de boilerplate pour actions simples
📊 Phase 5: Surveillance Jira - Analytics d'équipe (Priorité 5)
5.1 Configuration projet Jira
- Ajouter champ
projectKeydans la config Jira (settings) - Interface pour sélectionner le projet à surveiller
- Validation de l'existence du projet via API Jira
- Sauvegarde de la configuration projet dans les préférences
- Test de connexion spécifique au projet configuré
5.2 Service d'analytics Jira
- Créer
services/jira-analytics.ts- Métriques avancées - Récupération des tickets du projet (toute l'équipe, pas seulement assignés)
- Calculs de vélocité d'équipe (story points par sprint)
- Métriques de cycle time (temps entre statuts)
- Analyse de la répartition des tâches par assignee
- Détection des goulots d'étranglement (tickets bloqués)
- Historique des sprints et burndown charts
- Cache intelligent des métriques (éviter API rate limits)
5.3 Page de surveillance /jira-dashboard
- Créer page dédiée avec navigation depuis settings Jira
- Vue d'ensemble du projet (nom, lead, statut global)
- Sélecteur de période (7j, 30j, 3 mois, sprint actuel)
- Graphiques de vélocité avec Recharts
- Heatmap d'activité de l'équipe
- Timeline des releases et milestones
- Alertes visuelles (tickets en retard, sprints déviants)
5.4 Métriques et graphiques avancés
- Vélocité : Story points complétés par sprint
- Burndown chart : Progression vs planifié
- Cycle time : Temps moyen par type de ticket
- Throughput : Nombre de tickets complétés par période
- Work in Progress : Répartition par statut et assignee
- Quality metrics : Ratio bugs/features, retours clients
- Predictability : Variance entre estimé et réel
- Collaboration : Matrice d'interactions entre assignees
5.5 Fonctionnalités de surveillance
- Cache serveur intelligent : Cache en mémoire avec invalidation manuelle
- Export des métriques : Export CSV/JSON avec téléchargement automatique
- Comparaison inter-sprints : Tendances, prédictions et recommandations
- Détection automatique d'anomalies (alertes)
- Filtrage par composant, version, type de ticket
- Vue détaillée par sprint avec drill-down
Intégration avec les daily notes (mentions des blockers)(supprimé)
Autre Todos #2
- Synchro Jira auto en background timé comme pour la synchro de sauvegarde
- refacto des allpreferences : ca devrait eter un contexte dans le layout qui balance serverside dans le hook
- backups : ne backuper que si il y a eu un changement entre le dernier backup et la base actuelle
- refacto des dates avec le utils qui pour l'instant n'est pas utilisé
- split de certains gros composants.
🔧 Phase 6: Fonctionnalités avancées (Priorité 6)
6.1 Gestion avancée des tâches
- Actions en lot (sélection multiple)
- Sous-tâches et hiérarchie
- Dates d'échéance et rappels
- Assignation et collaboration
- Templates de tâches
6.2 Personnalisation et thèmes
- Mode sombre/clair
- Personnalisation des couleurs
- Configuration des colonnes Kanban
- Préférences utilisateur
🚀 Phase 7: Intégrations futures (Priorité 7)
7.1 Intégrations externes (optionnel)
- Import/Export depuis d'autres outils
- API webhooks pour intégrations
- Synchronisation cloud (optionnel)
- Notifications push
7.2 Optimisations et performance
- Optimisation des requêtes DB
- Pagination et virtualisation
- Cache côté client
- PWA et mode offline
🛠️ Configuration technique
Stack moderne
- Frontend: Next.js 14, React, TypeScript, Tailwind CSS
- Backend: Next.js API Routes, Prisma ORM
- Database: SQLite (local) → PostgreSQL (production future)
- UI: Composants custom + Shadcn/ui, React Beautiful DnD
- Charts: Recharts ou Chart.js pour les analytics
Architecture respectée
src/app/
├── api/tasks/ # API CRUD complète
├── page.tsx # Page principale
└── layout.tsx
services/
├── database.ts # Pool Prisma
└── tasks.ts # Service tâches standalone
components/
├── kanban/ # Board Kanban
├── ui/ # Composants UI de base
└── dashboard/ # Widgets dashboard (futur)
clients/ # Clients HTTP (à créer)
hooks/ # Hooks React (à créer)
lib/
├── types.ts # Types TypeScript
└── config.ts # Config app moderne
🎯 Prochaines étapes immédiates
- Drag & drop entre colonnes - react-beautiful-dnd pour changer les statuts
- Gestion avancée des tags - Couleurs, autocomplete, filtrage
- Recherche et filtres - Filtrage temps réel par titre, tags, statut
- Dashboard et analytics - Graphiques de productivité
✅ Fonctionnalités terminées (Phase 2.1-2.3)
- ✅ Système de design tech dark complet
- ✅ Composants UI de base (Button, Input, Card, Modal, Badge)
- ✅ Architecture SSR + hydratation client
- ✅ CRUD tâches complet (création, édition, suppression)
- ✅ Création rapide inline (QuickAddTask)
- ✅ Édition inline du titre (clic sur titre → input éditable)
- ✅ Drag & drop entre colonnes (@dnd-kit) + optimiste
- ✅ Client HTTP et hooks React
- ✅ Refactoring Kanban avec nouveaux composants
🚀 Nouvelles idées & fonctionnalités futures
🔄 Intégration TFS/Azure DevOps
- Lecture des Pull Requests TFS : Synchronisation des PR comme tâches
- PR arrivent en backlog avec filtrage par team project
- Synchronisation aussi riche que Jira (statuts, assignés, commentaires)
- Filtrage par team project, repository, auteur
- Architecture plug-and-play pour intégrations
- Refactoriser pour interfaces génériques d'intégration
- Interface
IntegrationServicecommune (Jira, TFS, GitHub, etc.) - UI générique de configuration des intégrations
- Système de plugins pour ajouter facilement de nouveaux services
📋 Daily - Gestion des tâches non cochées
- Page des tâches en attente
- Liste de toutes les todos non cochées (historique complet)
- Filtrage par date, catégorie, ancienneté
- Action "Archiver" pour les tâches ni résolues ni à faire
- Nouveau statut "Archivé"
- État intermédiaire entre "à faire" et "terminé"
- Interface pour voir/gérer les tâches archivées
- Possibilité de désarchiver une tâche
🎯 Jira - Suivi des demandes en attente
- Page "Jiras en attente"
- Liste des Jiras créés par moi mais non assignés à mon équipe
- Suivi des demandes formulées à d'autres équipes
- Filtrage par projet, équipe cible, ancienneté
- Nouveau modèle de données
- Table séparée pour les "demandes en attente" (différent des tâches Kanban)
- Champs spécifiques : demandeur, équipe cible, statut de traitement
- Notifications quand une demande change de statut
🏗️ Architecture & technique
- Système d'intégrations modulaire
- Interface
IntegrationProviderstandardisée - Configuration dynamique des intégrations
- Gestion des credentials par intégration
- Interface
- Modèles de données étendus
PullRequestpour TFS/GitHubPendingRequestpour les demandes JiraArchivedTaskpour les daily archivées
- UI générique
- Composants réutilisables pour toutes les intégrations
- Configuration unifiée des filtres et synchronisations
- Dashboard multi-intégrations
📁 Refactoring structure des dossiers (PRIORITÉ HAUTE)
Problème actuel
- Structure mixte :
src/app/,src/actions/,src/contexts/maiscomponents/,lib/,services/, etc. à la racine - Alias TypeScript incohérents dans
tsconfig.json - Non-conformité avec les bonnes pratiques Next.js 13+ App Router
Plan de migration
-
Phase 1: Migration des dossiers
mv components/ src/components/mv lib/ src/lib/mv hooks/ src/hooks/mv clients/ src/clients/mv services/ src/services/
-
Phase 2: Mise à jour tsconfig.json
"paths": { "@/*": ["./src/*"] // Supprimer les alias spécifiques devenus inutiles } -
Phase 3: Correction des imports
- Tous les imports
@/services/*→@/services/*(déjà OK) - Tous les imports
@/lib/*→@/lib/*(déjà OK) - Tous les imports
@/components/*→@/components/*(déjà OK) - Tous les imports
@/clients/*→@/clients/*(déjà OK) - Tous les imports
@/hooks/*→@/hooks/*(déjà OK) - Vérifier les imports relatifs dans les scripts/
- Tous les imports
-
Phase 4: Mise à jour des règles Cursor
- Règle "services" : Mettre à jour les exemples avec
src/services/ - Règle "components" : Mettre à jour avec
src/components/ - Règle "clients" : Mettre à jour avec
src/clients/ - Vérifier tous les liens MDC dans les règles
- Règle "services" : Mettre à jour les exemples avec
-
Phase 5: Tests et validation
npm run build- Vérifier que le build passenpm run dev- Vérifier que le dev fonctionnenpm run lint- Vérifier ESLintnpx tsc --noEmit- Vérifier TypeScript- Tester les fonctionnalités principales
Structure finale attendue
src/
├── app/ # Pages Next.js (déjà OK)
├── actions/ # Server Actions (déjà OK)
├── contexts/ # React Contexts (déjà OK)
├── components/ # Composants React (à déplacer)
├── lib/ # Utilitaires et types (à déplacer)
├── hooks/ # Hooks React (à déplacer)
├── clients/ # Clients HTTP (à déplacer)
└── services/ # Services backend (à déplacer)
Focus sur l'expérience utilisateur et le design moderne. App standalone prête pour évoluer vers une plateforme d'intégration complète.