4038e9bdadb2ff05500655ae2b351c295d1f3092
Template-created pages (weekly report, project doc, meeting notes, to-do list, ...) were persisted without block ids. The editor assigned ids client-side, but the realtime room loaded the raw id-less content and sent it back on 'sync'; applySync then merged id-less server blocks with local blocks, producing data-bid='undefined' collisions and duplicated/shuffled lines as soon as the user edited. Editing an empty page was unaffected because the server state was empty. Fixes: - board.use_page_template: materialize unique block ids (recursively) when instantiating built-in or user templates. - realtime_server: unique block_id() (uuid) + ensure_block_ids() on room load and on insert ops. - editor: recursive ensureBlockIds() in init; gtTok() now restores [[fddate:...]] tokens (date chips survived as labels before). - realtime client: applySync() normalizes ids, no longer appends unknown local blocks (duplication), and keeps local content when server is empty. Tests: pytest (templates + realtime) and Playwright e2e covering to-do list, weekly report date chip, Enter ordering and legacy id-less repair.
feat(wiki,templates): v5.11.0 wiki-links & mentions + v5.12.0 templates & page lock (release 5.12.0)
feat(wiki,templates): v5.11.0 wiki-links & mentions + v5.12.0 templates & page lock (release 5.12.0)
feat(wiki,templates): v5.11.0 wiki-links & mentions + v5.12.0 templates & page lock (release 5.12.0)
feat(wiki,templates): v5.11.0 wiki-links & mentions + v5.12.0 templates & page lock (release 5.12.0)
FlowDeck
Clone complet de Notion intégré nativement à Gitea — Databases, Pages, Kanban, Calendar, Gallery, Timeline, List, Multi-Users.
v2.1.0 — API publique, Webhooks sortants, PWA
Quick Start
cp .env.example .env
# Éditer .env avec votre token Gitea
docker compose up -d
# → http://localhost:8080
Features
Database & Properties (v1.3–v1.5)
- Collections: databases indépendantes de Gitea, schéma JSON
- 21 types de propriétés: title, text, number, select, status, date, person, checkbox, url, email, phone, files, unique_id, relation, rollup, formula + auto-props
- Relations bidirectionnelles + Rollups (12 agrégations) + Formulas (19 fonctions)
- GiteaBoardCompat: adaptateur boards Gitea legacy → Collections
Vues Multiples (v1.6–v1.7)
- Table: colonnes SSR, triables
- Board (Kanban): colonnes, groupes, drag & drop
- Calendar: grid mensuel, navigation, événements
- Gallery: cartes visuelles, card_size configurable
- List: vue compacte avec preview
- Timeline: barres Gantt horizontales
- Status Overview: Donut chart SVG
- Team Load: Barres empilées
Sub-items & Dépendances (v1.8)
- Sub-items: parent_id auto-référence, hiérarchie illimitée
- Status aggregate: parent = Done si tous enfants Done
- Dependencies: Blocking/Blocked by, contrainte de transition
My Tasks (v1.9)
- Dashboard cross-collection agrégeant toutes les tâches assignées
- Vues: All, Today, Overdue, Next 7 days
Multi-User & Collaboratif (v2.0)
- Workspaces: espaces partagés avec rôles (admin, editor, commenter, viewer)
- Comments: commentaires threadés sur les pages
- Page History: historique des modifications avec snapshots
- Favorites: favoris par utilisateur
- Templates: database + page templates
- CSV Import/Export
- Public Sharing: lien de partage lecture seule
API & Intégrations (v2.1)
- API publique REST:
/api/v1avec token auth - Webhooks sortants: gestion + dispatcher d'événements
- PWA: manifest.json, prêt pour installation mobile
UI Notion-Style (v1.1–v1.2)
- Sidebar gauche avec sections hiérarchiques
- Topbar avec breadcrumbs (workspace > projet > page)
- Dark mode Notion:
#191919fond,#222222sidebar - Éditeur de blocs: slash menu (/), navigation clavier, placeholders
Intégration Gitea
- Issues Gitea → cartes, sync labels, milestones, assignees, due dates
- OAuth2 Gitea, CSRF, rate limiting, webhooks
Stack
| Couche | Techno |
|---|---|
| Frontend | Jinja2 + HTMX + Alpine.js + SortableJS + CSS |
| Backend | Python 3.12 + FastAPI + httpx |
| BDD | SQLite (WAL, 21 tables) — /data/flowdeck.db |
| Déploiement | Docker (python:3.12-slim), docker-compose |
Configuration
GITEA_URL=https://git.dracodev.net
GITEA_TOKEN=votre_token
APP_PORT=8080
DATABASE_URL=sqlite:////data/flowdeck.db
Tests
python3 -m pytest tests/ -v # 73/73 passent
Roadmap
Voir ROADMAP.md — 7/7 blocs complétés, 52/52 features ✅
Licence
MIT
Languages
Python
58.1%
JavaScript
21.3%
HTML
17.3%
CSS
3.3%