- 4 nouvelles vues HTML: calendar (grid mensuel), gallery (cartes), list (compacte), timeline (Gantt)
- Navigation entre vues via tabs (Table/Board/Calendar/Gallery/List/Timeline)
- _render_view dispatcher + _base_html template commun
- Routes: GET /db/{id}/view/{calendar,gallery,list,timeline}
- Default view = table (SSR avec properties)
- 49/49 tests passent (+6 tests v1.6)
- Version 1.5.0 → 1.6.0
11 KiB
11 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
Upcoming
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 (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_iddanscollection_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-itemavec indentation visuelle - Compteur de sous-tâches sur la carte parent
- CSS
- 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
BlocksetBlocked bycréé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_userETStatus ≠ 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 ✅ (complété)
├─ Bloc 3: Vues manquantes (v1.6-1.7) — 10 items (6/10 ✅)
├─ 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