Files
towercontrol/TODO.md
Julien Froidefond 54f105fe62 feat: add date-fns dependency and update HomePage component
- Added `date-fns` as a dependency in `package.json` and `package-lock.json`.
- Refactored `Home` component to `HomePage`, implementing server-side rendering for tasks and stats retrieval.
- Integrated `Header` and `KanbanBoard` components for improved UI structure.
- Marked Kanban components as completed in `TODO.md`.
2025-09-13 13:55:33 +02:00

132 lines
4.9 KiB
Markdown

# TowerControl - Plan de développement
## Phase 1: Setup initial et architecture backend (Priorité 1)
### 1.1 Configuration projet Next.js
- [x] Initialiser Next.js avec TypeScript
- [x] Configurer ESLint, Prettier
- [x] Setup structure de dossiers selon les règles du workspace
- [x] Configurer base de données (SQLite local pour commencer)
- [x] Setup Prisma ORM
### 1.2 Architecture backend - Services de base
- [x] Créer `services/database.ts` - Pool de connexion DB
- [x] Créer `services/reminders.ts` - Service pour récupérer les rappels macOS
- [x] Créer `lib/types.ts` - Types partagés (Task, Tag, Project, etc.)
- [x] Créer `services/task-processor.ts` - Logique métier des tâches
### 1.3 Intégration Rappels macOS (Focus principal Phase 1)
- [x] Rechercher comment accéder aux rappels macOS en local (SQLite, AppleScript, ou API)
- [x] Créer script d'extraction des rappels depuis la DB locale macOS
- [x] Parser les tags et catégories des rappels
- [x] Mapper les données vers le modèle interne
- [x] Créer service de synchronisation périodique
### 1.4 API Routes essentielles (terminé)
- [x] `app/api/tasks/route.ts` - CRUD tâches
- [x] `app/api/sync/reminders/route.ts` - Synchronisation rappels
- [x] `app/api/config/route.ts` - Configuration et test des listes
- [x] `app/api/test/route.ts` - Tests des services
**Note** : Privilégier SSR avec appels directs aux services plutôt que créer plus de routes API
## Phase 2: Interface utilisateur Kanban (Priorité 2)
### 2.1 Composants de base
- [x] `components/kanban/Board.tsx` - Tableau Kanban principal
- [x] `components/kanban/Column.tsx` - Colonnes du Kanban
- [x] `components/kanban/TaskCard.tsx` - Cartes de tâches
- [x] `components/ui/Header.tsx` - Header avec statistiques
### 2.2 Clients HTTP
- [ ] `clients/tasks-client.ts` - Client pour les tâches
- [ ] `clients/base/http-client.ts` - Client HTTP de base
- [ ] Gestion des erreurs et loading states
### 2.3 Hooks React
- [ ] `hooks/useTasks.ts` - Hook pour la gestion des tâches
- [ ] `hooks/useKanban.ts` - Hook pour la logique Kanban (drag & drop)
- [ ] `hooks/useSync.ts` - Hook pour la synchronisation
### 2.4 Interface Kanban
- [ ] Affichage des tâches par statut/tag
- [ ] Drag & drop entre colonnes
- [ ] Filtrage par tags/projets
- [ ] Recherche dans les tâches
## Phase 3: Intégration Jira (Priorité 3)
### 3.1 Services Jira
- [ ] `services/jira-client.ts` - Client Jira API
- [ ] `services/jira-sync.ts` - Synchronisation des tâches Jira
- [ ] Gestion multi-projets Jira
- [ ] Mapping des statuts Jira vers Kanban interne
### 3.2 API Routes Jira
- [ ] `app/api/jira/projects/route.ts` - Liste des projets
- [ ] `app/api/jira/tasks/route.ts` - Tâches Jira
- [ ] `app/api/jira/sync/route.ts` - Synchronisation
- [ ] Configuration des credentials Jira
### 3.3 Interface Jira
- [ ] Sélecteur de projets Jira
- [ ] Affichage mixte rappels + Jira dans le Kanban
- [ ] Indicateurs visuels pour différencier les sources
## Phase 4: Statistiques équipe (Priorité 4)
### 4.1 Services analytics
- [ ] `services/team-analytics.ts` - Calculs statistiques équipe
- [ ] `services/jira-team-sync.ts` - Récupération données équipe
- [ ] Agrégation des métriques (vélocité, burndown, etc.)
### 4.2 Dashboard équipe
- [ ] `components/dashboard/TeamStats.tsx` - Statistiques équipe
- [ ] `components/charts/` - Graphiques (vélocité, burndown, etc.)
- [ ] `app/team/page.tsx` - Page dédiée équipe
- [ ] Filtres par période, membre, projet
## Phase 5: Outils additionnels (Priorité 5)
### 5.1 Intégrations futures
- [ ] Calendrier (événements, deadlines)
- [ ] Notifications (rappels, alertes)
- [ ] Export/Import de données
- [ ] Thèmes et personnalisation
### 5.2 Optimisations
- [ ] Cache Redis pour les données Jira
- [ ] Optimisation des requêtes DB
- [ ] Pagination des tâches
- [ ] Mode offline basique
## Configuration technique
### Stack
- **Frontend**: Next.js 14, React, TypeScript, Tailwind CSS
- **Backend**: Next.js API Routes, Prisma ORM
- **Database**: SQLite (local) → PostgreSQL (production)
- **Intégrations**: macOS Reminders, Jira API
- **UI**: Shadcn/ui, React DnD pour le Kanban
### Structure respectée
```
/services/ # Accès DB et logique métier
/app/api/ # Routes API utilisant les services
/clients/ # Clients HTTP frontend
/components/ # Composants React (pas de logique métier)
/hooks/ # Hooks React
/lib/ # Types et utilitaires partagés
```
## Prochaines étapes immédiates
1. **Setup Next.js** avec la structure de dossiers
2. **Recherche technique** : Comment accéder aux rappels macOS localement
3. **Créer le service `reminders.ts`** pour l'extraction des données
4. **API de base** pour les tâches et synchronisation
---
*Ce plan se concentre d'abord sur le backend et les rappels macOS comme demandé. Chaque phase peut être développée indépendamment.*