# 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) ✅ COMPLETED > **Rappel** : Section 6.5 de ARCHITECTURE.md documente le design complet. > **Complété** : 2026-07-14 (v2.7.1–v3.0.0) + route publique 2026-07-18. ### 4.0 Account Model ✅ - [x] **`auth_method`** — colonne `users.auth_method ∈ {local, gitea, github}` - [x] **Auto-détection** — migrer les comptes existants (gitea_token → gitea, sinon local) - [x] **Badge OAuth** — 🦎/🐙 dans sidebar SI `auth_method` = provider - [x] **Pas de badge** — un compte local avec intégration ne montre PAS de badge ### 4.0a Intégrations & Déconnexion ✅ - [x] **Settings page** — montre toutes les intégrations avec bouton Connect/Disconnect - [x] **Matrice déconnexion** : local→déco ok · gitea→déco github ok · github→déco gitea ok - [x] **Provider principal** — pas de bouton Disconnect sur auth_method - [x] **Compte local** — peut connecter Gitea + GitHub simultanément ### 4.0b Sidebar — règles par type de compte ✅ - [x] **Private visible** UNIQUEMENT si workspace actif est distant (Gitea/GitHub) - [x] **Private caché** pour Scénario A (local pur) - [x] **Trash local-only** — caché pour compte OAuth pur, restreint au contenu local - [x] **Boutons → Library** sur chaque section (recents, favorites, shared, published…) ### 4.0c Share & Publish ✅ - [x] **Modale Share** — 2 tabs (Share + Publish) fonctionnels - [x] **Share tab** — inviter email/user, général access lien - [x] **Publish tab** — activer/désactiver, slug généré - [x] **Page publique** — `/p/` sert le contenu publié (no auth) - [x] **Tables DB** — `page_shares`, colonnes `is_published`, `is_shared`, `share_mode` ### 4.0d Library ✅ - [x] **Page `/library?tab=`** — tabs Recents, Favorites, Shared, Published, Private, Workspace - [x] **Filtres source** — All | Local | Gitea | GitHub - [x] **Table `recents`** — tracking automatique des documents consultés ### 4.0e Édition unifiée ✅ - [x] **Même UI** pour fichiers locaux ET distants - [x] **Bouton Commit** — visible uniquement pour fichiers distants - [x] **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 Accounts+ Pro Pages Parité ``` *Dernière mise à jour: 2026-07-18 — v4.0.0 Accounts/Integrations complété, route publique /p/ ajoutée*