- app/services/realtime_merge.py : merge à 3 voix diff3-lite, regions disjointes conservees, conflit par champ + drapeau - protocole base (client embarque la base de sa saisie) ; sans base -> LWW historique (retro-compat) - ack renvoie le bloc fusionne + conflict ; adoption cote client + toast ; broadcast du resultat fusionne - broadcast non bloquant : file sortante + tache writer par connexion, coalescence des curseurs - clients trop lents deconnectes (4413), budget ops anti-flood (400/10s) - fix fuite room 4404 + room_state() sur page inexistante - GET /api/realtime/stats (observabilite) - 26 tests test_realtime_v64.py ; suite 725 verte ; ruff + eslint OK ; version 6.4.0
100 lines
3.4 KiB
Markdown
100 lines
3.4 KiB
Markdown
# FlowDeck
|
||
|
||
Clone complet de **Notion** intégré nativement à **Gitea** — Databases, Pages, Kanban, Calendar, Gallery, Timeline, List, Multi-Users.
|
||
|
||
> **v6.4.0** — Realtime production (merge 3-voix, broadcast non bloquant), API publique v2, PWA offline
|
||
|
||
## Quick Start
|
||
|
||
```bash
|
||
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 (v6.3)
|
||
- **API publique REST v2**: `/api/v2` — CRUD complet, Bearer + scopes `read/write/admin`, pagination, filtres, erreurs RFC 7807, idempotence, audit — [guide](docs/API_GUIDE_V6.md) · OpenAPI `/docs`
|
||
- **API publique v1**: `/api/v1` (lecture seule, compat)
|
||
- **Webhooks sortants**: gestion + dispatcher d'événements (CRUD v2)
|
||
- **Web Clipper**: extension navigateur Manifest V3 (article/sélection/bookmark/screenshot)
|
||
- **PWA**: manifest.json + service worker, offline support
|
||
|
||
### UI Notion-Style (v1.1–v1.2)
|
||
- Sidebar gauche avec sections hiérarchiques
|
||
- Topbar avec breadcrumbs (workspace > projet > page)
|
||
- Dark mode Notion: `#191919` fond, `#222222` sidebar
|
||
- É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
|
||
|
||
```env
|
||
GITEA_URL=https://git.dracodev.net
|
||
GITEA_TOKEN=votre_token
|
||
APP_PORT=8080
|
||
DATABASE_URL=sqlite:////data/flowdeck.db
|
||
```
|
||
|
||
## Tests
|
||
|
||
```bash
|
||
python3 -m pytest tests/ -v # 725/725 passent
|
||
```
|
||
|
||
## Roadmap
|
||
|
||
Voir [ROADMAP.md](ROADMAP.md) — 7/7 blocs complétés, 52/52 features ✅
|
||
|
||
## Licence
|
||
|
||
MIT
|