docs: ROADMAP v1.3-v2.1 + ARCHITECTURE v2.0 complète
ROADMAP.md: - 52 fonctionnalités manquantes organisées en 7 phases (v1.3 → v2.1) - v1.3: Database Concept (collections, pages, views) - v1.4-v1.5: Propriétés avancées (number, checkbox, status, relation, rollup, formula) - v1.6-v1.7: Vues manquantes (calendar, timeline, gallery, list, group_by, filters) - v1.8: Sub-items & Dépendances - v1.9: My Tasks & Dashboard unifié - v2.0: Éditeur complet + Multi-utilisateurs - v2.1: Intégrations avancées (API, webhooks, n8n, mobile PWA) ARCHITECTURE.md (63 Ko, 15 sections): - Architecture système complète (schéma ASCII détaillé) - Modèle de données: 22 tables SQL (existantes + nouvelles) - Diagramme des relations entre tables - Routes API complètes: 80+ endpoints documentés - Frontend: layout, 6 vues, composants réutilisables - Authentification OAuth2 + modèle de permissions multi-user - Intégration Gitea: flux, sync, adaptateur de compatibilité - Système de propriétés: 18 types, formula engine, rollup engine - Système de vues: config JSON, chaîne de rendu - Sub-items: auto-référence, affichage imbriqué - Dépendances: contraintes, flèches timeline - My Tasks: algorithme d'agrégation cross-collection - Éditeur de blocs: 15+ block types, format JSON - Multi-utilisateurs: workspaces, ACL, historique, commentaires - Déploiement: Docker Compose + migration PostgreSQL
This commit is contained in:
+1293
-86
File diff suppressed because it is too large
Load Diff
+194
-9
@@ -3,34 +3,219 @@
|
||||
> **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.
|
||||
|
||||
## v0.2.0 ✅ — Base
|
||||
## Completed
|
||||
|
||||
### v0.2.0 ✅ — Base
|
||||
Dashboard + Board Kanban + Gitea sync + Notes + Docker
|
||||
|
||||
## v0.3.0 ✅ — Auth
|
||||
### v0.3.0 ✅ — Auth
|
||||
OAuth2 Gitea, token par utilisateur, CSRF, rate limiting, webhooks
|
||||
|
||||
## v0.4.0 ✅ — UI Notion
|
||||
### v0.4.0 ✅ — UI Notion
|
||||
Layout 3 zones (sidebar 240px + topbar 44px), dark mode, CSS 31KB, Alpine.js
|
||||
|
||||
## v0.5.0 ✅ — Kanban
|
||||
### v0.5.0 ✅ — Kanban
|
||||
Colonnes, groupes, cartes enrichies, drag&drop, modale détail, checklists, commentaires
|
||||
|
||||
## v0.6.0 ✅ — Table View
|
||||
### v0.6.0 ✅ — Table View
|
||||
6 colonnes triables, groupes rétractables
|
||||
|
||||
## v0.7.0 ✅ — Filtres & Tri
|
||||
### v0.7.0 ✅ — Filtres & Tri
|
||||
Filtres cumulables AND, status dropdown, sort multi-critères
|
||||
|
||||
## v0.8.0 ✅ — Vues Spéciales
|
||||
### v0.8.0 ✅ — Vues Spéciales
|
||||
Status Overview (donut SVG), Team Load (barres), Detailed Board
|
||||
|
||||
## v0.9.0 ✅ — Backend
|
||||
### v0.9.0 ✅ — Backend
|
||||
Propriétés custom, AI keywords, sync API, 12 tables DB
|
||||
|
||||
## v1.0.0 ✅ — Production
|
||||
### 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
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user