ROADMAP.md: - Ajout v2.4.0 (tags/user), v2.5.0 (admin panel), v2.6.0 (my account) - Ajout v2.7.0 (Gitea P1), v2.7.1 (private pages) - Roadmap future: v2.8.0 (Gitea P2), v2.9.0 (GitHub), v3.0.0 (Pro UX) CHANGELOG.md: - Entries v2.4.0 → v2.7.1 avec tous les détails - Structure Added/Fixed cohérente docs/ROADMAP.md (v3.0): - Phase 1-5 checkboxes mises à jour (45/52 items done) - Reste: GitHub OAuth, Quick switch, API tokens, sessions actives
202 lines
8.1 KiB
Markdown
202 lines
8.1 KiB
Markdown
# Roadmap FlowDeck — Notion Clone
|
||
|
||
> **Vision**: Copie conforme de l'UI/UX Notion, intégrée à Gitea.
|
||
> **19 images de référence** dans `images/` — analysées le 2026-07-08.
|
||
|
||
## Completed
|
||
|
||
### v0.2.0 ✅ — Base
|
||
Dashboard + Board Kanban + Gitea sync + Notes + Docker
|
||
|
||
### v0.3.0 ✅ — Auth
|
||
OAuth2 Gitea, token par utilisateur, CSRF, rate limiting, webhooks
|
||
|
||
### v0.4.0 ✅ — UI Notion
|
||
Layout 3 zones (sidebar 240px + topbar 44px), dark mode, CSS 31KB, Alpine.js
|
||
|
||
### v0.5.0 ✅ — Kanban
|
||
Colonnes, groupes, cartes enrichies, drag&drop, modale détail, checklists, commentaires
|
||
|
||
### v0.6.0 ✅ — Table View
|
||
6 colonnes triables, groupes rétractables
|
||
|
||
### v0.7.0 ✅ — Filtres & Tri
|
||
Filtres cumulables AND, status dropdown, sort multi-critères
|
||
|
||
### v0.8.0 ✅ — Vues Spéciales
|
||
Status Overview (donut SVG), Team Load (barres), Detailed Board
|
||
|
||
### v0.9.0 ✅ — Backend
|
||
Propriétés custom, AI keywords, sync API, 12 tables DB
|
||
|
||
### v1.0.0 ✅ — Production
|
||
- [x] FastAPI lifespan (deprecation fix)
|
||
- [x] 28 tests — 5 vues, filtres, tris, APIs, CSRF, CORS, DB
|
||
- [x] CI/CD Gitea Actions (`.gitea/workflows/ci.yml`)
|
||
- [x] CHANGELOG.md, ARCHITECTURE.md à jour
|
||
- [x] Version 1.0.0 partout (main.py, api.py, health)
|
||
- [x] Tag git v1.0.0
|
||
|
||
### v1.1.0 ✅ — Pages & Sidebar
|
||
- [x] Pages Markdown avec arbre imbriqué (parent_id, sort_order)
|
||
- [x] Block editor mode (content_format='blocks', JSON storage)
|
||
- [x] Soft delete → Trash → Restore → Permanent delete
|
||
- [x] Drag & drop réorganisation pages
|
||
- [x] Sidebar Notion-style avec sections Recents/Private/Shared
|
||
- [x] "+ New page" footer button
|
||
- [x] Workspace header avec avatar + chevron toggle
|
||
|
||
### v1.2.0 ✅ — Éditeur Notion
|
||
- [x] Slash menu (/) 15 commandes fonctionnelles
|
||
- [x] Navigation clavier (flèches, Enter, Escape)
|
||
- [x] Placeholders Notion-style (Heading 1/2/3/4, Toggle, Quote, Code)
|
||
- [x] Suppression outline blanc sur les blocs
|
||
- [x] Heading 4 support
|
||
- [x] Breadcrumbs contextuels (workspace > projet > page)
|
||
|
||
### v1.3.0 ✅ — Database Concept (Bloc 1 du gap analysis)
|
||
- [x] Tables `collections`, `collection_pages`, `collection_views`
|
||
- [x] Rétrocompatibilité Gitea via `GiteaBoardCompat`
|
||
- [x] Router `/db` — API CRUD collections + pages (12 endpoints)
|
||
- [x] 34/34 tests passent
|
||
|
||
### v1.4.0 ✅ — Propriétés Avancées (Bloc 2)
|
||
- [x] Table `collection_properties` — 21 types Notion
|
||
- [x] Service `property_types.py` — validation, formatage, auto-values
|
||
- [x] 38/38 tests passent
|
||
|
||
### v1.5.0 ✅ — Relations & Rollups
|
||
- [x] Type `relation` — lien bidirectionnel entre collections
|
||
- [x] Type `rollup` — aggregation via relation (COUNT, SUM, AVG, etc.)
|
||
- [x] Type `formula` — moteur d'expressions (19 fonctions)
|
||
- [x] Formula engine + Rollup engine
|
||
- [x] 43/43 tests passent
|
||
|
||
### v1.6.0 ✅ — Vues Manquantes (Bloc 3)
|
||
- [x] Calendar, Gallery, List, Timeline, Table views
|
||
- [x] View tabs navigation
|
||
- [x] 49/49 tests passent
|
||
|
||
### v1.7.0 ✅ — Vues Améliorées
|
||
### v1.8.0 ✅ — Sub-items & Dépendances
|
||
- [x] View config API, Save view as
|
||
- [x] Sub-items (parent_id auto-référence)
|
||
- [x] Status aggregate, Dependencies (blocking constraint)
|
||
- [x] 56/56 tests passent
|
||
|
||
### v1.9.0 ✅ — My Tasks & Dashboard Unifié (Bloc 5)
|
||
- [x] Vue `/my-tasks` — agrège pages assignées à l'utilisateur
|
||
- [x] Groupement par collection, filtres globaux
|
||
- [x] 60/60 tests passent
|
||
|
||
### v2.0.0 ✅ — Éditeur Complet & Multi-Utilisateurs (Blocs 6-7)
|
||
- [x] Workspaces, Comments, Page History, Favorites
|
||
- [x] Database Templates, Page Templates, CSV Import/Export
|
||
- [x] Public Sharing
|
||
- [x] 67/67 tests passent
|
||
|
||
### v2.1.0 ✅ — Workspace Local & Arborescence
|
||
- [x] Page `/local-workspace` — file/folder tree avec breadcrumb
|
||
- [x] CRUD items, drag & drop upload/interne
|
||
- [x] File viewer (images, PDF, code), preview hover
|
||
- [x] Menu contextuel (clic droit / long-press mobile)
|
||
- [x] Recherche + filtre par type, Expand/Collapse all
|
||
- [x] 73 tests passent
|
||
|
||
### v2.2.0 ✅ — Tags & Recherche Avancée
|
||
- [x] Tables `tags` + `page_tags`, CRUD API
|
||
- [x] Vue Table enrichie, filtrage par tags
|
||
- [x] Menu contextuel tags (ajout/retrait, création avec couleur)
|
||
- [x] Filtre "Dossiers", auto-switch table
|
||
|
||
### v2.3.0 ✅ — Multi-Vues Workspace & Preview Panel
|
||
- [x] Sélecteur de vue: Tree, List, Details, Title, Content (5 modes)
|
||
- [x] Preview Panel latéral (contenu, métadonnées, tags, actions)
|
||
- [x] Tri par date (Oldest/Newest)
|
||
|
||
### v2.4.0 ✅ — Tags Personnalisés par Utilisateur (2026-07-13)
|
||
- [x] Tags isolés par `user_id` — chaque utilisateur voit ses propres tags
|
||
- [x] `UNIQUE(name, user_id)`, migration des tags existants
|
||
- [x] API filtrage transparent (session cookie)
|
||
|
||
### v2.5.0 ✅ — Administration Avancée (2026-07-13)
|
||
- [x] Premier compte créé = admin automatique
|
||
- [x] Panneau Admin dans Settings (Users & Roles, Audit)
|
||
- [x] Table `login_history` (IP, user_agent, timestamp)
|
||
- [x] CRUD utilisateurs (créer, modifier rôle/password, supprimer)
|
||
- [x] Statistiques par utilisateur (workspaces, pages, utilisation)
|
||
- [x] CSRF fix sur les appels admin
|
||
|
||
### v2.6.0 ✅ — My Account & Auth Locale (2026-07-13)
|
||
- [x] Section My Account: modifier username, nom, email, mot de passe
|
||
- [x] Toggle voir/cacher mot de passe (oeil/barré)
|
||
- [x] Label "Email or username" dans login
|
||
- [x] Refresh cookie session après modification compte
|
||
- [x] Register avec Gitea (OAuth crée compte + active intégration)
|
||
|
||
### v2.7.0 ✅ — Intégration Gitea Phase 1 (2026-07-13)
|
||
- [x] **OAuth2 Provider** — Gitea comme fournisseur OAuth2 (Client ID/Secret dans `.env`)
|
||
- [x] **Redirect URI dynamique** — basé sur le header `Host` (localhost + IP réseau)
|
||
- [x] **Workspace listing** — 2 sections: My Workspaces + Gitea Projects
|
||
- [x] **Tabs par organisation** — All | user | org1 | org2 avec compteurs
|
||
- [x] **Barre de recherche** — filtrage live par nom/description
|
||
- [x] **Lazy tree** — arborescence chargée un dossier à la fois
|
||
- [x] **File viewer** — lecture fichiers Gitea (décodé base64)
|
||
- [x] **Éditeur + commit** — modifier et commiter dans Gitea
|
||
- [x] **Delete fichier** — suppression avec confirmation + commit
|
||
- [x] **Arborescence dans le sidebar** — comme un workspace local
|
||
- [x] **Settings › Integrations** — connecter/déconnecter Gitea
|
||
- [x] **Fallback token admin** — GET sans token utilisateur (read-only)
|
||
- [x] **Write ops** — exigent token OAuth utilisateur (commit, delete)
|
||
- [x] **Limit=100** — tous les repos visibles (pas de pagination tronquée)
|
||
|
||
### v2.7.1 ✅ — Private Pages Gitea (2026-07-13)
|
||
- [x] Table `gitea_private_pages` — liée par (user_id, owner, repo)
|
||
- [x] API CRUD: GET/POST/PUT/DELETE private-pages
|
||
- [x] UI dans le workspace Gitea: liste + éditeur titre/contenu
|
||
- [x] Lien Private Pages dans le sidebar
|
||
- [x] Persistant entre sessions — survit au changement de workspace
|
||
|
||
---
|
||
|
||
## Upcoming
|
||
|
||
### v2.8.0 — Gitea Phase 2 (Écriture avancée)
|
||
- [ ] Création de nouveaux fichiers dans le repo Gitea
|
||
- [ ] Upload de fichiers binaires
|
||
- [ ] Syntax highlighting dans le file viewer
|
||
- [ ] Labels Gitea → tags FlowDeck (sync bidirectionnelle)
|
||
- [ ] Historique des commits récents par fichier
|
||
|
||
### v2.9.0 — GitHub OAuth Provider
|
||
- [ ] OAuth2 GitHub (même flux que Gitea)
|
||
- [ ] GitHubAdapter dans le ForgeAdapter pattern
|
||
- [ ] Section GitHub Projects dans /workspaces
|
||
|
||
### v3.0.0 — UX Professionnelle (inspiré du gap analysis v2.2)
|
||
- [ ] Multi-sélection (checkboxes, Shift-click, Ctrl-click)
|
||
- [ ] Raccourcis clavier (Enter, F2, Del, Ctrl+A/C/V/Z)
|
||
- [ ] Inline rename (double-clic → champ inline)
|
||
- [ ] Vue détails/tableau avec tri
|
||
- [ ] Loading skeletons
|
||
- [ ] Mode grille/vignettes
|
||
|
||
---
|
||
|
||
## Résumé des phases
|
||
|
||
```
|
||
v1.0.0 ✅ v1.1.0 ✅ v1.2.0 ✅ v1.3.0 ✅ v1.4.0 ✅ v1.5.0 ✅ v1.6.0 ✅ v1.7.0 ✅
|
||
Production Pages Editor DB Concept Properties Relations Views View+
|
||
|
||
v2.0.0 ✅ v2.1.0 ✅ v2.2.0 ✅ v2.3.0 ✅ v2.4.0 ✅ v2.5.0 ✅ v2.6.0 ✅ v2.7.0 ✅
|
||
Editor+ Workspace Tags Views5 Tags/user Admin Account Gitea P1
|
||
Local Panel
|
||
|
||
v2.7.1 ✅ v2.8.0 ⬜ v2.9.0 ⬜ v3.0.0 ⬜
|
||
Private Gitea P2 GitHub Pro UX
|
||
Pages
|
||
```
|
||
|
||
*Dernière mise à jour: 2026-07-13*
|