Files
flowdeck/ROADMAP.md
T
bruno 8eb7049460
FlowDeck CI / test (push) Failing after 5s
FlowDeck CI / docker (push) Has been skipped
docs: ARCHITECTURE v3.0 + ROADMAP v4.0 — comptes, intégrations, sidebar
ARCHITECTURE.md:
- Section 6.5: modèle de comptes (local/gitea/github)
- Matrice d'intégrations & règles de déconnexion
- 3 scénarios de workspace (A/B/C)
- Sidebar: règles d'affichage par type de compte
- Share & Publish: modale 2 tabs + schéma DB
- Library: /library?tab= + filtres source
- Trash local-only, édition unifiée, stockage Private
- Plan de migration 5 phases

ROADMAP.md:
- v4.0.0 section prioritaire: Account Model, Intégrations,
  Sidebar rules, Share/Publish, Library, Édition unifiée
2026-07-14 12:07:13 -04:00

335 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
### v2.2.0 ✅ — Tags & Recherche Avancée
### v2.3.0 ✅ — Multi-Vues Workspace & Preview Panel
### v2.4.0 ✅ — Tags Personnalisés par Utilisateur
### v2.5.0 ✅ — Administration Avancée
### v2.6.0 ✅ — My Account & Auth Locale
### v2.7.0 ✅ — Intégration Gitea Phase 1
### v2.7.1 ✅ — Private Pages Gitea
### v2.8.0 ✅ — Gitea Phase 2 (2026-07-14)
- [x] Créer fichiers dans le repo (New file UI + API PUT)
- [x] Upload fichiers binaires (POST /upload, drag-drop)
- [x] Syntax highlighting via Prism.js CDN
- [x] Labels Gitea → tags FlowDeck (POST /sync-labels, 16 labels importés)
- [x] Historique commits par fichier (GET /commits?path=)
### v2.9.0 ✅ — GitHub OAuth Provider (2026-07-14)
- [x] GitHubProvider dans `app/auth/providers.py`
- [x] GitHubAdapter dans `app/services/github_adapter.py`
- [x] Config GitHub dans `.env.example` (GITHUB_OAUTH_CLIENT_ID/SECRET)
### v3.0.0 ✅ — UX Professionnelle (2026-07-14)
- [x] Multi-sélection (checkboxes + Shift/Ctrl-click dans le sidebar)
- [x] Raccourcis clavier (Ctrl+N, F2, Delete, Escape, Ctrl+S)
- [x] Inline rename (double-clic → champ inline)
- [x] Loading skeletons (animations pulse dans workspaces + file viewer
- [x] Grid/card view (mode grille/vignettes)
- [x] Table sorting (tri par colonnes)
- [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
---
## v4.0.0 — Accounts, Integrations & Sidebar (priorité haute)
> **Rappel** : Section 6.5 de ARCHITECTURE.md documente le design complet.
### 4.0 Account Model
- [ ] **`auth_method`** — colonne `users.auth_method ∈ {local, gitea, github}`
- [ ] **Auto-détection** — migrer les comptes existants (gitea_token → gitea, sinon local)
- [ ] **Badge OAuth** — 🦎/🐙 dans sidebar SI `auth_method` = provider
- [ ] **Pas de badge** — un compte local avec intégration ne montre PAS de badge
### 4.0a Intégrations & Déconnexion
- [ ] **Settings page** — montre toutes les intégrations avec bouton Connect/Disconnect
- [ ] **Matrice déconnexion** : local→déco ok · gitea→déco github ok · github→déco gitea ok
- [ ] **Provider principal** — pas de bouton Disconnect sur auth_method
- [ ] **Compte local** — peut connecter Gitea + GitHub simultanément
### 4.0b Sidebar — règles par type de compte
- [ ] **Private visible** UNIQUEMENT si workspace actif est distant (Gitea/GitHub)
- [ ] **Private caché** pour Scénario A (local pur)
- [ ] **Trash local-only** — caché pour compte OAuth pur, restreint au contenu local
- [ ] **Boutons → Library** sur chaque section (recents, favorites, shared, published…)
### 4.0c Share & Publish
- [ ] **Modale Share** — 2 tabs (Share + Publish) fonctionnels
- [ ] **Share tab** — inviter email/user, général access lien
- [ ] **Publish tab** — activer/désactiver, slug généré
- [ ] **Page publique** — `/p/<slug>` sert le contenu publié
- [ ] **Tables DB** — `page_shares`, colonnes `is_published`, `is_shared`, `share_mode`
### 4.0d Library
- [ ] **Page `/library?tab=`** — tabs Recents, Favorites, Shared, Published, Private, Workspace
- [ ] **Filtres source** — All | Local | Gitea | GitHub
- [ ] **Table `recents`** — tracking automatique des documents consultés
### 4.0e Édition unifiée
- [ ] **Même UI** pour fichiers locaux ET distants
- [ ] **Bouton Commit** — visible uniquement pour fichiers distants
- [ ] **Champ message** — pour les commits Gitea/GitHub
---
## v4.0.0 — Parité Notion (Delta Analysis)
> **Méthodologie**: Comparaison exhaustive de FlowDeck v3.0.1 vs Notion (2025) — 60+ fonctionnalités analysées, 45 manquantes identifiées, 30 retenues pour v4.0.0.
### 🟢 Tier 1 — Critique (16 features)
#### 4.1 AI Assistant
- [ ] **Notion AI-style** — intégration LLM locale/nuage pour: écriture, résumé, traduction, brainstorming
- [ ] **Auto-complétion** — suggestions de contenu pendant la frappe
- [ ] **AI properties** — auto-remplissage de propriétés (résumé auto, catégorisation)
- [ ] **Slash AI commands** — `/ai write`, `/ai summarize`, `/ai translate`
#### 4.2 Embeds & Rich Media
- [ ] **60+ embeds** — YouTube, Figma, Google Maps, Loom, Twitter, CodePen, Miro, etc.
- [ ] **Image lightbox** — clic pour agrandir, navigation entre images
- [ ] **Inline file previews** — PDF, vidéo, audio directement dans la page
- [ ] **Bookmark cards** — aperçu riche des liens (OG metadata)
#### 4.3 Export & Import
- [ ] **Export PDF** — mise en page fidèle, table des matières
- [ ] **Export Markdown** — avec images et sous-pages
- [ ] **Export HTML** — site statique
- [ ] **Import Confluence/Evernote/Asana** — migration depuis autres outils
### 🟡 Tier 2 — Important (8 features)
#### 4.4 Collaboration & Notifications
- [ ] **Realtime editing** — WebSocket, curseurs multi-utilisateurs
- [ ] **Inline comments** — commentaires sur sélection de texte
- [ ] **@mentions** — notifier un utilisateur → page/commentaire
- [ ] **Email notifications** — changements, mentions, rappels
#### 4.5 Content Blocks
- [ ] **Callout blocks** — boîtes colorées (info, warning, tip, success)
- [ ] **Table of contents** — auto-généré depuis les headings
- [ ] **Math equations** — LaTeX / KaTeX inline + block
- [ ] **Toggle lists** — contenu expandable/collapsible
### 🟠 Tier 3 — Avancé (6 features)
#### 4.6 Views & Layout
- [ ] **Linked databases** — vue d'une DB dans plusieurs pages
- [ ] **Charts & dashboards** — graphiques depuis données DB (bar, line, donut)
- [ ] **Multi-colonnes** — layout flexible (2, 3, 4 colonnes)
- [ ] **Command palette** — Ctrl+P / Cmd+K recherche universelle
#### 4.7 Automations
- [ ] **Database automations** — if-this-then-that (ex: statut=done → assign next)
- [ ] **Buttons** — boutons cliquables déclenchant des actions (créer page, modifier propriété…)
#### 4.8 Database Avancée
- [ ] **Database unifiée** — refonte complète du système de database Notion-style
- Inline databases dans n'importe quelle page
- Full-page databases avec vues multiples
- Templates de database (Project tracker, CRM, Inventory…)
- Champs calculés avec formules complexes
- Groupes de propriétés pliables
- Validation des propriétés (required, unique, min/max)
- Types de propriétés manquants: Person (multi-select users), Last edited time, Created by
- [ ] **Vues Notion complètes**
- Vue Timeline/Gantt avec dépendances visuelles
- Vue Board (Kanban) avec swimlanes et WIP limits
- Vue Calendar avec drag & drop reschedule
- Vue Gallery avec images de couverture
#### 4.9 Kanban Adaptable
- [ ] **Kanban personnalisable par utilisateur**
- Colonnes configurables (propriété Select/Status)
- Cartes configurables (choisir quelles propriétés afficher)
- Couverture de carte (image, icône, couleur)
- Sous-tâches visibles directement sur la carte
- WIP limits par colonne avec alertes visuelles
- Vues sauvegardées par utilisateur (nom, filtres, tri, colonnes)
- Mode compact / mode détaillé
#### 4.10 Calendar & Meetings
- [ ] **Calendrier intégré**
- Vue Calendrier avec drag & drop pour reschedule
- Vue Jour/Semaine/Mois (comme Notion Calendar)
- Récurrence d'événements (daily, weekly, monthly, custom)
- Timezone support
- Rappels (in-app, email)
- [ ] **Meeting Notes**
- Template Meeting Notes avec sections: Attendees, Agenda, Notes, Action Items
- Lien automatique avec le calendrier
- Action items → création automatique de tâches
---
## v4.1.0 — Pro (futur)
- [ ] **PWA** — Progressive Web App, offline support
- [ ] **SSO/SAML** — enterprise authentication
- [ ] **Granular permissions** — page-level, property-level access control
- [ ] **Web Clipper** — extension navigateur sauvegarder vers FlowDeck
- [ ] **API publique** — REST API + webhooks
- [ ] **Synced blocks** — bloc synchronisé entre plusieurs pages
- [ ] **Conditional formatting** — couleur cellule basée sur valeur
- [ ] **Pivot tables** — vues agrégées
- [ ] **Database containers** — sous-DBs imbriquées
---
## 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 ✅ v3.0.1 ✅ v4.0.0 ⬜ v4.1.0 ⬜
Private Gitea P2 GitHub Pro UX Quality Notion Pro
Pages
```
*Dernière mise à jour: 2026-07-14 — v4.0.0 planifié*