# 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) --- ## Upcoming ### v1.3.0 — Database Concept (Bloc 1 du gap analysis) - [ ] **Table `collections`** — base de données abstraite, indépendante de Gitea - `id`, `name`, `description`, `icon`, `schema_json` - Optionnellement liée à Gitea (`gitea_owner`, `gitea_repo`) - Supporte les templates de database - [ ] **Table `collection_pages`** — remplace `cards`, pages génériques - `collection_id`, `title`, `position`, `parent_id`, `property_values_json` - `gitea_issue_id` optionnel pour les pages liées à Gitea - Auto-propriétés : `created_at`, `updated_at`, `created_by`, `updated_by` - [ ] **Table `collection_views`** — vues configurables par collection - `name`, `view_type` (table/board/calendar/timeline/gallery/list) - `config_json` (filtres, tris, group_by, visible_properties, card_size...) - `position` pour l'ordre des onglets - [ ] **Rétrocompatibilité Gitea** — adaptateur `GiteaBoardCompat` - Les boards Gitea existants deviennent des collections automatiquement - Migration transparente des `cards` → `collection_pages` - [ ] **Database lock** — mode lecture seule (`collections.is_locked`) - [ ] **Database description** — texte riche au-dessus de la database ### v1.4.0 — Propriétés Avancées (Bloc 2) - [ ] **Table `collection_properties`** — remplace `project_properties` - Liée à `collections` (pas à `project_owner/name`) - Supporte tous les types Notion - [ ] **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 - [ ] **Migration** `project_properties` → `collection_properties` ### v1.5.0 — Relations & Rollups (Bloc 2 suite) - [ ] **Type `relation`** — lien bidirectionnel entre collections - `related_collection_id`, `reverse_name` auto-généré - Stockage : JSON array de page IDs dans `property_values_json` - [ ] **Type `rollup`** — agrégation via relation - Functions : COUNT, COUNT_VALUES, SUM, AVG, MEDIAN, MIN, MAX, RANGE, UNIQUE - Dépend de `relation_property_id` + `target_property_id` - [ ] **Type `formula`** — propriétés calculées - Moteur d'expressions JavaScript-like - Fonctions : `prop()`, `now()`, `today()`, `if()`, `concat()`, `round()`, etc. - [ ] **Formula engine** — `services/formula_engine.py` - [ ] **Rollup engine** — `services/rollup_engine.py` ### v1.6.0 — Vues Manquantes (Bloc 3) - [ ] **Calendar view** — regroupement par propriété Date (jour/semaine/mois) - Template `calendar_view.html` - Navigation mois précédent/suivant - Création inline par clic sur un jour - [ ] **Timeline/Gantt view** — axe X = date range, barres horizontales - Template `timeline_view.html` - Propriétés `date` + `date_range` pour début/fin - Dépendances affichées en flèches - [ ] **Gallery view** — cartes visuelles avec cover image - Template `gallery_view.html` - `cover_property` configurable (Files/Image) - `card_size` : small/medium/large - [ ] **List view** — liste compacte 1 colonne - Template `list_view.html` - Preview du contenu sous le titre ### v1.7.0 — Vues Améliorées (Bloc 3 suite) - [ ] **Group_by configurable** — Kanban groupé par n'importe quelle propriété Select/Status - Plus seulement les labels Gitea - UI de sélection du group_by dans la barre d'outils - [ ] **Visible properties par vue** — toggle colonnes dans chaque vue - [ ] **Card size** — small/medium/large pour board et gallery - [ ] **Cover image property** — choisir la propriété de cover - [ ] **Groupes de filtres** — (A OR B) AND C, UI de construction de filtres - [ ] **Save view as** — sauvegarder état courant comme nouvelle vue ### v1.8.0 — Sub-items & Dépendances (Bloc 4) - [ ] **Sub-items sur cartes Kanban** — `parent_id` dans `collection_pages` - Auto-référence : une page peut être enfant d'une autre dans la même collection - [ ] **Affichage imbriqué** — cartes indentées sous le parent dans le board - CSS `.sub-item` avec indentation visuelle - Compteur de sous-tâches sur la carte parent - [ ] **Bouton "+ Sub-item"** — création inline de sous-tâche - [ ] **État parent = agrégation enfants** — "Done" seulement si tous enfants Done - [ ] **Dependencies (Blocking ↔ Blocked by)** - 2e relation auto-référencée - Propriétés `Blocks` et `Blocked by` créées automatiquement - [ ] **Contrainte de dépendance** — empêcher "Done" si bloque des tâches non terminées - [ ] **Flèches de dépendance** — visuel dans Timeline et Kanban ### v1.9.0 — My Tasks & Dashboard Unifié (Bloc 5) - [ ] **Vue `/my-tasks`** — agrège toutes les pages assignées à l'utilisateur - Scan cross-collection (toutes les databases du workspace) - Filtre automatique : `Assignee = current_user` ET `Status ≠ Done` - [ ] **Groupement par collection** — sections par database d'origine - [ ] **Filtres globaux** — Status, Due Date, Collection - [ ] **Calendrier intégré** — My Tasks en vue calendrier - [ ] **Vue Today** — ce qui est dû aujourd'hui - [ ] **Vue Overdue** — tâches en retard - [ ] **Vue Upcoming** — 7 prochains jours ### v2.0.0 — Éditeur Complet & Multi-Utilisateurs (Blocs 6-7) - [ ] **Drag blocks to reorder** — réorganisation des blocs dans l'éditeur - [ ] **Colonnes (2, 3, 4, 5)** — layout multi-colonnes dans l'éditeur - [ ] **Callout blocks** — bloc avec icône et fond coloré - [ ] **Toggle blocks** — bloc repliable - [ ] **Code blocks avec syntax highlighting** — highlight.js - [ ] **Image resize/alignment** — redimensionnement et alignement - [ ] **Embeds** — vidéo, fichier, bookmark web - [ ] **Database templates** — structures de database réutilisables - [ ] **Page templates** — pages modèles dans une database - [ ] **Inline databases** — databases embarquées dans une page - [ ] **Linked databases** — même database affichée dans plusieurs pages - [ ] **Multi-user workspaces** — collaboration temps réel - Workspaces partagés avec permissions (read/write/admin) - User presence (qui est en ligne, qui édite quelle page) - Historique des modifications par page - Commentaires sur les pages (pas juste les issues Gitea) - [ ] **Favorites** — système de favoris fonctionnel - [ ] **CSV import/export** pour databases - [ ] **Public sharing** — lien de partage public pour une vue ### 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 v1.8.0 ⬜ v1.9.0 ⬜ v2.0.0 ⬜ v2.1.0 ⬜ Sub-items My Tasks Editor+ Future Multi-user ```