Analyse complète de 35 améliorations réparties en 7 catégories: A) Productivité & Raccourcis (7 items) B) Affichage & Métadonnées (6 items) C) Navigation & Breadcrumb (4 items) D) Sidebar Polissage (6 items) E) Expérience cross-cutting (6 items) F) Mobile & Responsive (4 items) G) Performance & Robustesse (5 items) Priorités P0 (6): multi-sélection, raccourcis, inline rename, vue détails, tri, indicateur dossier actif. Priorités P1 (18): undo toast, copy/paste, métadonnées, skeletons, breadcrumb éditable, upload progress, etc. Estimation: ~4-6 semaines pour P0+P1.
17 KiB
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
- FastAPI lifespan (deprecation fix)
- 28 tests — 5 vues, filtres, tris, APIs, CSRF, CORS, DB
- CI/CD Gitea Actions (
.gitea/workflows/ci.yml) - CHANGELOG.md, ARCHITECTURE.md à jour
- Version 1.0.0 partout (main.py, api.py, health)
- Tag git v1.0.0
v1.1.0 ✅ — Pages & Sidebar
- Pages Markdown avec arbre imbriqué (parent_id, sort_order)
- Block editor mode (content_format='blocks', JSON storage)
- Soft delete → Trash → Restore → Permanent delete
- Drag & drop réorganisation pages
- Sidebar Notion-style avec sections Recents/Private/Shared
- "+ New page" footer button
- Workspace header avec avatar + chevron toggle
v1.2.0 ✅ — Éditeur Notion
- Slash menu (/) 15 commandes fonctionnelles
- Navigation clavier (flèches, Enter, Escape)
- Placeholders Notion-style (Heading 1/2/3/4, Toggle, Quote, Code)
- Suppression outline blanc sur les blocs
- Heading 4 support
- Breadcrumbs contextuels (workspace > projet > page)
v1.3.0 ✅ — Database Concept (Bloc 1 du gap analysis)
(2026-07-10, commit c574d2c, tag v1.3.0)
- Table
collections— base de données abstraite, indépendante de Giteaid,name,description,icon,schema_json- Optionnellement liée à Gitea (
gitea_owner,gitea_repo)
- Table
collection_pages— remplacecards, pages génériquescollection_id,title,position,parent_id,property_values_jsongitea_issue_idoptionnel, auto-propriétés (created_at,updated_at)
- Table
collection_views— vues configurables par collectionname,view_type,config_json,position
- Rétrocompatibilité Gitea — adaptateur
GiteaBoardCompat- Les boards Gitea existants deviennent des collections
- Migration transparente
cards→collection_pages - Routes
/db/boards/api,/db/board/{o}/{r}/api,/db/board/{o}/{r}/sync
- Router
/db— API CRUD collections + pages (12 endpoints) - 34/34 tests passent (+6 nouveaux tests v1.3)
- Database lock — mode lecture seule (
collections.is_locked) - Database description — champ
descriptionsur les collections
v1.4.0 ✅ — Propriétés Avancées (Bloc 2)
(2026-07-10)
- Table
collection_properties— remplaceproject_properties- Liée à
collections(pas àproject_owner/name) - Supporte tous les types Notion (21 types)
- Liée à
- Type
number— avec formatage (nombre, %, €, $, £, ¥) - Type
checkbox— booléen natif - Type
url— lien cliquable - Type
email— email cliquable - Type
phone— téléphone cliquable - Type
status— select avec couleurs forcées (9 couleurs Notion) - Type
files— uploads/images attachés aux pages - Type
unique_id— ID auto-incrémenté par collection - Type
created_time/created_by— auto-propriétés - Type
last_edited_time/last_edited_by— auto-propriétés - Service
property_types.py— validation, formatage, auto-values - API CRUD —
/db/property-types/api+ CRUD/db/{id}/properties/api - 38/38 tests passent (+4 nouveaux tests v1.4)
- Migration
project_properties→collection_properties(v1.5)
v1.5.0 ✅ — Relations & Rollups (Bloc 2 suite)
(2026-07-10)
- Type
relation— lien bidirectionnel entre collectionsrelated_collection_id,reverse_nameauto-généré- Stockage : JSON array de page IDs dans
property_values_json - API:
POST /db/{id}/properties/relation(création avec reverse) - API:
POST /db/{id}/properties/relation/link(lier 2 pages)
- Type
rollup— agrégation via relation- Functions : COUNT, SUM, AVG, MIN, MAX, RANGE, UNIQUE, PERCENT_CHECKED
- API:
POST /db/rollup/compute
- Type
formula— propriétés calculées- Moteur d'expressions JavaScript-like (19 fonctions)
- API:
POST /db/formula/evaluate
- Formula engine —
services/formula_engine.py - Rollup engine —
services/rollup_engine.py - 43/43 tests passent (+5 nouveaux tests v1.5)
- FKs fix:
related_collection_id,relation_property_id,target_property_id→ON DELETE SET NULL
v1.6.0 ✅ — Vues Manquantes (Bloc 3)
(2026-07-10)
- Calendar view — grid mensuel, navigation mois, événements par date
- Route:
GET /db/{id}/view/calendar
- Route:
- Gallery view — cartes visuelles avec cover image optionnelle
card_size: small/medium/large,cover_propertyconfigurable
- List view — liste compacte avec preview propriétés
- Timeline/Gantt view — barres horizontales sur axe date
- Table view — rendu SSR, colonnes properties
- View tabs — navigation entre vues (Table/Board/Calendar/Gallery/List/Timeline)
- 49/49 tests passent (+6 nouveaux tests v1.6)
v1.7.0 ✅ — Vues Améliorées
v1.8.0 ✅ — Sub-items & Dépendances
(2026-07-10, combined)
- View config API — PUT /db/views/{id}/config (group_by, card_size, cover, visible)
- Save view as — POST /db/{id}/views/save-as
- List views — GET /db/{id}/views/api
- Sub-items — parent_id auto-référence, GET/POST sub-items
- Status aggregate — GET status-aggregate (Done only if all children Done)
- Dependencies — POST dependencies + POST check-deps (blocking constraint)
- 56/56 tests passent (+7 tests v1.7+v1.8)
v1.9.0 ✅ — My Tasks & Dashboard Unifié (Bloc 5)
(2026-07-10)
- Vue
/my-tasks— agrège toutes les pages assignées à l'utilisateur- Scan cross-collection (toutes les databases du workspace)
- Filtre automatique : admin voit tout
- Groupement par collection — sections par database d'origine
- Filtres globaux — All, Today, Overdue, Next 7 days
- API JSON —
GET /my-tasks/api - 60/60 tests passent (+4 tests v1.9)
v2.0.0 ✅ — Éditeur Complet & Multi-Utilisateurs (Blocs 6-7)
(2026-07-10)
- Workspaces —
workspaces+workspace_memberstables, CRUD API, roles admin/editor/commenter/viewer - Comments — table
commentsavec thread (parent_id), resolved, API CRUD - Page History — table
page_history, snapshot JSON, API record/list - Favorites — table
favorites, API add/remove/list - Database Templates — table
database_templates, apply to create collection - Page Templates — table
page_templates, apply with pre-filled properties - CSV Import/Export —
POST .../import/csv,GET .../export/csv - Public Sharing —
GET /workspace/public/{id}(read-only, no auth) - 67/67 tests passent (+7 tests v2.0)
v2.1.0 ✅ — Workspace Local & Arborescence
(2026-07-11)
- Page
/local-workspace— file/folder tree avec breadcrumb - API tree récursive —
GET /api/local-workspace/tree?folder=ID - Breadcrumb —
GET /api/local-workspace/breadcrumb - CRUD items — create/rename/delete/move files & folders
- Drag & drop upload — fichiers + dossiers récursifs depuis l'OS
- Drag & drop interne — déplacer items entre dossiers
- Expand/collapse — toggle dossiers, persisté localStorage
- File viewer — images, PDF, texte/code avec coloration syntaxique
- Preview hover — popup au survol des fichiers
- Icônes par type — 📝 pages, 📕 PDF, 🖼️ images, 🐍 code, etc.
- Recherche + filtre — par nom + par type (chips)
- Menu contextuel sidebar — clic droit / long-press mobile
- Expand/Collapse all — boutons ⊞ ⊟
- Sidebar persistante — sectionsOpen + expandedFolders localStorage
- Création instantanée — AJAX sans reload
- 73 tests passent
Upcoming
v2.2.0 — Workspace & Sidebar Professionnel (Gap Analysis)
Cible: Q3 2026
Analyse complète de ce qui manque pour une expérience utilisateur de niveau professionnel, comparable à Notion, VS Code, et Finder.
A. Workspace Page — Productivité & Raccourcis
| # | Feature | Priorité | Effort | Description |
|---|---|---|---|---|
| A1 | Multi-sélection | P0 | M | Checkboxes + Shift-click range + Ctrl-click toggle. Bulk delete/move. |
| A2 | Raccourcis clavier | P0 | M | Enter=open, F2=rename, Del=delete, Ctrl+A=select all, Ctrl+C/V=copy/paste, Ctrl+Z=undo |
| A3 | Inline rename | P0 | S | Double-clic → champ inline (pas prompt()). Garder le même comportement que Finder. |
| A4 | Drag count badge | P1 | S | Afficher un badge "[N]" sur le curseur quand on drag plusieurs items. |
| A5 | Undo delete (toast) | P1 | M | Remplacer confirm('Delete?') par un delete immédiat + toast "Undo" 5s. |
| A6 | Duplicate file/folder | P1 | S | Action "Duplicate" dans le menu contextuel + Ctrl+D. |
| A7 | Copy/paste items | P1 | M | Ctrl+C copie (stockage sessionStorage), Ctrl+V colle dans le dossier courant. |
B. Workspace Page — Affichage & Métadonnées
| # | Feature | Priorité | Effort | Description |
|---|---|---|---|---|
| B1 | Vue détails/tableau | P0 | L | Toggle entre arbre et tableau (Nom, Taille, Type, Modifié le). |
| B2 | Tri | P0 | M | Barre d'en-tête: clic pour trier par nom/date/taille/type. Asc/desc. |
| B3 | Métadonnées dans l'arbre | P1 | S | Afficher taille + date de modification en grisé à droite du nom. |
| B4 | Compteur d'enfants par dossier | P1 | S | Badge "(3)" à côté du nom du dossier indiquant le nombre d'items directs. |
| B5 | Loading skeletons | P1 | S | Remplacer "Loading..." par des skeletons animés (barres grises pulsing). |
| B6 | Empty state illustré | P2 | S | Illustration SVG + texte d'aide pour workspace vide et dossier vide. |
C. Workspace Page — Navigation & Breadcrumb
| # | Feature | Priorité | Effort | Description |
|---|---|---|---|---|
| C1 | Breadcrumb éditable | P1 | M | Cliquer sur un segment du breadcrumb = naviguer. Dernier segment éditable (rename). |
| C2 | Barre d'adresse / path | P2 | M | Champ texte affichant le path complet, éditable pour jump direct. |
| C3 | Back/Forward navigation | P2 | M | Boutons ← → dans la topbar, historique de navigation interne. |
| C4 | Dossier parent ".." | P2 | S | Premier élément de la liste quand on est dans un sous-dossier. |
D. Sidebar Workspace — Polissage
| # | Feature | Priorité | Effort | Description |
|---|---|---|---|---|
| D1 | Indicateur de dossier actif | P0 | S | Highlight + point coloré sur le dossier courant (navigué). |
| D2 | Badge compteur par dossier | P1 | S | "(5)" à côté des dossiers montrant le nombre d'items récursifs. |
| D3 | Drop indicator line | P1 | S | Ligne bleue entre les items pendant le drag pour montrer la position d'insertion. |
| D4 | Scroll into view | P1 | S | Auto-scroll pour rendre visible le dossier actif dans la sidebar. |
| D5 | Animation expand/collapse | P2 | S | Transition fluide CSS pour l'ouverture/fermeture des dossiers (max-height). |
| D6 | Indicateur "modifié récemment" | P2 | S | Petit point bleu à côté des items modifiés dans les dernières 24h. |
E. Expérience Générale — Cross-cutting
| # | Feature | Priorité | Effort | Description |
|---|---|---|---|---|
| E1 | Mode grille/vignettes | P2 | L | Alternative au tree: icônes larges avec preview, style Finder/Dropbox. |
| E2 | Upload progress détaillé | P1 | M | Barre de progression par fichier, vitesse, ETA, possibilité d'annuler. |
| E3 | Drag depuis sidebar vers workspace | P2 | L | Permettre de glisser un item de la sidebar directement dans la page workspace. |
| E4 | Pin/favoris dans le workspace | P2 | S | Épingler des dossiers/fichiers en haut de la liste pour accès rapide. |
| E5 | Aperçu des fichiers dans le dossier parent | P3 | M | Quand on survole un dossier dans l'arbre, montrer un petit popup listant les 5 premiers fichiers. |
| E6 | Dark/Light theme cohérent | P1 | M | S'assurer que le file viewer standalone respecte le thème actif (cookie/session). |
F. Mobile & Responsive
| # | Feature | Priorité | Effort | Description |
|---|---|---|---|---|
| F1 | Swipe actions | P2 | M | Swipe gauche sur un item → Delete. Swipe droit → Rename. |
| F2 | Bottom sheet context menu | P1 | M | Remplacer le menu contextuel desktop par une bottom sheet native sur mobile. |
| F3 | Touch hold feedback | P1 | S | Haptic feedback (si supporté) + scale animation sur long-press. |
| F4 | Grille adaptative | P2 | M | En mode paysage tablette: 2 colonnes (sidebar + contenu). |
G. Performance & Robustesse
| # | Feature | Priorité | Effort | Description |
|---|---|---|---|---|
| G1 | Virtual scrolling | P2 | L | Pour les dossiers avec >1000 items, rendre seulement les éléments visibles. |
| G2 | Lazy loading des enfants | P1 | M | Ne charger les enfants d'un dossier que quand on l'expand (API ?folder=ID). |
| G3 | Cache navigateur | P1 | S | Cache le contenu des fichiers déjà chargés pour le preview hover. |
| G4 | Offline indicator | P3 | S | Bannière "You are offline" + queue des actions pour synchro au retour. |
| G5 | Rate limiting + retry | P1 | S | Retry automatique avec backoff exponentiel sur les appels API échoués. |
Résumé des priorités
P0 — Bloquant pour une expérience pro :
- A1 Multi-sélection
- A2 Raccourcis clavier
- A3 Inline rename
- B1 Vue détails/tableau
- B2 Tri
- D1 Indicateur dossier actif
P1 — Important pour la qualité perçue :
- A4 Drag count badge, A5 Undo toast, A6 Duplicate, A7 Copy/paste
- B3 Métadonnées, B4 Compteur, B5 Skeletons
- C1 Breadcrumb éditable
- D2 Badge compteur, D3 Drop indicator, D4 Scroll into view
- E2 Upload progress, E6 Thème cohérent
- F2 Bottom sheet mobile, F3 Touch feedback
- G2 Lazy loading, G3 Cache, G5 Retry
Estimation globale : ~4-6 semaines pour P0+P1 avec 1 développeur.
v2.1.0 — Intégrations Avancées (futur)
- API publique — REST API documentée pour usage externe
- Webhooks sortants — notifier des services externes
- n8n integration — nœud FlowDeck pour workflows
- Slack/Discord integration — notifications dans les channels
- Google Calendar sync — synchronisation bidirectionnelle
- Mobile PWA — Progressive Web App pour mobile
- PostgreSQL migration — si passage multi-tenant
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+
──────────────────────────────────────────────
52 fonctionnalités identifiées dans le gap analysis
│
├─ Bloc 1: Database Concept (v1.3) — 6 items ✅
├─ Bloc 2: Propriétés avancées (v1.4-1.5) — 14 items ✅
├─ Bloc 3: Vues manquantes (v1.6-1.7) — 10 items ✅
├─ Bloc 4: Sub-items & Deps (v1.8) — 7 items ✅
├─ Bloc 5: My Tasks (v1.9) — 7 items ✅
├─ Bloc 6: Éditeur complet (v2.0) — 8 items ✅
└─ Bloc 7: Fonctions transversales — +multi-user ✅
v2.0.0 ✅ v2.1.0 ✅ v2.2.0 ⬜
Editor+ Workspace Pro UX
Local