- Service serveur app/services/export.py: conversion blocs vers Markdown / HTML / PDF
- 4 endpoints: /api/export/markdown|html|pdf|site/{page_id}
- Export Markdown complet (tous les blocs + images + sous-pages recursives)
- Export PDF via xhtml2pdf (pur Python, aucune lib systeme)
- Export HTML standalone self-contained (styles inline)
- Export Site: zip multi-pages (index.html + une page par sous-page)
- UI: menu 'More > Export' dans l'editeur (Markdown, HTML, PDF, Site .zip)
- Tests: 190 passing (6 nouveaux)
21 KiB
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 automatiquedevelop: branche d'intégration, merges desfeat/*feat/<nom>: une branche par feature/fix, PR → code review → merge dansdevelop- Tags
vX.Y.Zsurmainpour 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_methodsur 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, colonnesis_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 — templatelanding.html, design Notion dark - Page
/auth/registerGET — 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/pagesGET/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.mdPhase 1
- Table
collection_data_sources— multi-sources par collection (FKcollection_id+source_collection_id, flagis_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 sourceis_linked=1) - Full-page vs Inline —
POST /db/{id}/toggle-inline/api(toggle),POST /db/inline/api(créer inline avecparent_page_id) - Règle permissions — linked DB hérite du
workspace_idde la source → mêmes ACLs - Migration — ajout colonnes
workspace_id,created_bysurcollections - 153 tests passent (+10 nouveaux)
v4.2.0 — Database: Templates & Dashboards ✅ (2026-07-21)
Objectif : Templates réutilisables + dashboards combinant vues/widgets. COMPLETED.
- Table
page_templatesenrichie — colonnesdescription,is_recurring,recurrence_rule(daily/weekly/monthly/yearly) - Table
collection_dashboards— layout widgets (grille configurable :columns,widgetsavecview_id,x,y,width,height) - API templates CRUD complet —
PUT /workspace/collections/{id}/templates/page/{tid}(update),DELETE(delete) - API dashboards CRUD —
GET/POST/PUT/DELETE /workspace/collections/{id}/dashboards - 159 tests passent (+6 nouveaux)
v4.3.0 — Database Views complètes (10 types) ✅ (2026-07-21)
Objectif : Tous les types de vues Notion avec layouts. COMPLETED.
- Chart — barres, courbes, camemberts, donuts, scatter (Chart.js CDN)
- Form — formulaire HTML auto-généré depuis les propriétés → POST création page
- Map — Leaflet/OSM pour propriété Place (lat,lng parsing)
- Feed — vue chronologique type fil d'actualité (newest first)
- Timeline/Gantt — barres horizontales avec group_by et plages de dates
- View tabs — 11 onglets de navigation (table, board, calendar, gallery, list, timeline, gantt, chart, form, map, feed)
- Layout options — card_size, chart_type, group_by, place_property via config_json
- 166 tests passent (+7 nouveaux)
v4.4.0 — Tasks, Sub-items & Dependencies ✅ (2026-07-21)
Objectif : Système complet de tâches Notion-style. COMPLETED.
- Flag
is_tasksur collections — PUT /db/{id}/toggle-task/api (Turn into Tasks) - Table
page_dependencies— bloque/bloqué par/related avec auto_shift - API dependencies — GET/POST/DELETE /db/{c}/pages/{p}/dependencies/api
- Auto-shift dates — POST /db/{c}/pages/{p}/auto-shift/api (skip_weekends option)
- 171 tests passent (+5 nouveaux)
v4.5.0 — Sprints & My Tasks ✅ (2026-07-21)
Objectif : Sprints agiles + vue My Tasks cross-databases. COMPLETED.
- Tables
sprints,sprint_pages— sprints agiles avec velocity_points - API sprints — CRUD + assignation/retrait pages
- Burndown chart — GET /workspace/collections/{id}/sprints/burndown/{sid} (total/completed/remaining/ideal)
- My Tasks — agrégation cross-databases avec filtre (all/today/overdue/upcoming)
- 175 tests passent (+4 nouveaux)
v4.6.0 — Content Blocks enrichis ✅ (2026-09-02)
Objectif : parité d'édition avec Notion.
- Callout blocks — boîtes colorées avec sélecteur d'emoji/icône
- Table of contents — auto-généré depuis les headings avec ancres
- Math equations — LaTeX / KaTeX (self-hosted) block
- Toggle lists — contenu expandable/collapsible avec enfants
- Multi-colonnes — layout flexible (2, 3 colonnes) + bouton ajouter/retirer colonne
Détails livrés :
- 5 types de blocs enrichis dans le slash menu (callout, table_of_contents, math, columns, toggle)
- Rendu des nouveaux blocs dans les pages publiques (
/p/<slug>) — TOC ancré, KaTeX, colonnes, toggle<details> - Intégration KaTeX 0.16.11 self-hosté (
/static/js/katex.min.js,/static/css/katex.min.css,/static/fonts/) - Persistance
children(colonnes/toggle) via le format de blocs JSON - Export Markdown étendu aux nouveaux blocs
- 183 tests au total (dont 5 nouveaux tests v4.6.0)
v4.7.0 — Export ✅ (2026-09-03)
Objectif : exporter une page (ou un site) depuis l'éditeur.
- Export Markdown — avec images et sous-pages (récursif)
- Export PDF — via xhtml2pdf (fidèle, sans CDN/lib système)
- Export HTML — site statique standalone (document autonome + site .zip)
Détails livrés :
- Service serveur
app/services/export.py: conversion blocs → Markdown / HTML / PDF - 4 formats exposés :
/api/export/markdown|html|pdf|site/{page_id} - Sous-pages incluses récursivement (Markdown et site)
- UI : menu « More › Export » dans l'éditeur (Markdown, HTML, PDF, Site .zip)
- PDF généré via
xhtml2pdf(pip) — aucun lib système requise - 6 nouveaux tests (Markdown, sous-pages, HTML, PDF, Site, 404)
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)
- Phase 1 — Core Agent : AgentEngine + LLMClient + 3 outils (search, read, create) + SSE streaming
- Phase 2 — UI : agent_panel.html, historique conversations, sélecteur de modèle
- Phase 3 — Outils avancés : 7 outils supplémentaires (views, properties, Gitea, uploads)
- Phase 4 — Autonomie : custom agents, skills, déclencheurs planifiés
- 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 —
/welcomeau 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.0 ✅ v4.3.0 ✅ v4.4.0 ✅ v4.5.0 ✅ v4.6.0 ✅ v4.7.0 ✅ v4.8–4.9 ⬜ v5.x–v6.0 ⬜
Quality Data Sources Templates + 10 Views Tasks & Sprints & Content Export Collab + Pro + Agent
& Tests & Linked DB Dashboards complets Dependencies My Tasks Blocks MD/PDF/HTML Agent IA (futur)
*Dernière mise à jour: 2026-09-03 — v4.7.0 Export complété ✅*