Files
flowdeck/ROADMAP.md
T
bruno ec96619341
FlowDeck CI / test (push) Failing after 5s
FlowDeck CI / docker (push) Has been skipped
docs: mark v4.1.0 as completed in ROADMAP
2026-07-21 21:56:31 -04:00

20 KiB
Raw Blame History

Roadmap FlowDeck — Notion Clone

Vision: Copie conforme de l'UI/UX Notion, intégrée à Gitea/GitHub. MVP en production : v4.0.0 — authentification locale/OAuth, pages blocs, sidebar, library, share/publish, intégrations. Branche principale : main (production) · develop (intégration) · feat/* (features).

🏗️ Stratégie de branches

main       ──●────────────●────── production (tags vX.Y.Z)
              \          /
develop       ●──●──●──●────── intégration continue
                  \  \  \
feat/xxx          ●  ●  ●──── feature branches
  • main : code en production, déploiement Docker automatique
  • develop : branche d'intégration, merges des feat/*
  • feat/<nom> : une branche par feature/fix, PR → code review → merge dans develop
  • Tags vX.Y.Z sur main pour chaque release

Workflow :

git checkout -b feat/mon-truc develop
# ... coder, commit, push ...
# Créer une PR feat/mon-truc → develop sur Gitea
# Après review + CI verte → merge
# Pour release: PR develop → main + tag vX.Y.Z

Règles :

  • Ne jamais commiter directement sur main
  • Une branche = une feature / un fix
  • Tests passent avant merge (CI Gitea Actions)
  • Commit + push après chaque modification significative

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

  • Tables collections, collection_pages, collection_views
  • Rétrocompatibilité Gitea via GiteaBoardCompat
  • Router /db — API CRUD collections + pages (12 endpoints)
  • 34/34 tests passent

v1.4.0 ✅ — Propriétés Avancées

  • Table collection_properties — 21 types Notion
  • Service property_types.py — validation, formatage, auto-values
  • 38/38 tests passent

v1.5.0 ✅ — Relations & Rollups

  • Type relation — lien bidirectionnel entre collections
  • Type rollup — aggregation via relation (COUNT, SUM, AVG, etc.)
  • Type formula — moteur d'expressions (19 fonctions)
  • Formula engine + Rollup engine
  • 43/43 tests passent

v1.6.0 ✅ — Vues Manquantes

  • Calendar, Gallery, List, Timeline, Table views
  • View tabs navigation
  • 49/49 tests passent

v1.7.0 ✅ — Vues Améliorées

v1.8.0 ✅ — Sub-items & Dépendances

  • View config API, Save view as
  • Sub-items (parent_id auto-référence)
  • Status aggregate, Dependencies (blocking constraint)
  • 56/56 tests passent

v1.9.0 ✅ — My Tasks & Dashboard Unifié

  • Vue /my-tasks — agrège pages assignées à l'utilisateur
  • Groupement par collection, filtres globaux
  • 60/60 tests passent

v2.0.0 ✅ — Éditeur Complet & Multi-Utilisateurs

  • Workspaces, Comments, Page History, Favorites
  • Database Templates, Page Templates, CSV Import/Export
  • Public Sharing
  • 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

  • Créer fichiers dans le repo (New file UI + API PUT)
  • Upload fichiers binaires (POST /upload, drag-drop)
  • Syntax highlighting via Prism.js CDN
  • Labels Gitea → tags FlowDeck (POST /sync-labels, 16 labels importés)
  • Historique commits par fichier (GET /commits?path=)

v2.9.0 ✅ — GitHub OAuth Provider

  • GitHubProvider dans app/auth/providers.py
  • GitHubAdapter dans app/services/github_adapter.py
  • Config GitHub dans .env.example

v3.0.0 ✅ — UX Professionnelle

  • Multi-sélection (checkboxes + Shift/Ctrl-click dans le sidebar)
  • Raccourcis clavier (Ctrl+N, F2, Delete, Escape, Ctrl+S)
  • Inline rename (double-clic → champ inline)
  • Loading skeletons (animations pulse dans workspaces + file viewer)
  • Grid/card view (mode grille/vignettes)
  • Table sorting (tri par colonnes)
  • Sélecteur de vue: Tree, List, Details, Title, Content (5 modes)
  • Preview Panel latéral (contenu, métadonnées, tags, actions)
  • Tri par date (Oldest/Newest)

v4.0.0 ✅ — Accounts, Integrations & Sharing (MVP)

  • auth_method sur users (local/gitea/github)
  • Badge OAuth dans sidebar
  • Settings page avec Connect/Disconnect Gitea + GitHub
  • Sidebar rules (Private = distant seulement, Trash local-only)
  • Library page avec tabs + filtres source (All/Local/Gitea/GitHub)
  • Modale Share (2 tabs: Share + Publish)
  • Page publique /p/<slug> (no auth, rendu HTML)
  • Table page_shares, colonnes is_published, is_shared, share_mode
  • Table recents — tracking automatique
  • Édition unifiée local/distant (même UI, bouton Commit pour Gitea)
  • 133 tests passent

🔜 Prochaines versions

v4.0.1 — Onboarding & Polish ✅ (2026-07-18)

Objectif : rendre l'app utilisable dès la première visite, sans friction. COMPLETED.

  • Landing page / pour visiteurs non-auth — template landing.html, design Notion dark
  • Page /auth/register GET — formulaire d'inscription dédié (tab register actif)
  • Redirection / intelligente — non-auth → landing, auth sans Gitea → local workspace, auth+Gitea → dashboard
  • Empty states — déjà présents dans local workspace (« Welcome to your Workspace »)
  • Page 404 stylisée — thème Notion sombre, JSON pour /api/*, HTML pour le reste
  • Unifier les routes API — /api/pages GET/POST → 307 redirect vers /board/api/pages
  • Page Settings — lien déjà présent dans le menu utilisateur (Settings → /accounts/settings)

v4.0.2 — Qualité & Robustesse ✅ (2026-07-18)

Objectif : zéro crash, zéro regression, DX impeccable.

  • Gestion d'erreurs — try/catch dans create_page, message user-friendly (500 JSON)
  • Validation inputs — login/register déjà validés, titre vide → "Untitled"
  • Rate limiting — 100 req/min/IP déjà en place, testé OK
  • Session expiry UX — redirect avec ?expired=1, bannière sur la page login
  • CSRF token refresh — auto-refresh sur 403, endpoint /api/csrf-token
  • Mobile responsive — sidebar slide-in, modales centrées, landing adaptative
  • Tests de non-régression — +10 tests (landing, register, 404, validation, duplicate, expiry)
  • 143 tests passent

v4.1.0 — Database: Data Sources & Linked Databases ✅ (2026-07-21)

Objectif : Collections multi-sources, databases liées (linked). COMPLETED. Doc : NOTION_DATABASE_TASKS_GUIDE.md Phase 1

  • Table collection_data_sources — multi-sources par collection (FK collection_id + source_collection_id, flag is_linked)
  • API sources — GET /db/{id}/sources/api (liste), POST /db/{id}/sources/api (ajouter), DELETE /db/{id}/sources/{sid}/api (retirer)
  • API linked DB — POST /db/{id}/linked/api (crée une collection liée : copie vues + propriétés + data source is_linked=1)
  • Full-page vs Inline — POST /db/{id}/toggle-inline/api (toggle), POST /db/inline/api (créer inline avec parent_page_id)
  • Règle permissions — linked DB hérite du workspace_id de la source → mêmes ACLs
  • Migration — ajout colonnes workspace_id, created_by sur collections
  • 153 tests passent (+10 nouveaux)

v4.2.0 — Database: Templates & Dashboards

Objectif : Templates réutilisables + dashboards combinant vues/widgets. Doc : NOTION_DATABASE_TASKS_GUIDE.md Phase 2

  • Table collection_templates — avec récurrence (daily/weekly/monthly/yearly)
  • Table collection_dashboards — layout widgets (grille configurable)
  • API templates — CRUD + POST apply
  • API dashboards — CRUD widgets (view_id, position, taille)
  • UI template picker — dropdown New avec templates
  • UI dashboard view — combinaison de vues/widgets sur une page

v4.3.0 — Database Views complètes (10 types)

Objectif : Tous les types de vues Notion avec layouts. Doc : NOTION_DATABASE_TASKS_GUIDE.md Phase 3

  • Chart — barres, courbes, camemberts, donuts, scatter (Chart.js)
  • Form — formulaire HTML → POST création page
  • Map — Leaflet/OSM pour propriété Place
  • Feed — vue chronologique type fil d'actualité
  • Timeline/Gantt — barres horizontales avec dépendances
  • Layout options — card size, preview, open in peek/side/full
  • View tabs — navigation fluide entre vues (existant à enrichir)

v4.4.0 — Tasks, Sub-items & Dependencies

Objectif : Système complet de tâches Notion-style. Doc : NOTION_DATABASE_TASKS_GUIDE.md Phase 4

  • Flag is_task sur collections — Turn into Tasks
  • Propriété ID auto-générée (TASK-XXX)
  • Sub-items — parent_id enrichi, modes d'affichage (nested/flattened/card)
  • Table page_dependencies — bloque/bloqué par
  • API dependencies — POST/GET/DELETE /db/{c}/pages/{p}/dependencies
  • Auto-shift dates — overlap / maintain_time / never + skip weekends
  • UI dépendances — graphe ou liste, toggle sub-items
  • Filtres sub-items — parents only / all / sub-items only

v4.5.0 — Sprints & My Tasks

Objectif : Sprints agiles + vue My Tasks cross-databases. Doc : NOTION_DATABASE_TASKS_GUIDE.md Phase 5

  • Tables sprints, sprint_pages — sprints agiles
  • API sprints — CRUD + assignation pages, vélocité
  • Sprint board — Current Sprint / Planning / Backlog
  • Burndown chart — vélocité, points complétés vs restants
  • My Tasks — agrégation cross-databases (toutes les task DBs)
  • My Tasks API — /my-tasks?view=all|today|overdue|upcoming
  • My Tasks UI — groupes par collection, status badges, filtres

v4.6.0 — Content Blocks enrichis

Objectif : parité d'édition avec Notion.

  • 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 (déjà partiel)
  • Multi-colonnes — layout flexible (2, 3 colonnes)

v4.7.0 — Export

  • Export Markdown — avec images et sous-pages (déjà partiel dans editor)
  • Export PDF — mise en page fidèle, table des matières
  • Export HTML — site statique standalone

v4.8.0 — Collaboration

  • Inline comments — commentaires sur sélection de texte
  • @mentions — notifier un utilisateur → page/commentaire
  • Email notifications — changements, mentions

v4.9.0 — FlowDeck Agent (Agent IA natif)

Objectif : Un agent IA intégré à FlowDeck, capable de planifier, rechercher et agir directement sur les workspaces — collections, pages, propriétés, vues, issues Gitea. Inspiré de Notion Agent (2026).

Documentation :

docs/Flowdeck_Agent_integration.md (702 lignes) · docs/Guide_Complet_Notion_Agent_2026.md (464 lignes)

Concept

Là où un assistant IA classique répond (prompt → réponse), FlowDeck Agent réalise :
objectif → planification → collecte contexte → actions API → résultat

Notion AI FlowDeck Agent
Répond, résume, réécrit Planifie, recherche, agit
Bloc de texte Crée collections, pages, propriétés, vues
Sans état Historique conversation + snapshots rollback
Aucune action DB Modifie le workspace via API FastAPI existantes

Fonctionnalités clés

  • Interface conversationnelle — panneau agent dans le sidebar (🤖 Agents) + popup chat
  • Boucle ReAct — Raisonnement → Action → Observation → itération (max 12 tours)
  • Streaming SSE — affichage temps réel du raisonnement et des actions
  • 10+ outils actionnables — search, read/write collections/pages, views, properties, Gitea sync
  • Permissions — même ACL que l'utilisateur (PermissionManager), audit log + rollback
  • Contexte automatique — workspace actif, pages mentionnées, fichiers uploadés
  • Custom agents — instructions, modèle, outils, scope par agent
  • Déclencheurs — planifiés, webhooks, événements workspace
  • Skills réutilisables — templates d'instructions + outils (ex: "Rédiger rapport hebdo")
  • Multi-LLM — GPT, Claude, Gemini, modèles locaux (Ollama)

Architecture (nouveaux composants)

app/
├── routers/agent.py        — /api/agent/* (run, conversations, tools)
├── services/agent_engine.py — Orchestrateur ReAct + boucle tool calls
├── services/llm_client.py   — Abstraction multi-fournisseur LLM
├── services/tool_registry.py — 10+ outils wrappant les API existantes
├── services/context_builder.py — Collecte contexte workspace
└── templates/
    ├── agent_panel.html     — Panneau conversation Alpine.js
    └── agent_message.html   — Fragment message (streaming)

Nouvelles tables

Table Rôle
agents Config agent (nom, instructions, modèle, tools scope)
agent_conversations Sessions (titre, agent, workspace, statut)
agent_messages Messages (role, content, tool_calls, artifacts)
agent_actions Journal d'audit (tool, args, result, undo_snapshot)
agent_skills Skills réutilisables (nom, prompt template, outils)
agent_triggers Déclencheurs (cron, webhook, event, agent cible)

Cas d'usage FlowDeck

  • Créer un CRM complet — agent crée collection, propriétés, vues, exemples
  • Résumer les notes de réunion — lit les pages, synthétise, crée une page résumé
  • Générer des OKR — crée la database OKR avec relations et vues
  • Analyser un repo Gitea — lit les issues, crée un dashboard de suivi
  • Rédiger un rapport hebdomadaire — agrège les pages modifiées, génère le rapport

Plan de migration (5 phases)

  1. Phase 1 — Core Agent : AgentEngine + LLMClient + 3 outils (search, read, create) + SSE streaming
  2. Phase 2 — UI : agent_panel.html, historique conversations, sélecteur de modèle
  3. Phase 3 — Outils avancés : 7 outils supplémentaires (views, properties, Gitea, uploads)
  4. Phase 4 — Autonomie : custom agents, skills, déclencheurs planifiés
  5. Phase 5 — Plateforme : API publique agent → intégrations tierces, marketplace skills

Limitations (v1)

  • Pas de modification concurrente (lock optimiste DB)
  • Pas d'appels API externes non-FlowDeck (sandbox strict)
  • Budget tokens max par conversation (500k tokens)
  • Timeout 5 minutes par run

v5.0.0 — Command Palette & Recherche

  • Command palette — Ctrl+K / Ctrl+P recherche universelle
  • Quick actions — navigation, création, commandes

v5.1.0 — Automations

  • Database automations — if-this-then-that
  • Buttons — cliquables déclenchant actions

v5.2.0 — Infrastructure & Polish

Objectif : Qualité de code, design system, backup, CI/CD. Items issus de l'ancien docs/ROADMAP.md (v3.0)

Design system

  • Design tokens — design-tokens.css (couleurs, espacements, typographie unifiés)
  • Composants réutilisables — boutons, inputs, modales, dropdowns, toasts

Sécurité & Utilisateur

  • API Tokens — générer/révoquer des clés API utilisateur
  • Sessions actives — voir et révoquer les sessions
  • Onboarding wizard — /welcome au premier lancement (créer compte → lier forges → premier projet)

Infrastructure

  • Migrations versionnées — Alembic ou table schema_version
  • Backup automatique — cron daily → fichier daté
  • Index manquants — users.email, forge_connections.user_id
  • Linting — ruff (Python), eslint (JS)
  • Tests parallèles — pytest-xdist
  • Build Docker multi-stage — optimiser taille d'image

Forge integration

  • DB: table projects — type (builtin/gitea/github), forge_id, clone_url, default_branch, language
  • Cron: sync périodique des projets — configurable (défaut: chaque heure)
  • GitHubAdapter complet — API GitHub v3 → interface ForgeAdapter

Tests (cibles)

  • 143 tests — cible 100+ atteinte ✅
  • Tests d'intégration auth (OAuth mock)
  • Tests des adapters forge (mock HTTP)
  • Tests multi-user (permissions croisées)

v5.3.0 — Database Avancée

  • Inline databases dans n'importe quelle page
  • Templates de database (Project tracker, CRM…)
  • Validation des propriétés (required, unique, min/max)

v6.0.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
  • API publique — REST API + webhooks documentés
  • Realtime editing — WebSocket, curseurs multi-utilisateurs
  • Synced blocks — bloc synchronisé entre plusieurs pages

Résumé des phases

v0.x–v1.x ✅          v2.x ✅              v3.0.0 ✅       v4.0.0 ✅    v4.0.1 ✅
Base + Kanban         Éditeur + Gitea      UX Pro          MVP          Onboarding
+ DB + Auth           + Workspaces         + Multi-select  Accounts     & Polish
+ UI Notion           + Tags + Admin                       + Sharing    COMPLETED
                      + GitHub OAuth                       + Library

v4.0.2 ✅    v4.1.0 ✅    v4.2–4.5 ⬜   v4.6.0 ⬜    v4.7.0 ⬜    v4.8–4.9 ⬜   v5.x–v6.0 ⬜
Quality     Data Sources  Templates +  Content      Export       Collab +     Pro + Agent
& Tests     & Linked DB   Views/Tasks  Blocks       PDF/MD       Agent IA     (futur)
            📚 NOTION_DATABASE_TASKS_GUIDE.md v2.0

Dernière mise à jour: 2026-07-21 — v4.1.0 Data Sources & Linked Databases complété ✅