Aucun nom public d'une autre app dracodev n'est codé en dur dans le code vivant : nouveau module app/services/draco_urls.py (env > config > défaut officiel, jamais de -dev en défaut). CSP connect-src/frame-src, bouton SSO ObsiGate, révocations SSO, événements agent, preset MCP TikTak, barre commune, panneau Spark (injection hôte DRACO_PANNEAU_CONFIG), refs croisées (hôte configuré + officiel reconnus, URL d'affichage reconstruite, aucune donnée stockée migrée), User-Agent OG, liens Gitea. Variables ajoutées DRACO_AGENT_URL/TIKTAK_URL/KANBANTE_URL/FLOWDECK_URL, réutilisées DRACO_SSO_URL/OAUTH_REDIRECT_URI/AGENT_EVENEMENTS_URL/GITEA_URL/APP_BASE_URL. Version 7.82.0.
121 lines
4.9 KiB
Markdown
121 lines
4.9 KiB
Markdown
# FlowDeck
|
||
|
||
Clone complet de **Notion** intégré nativement à **Gitea** — Databases, Pages, Kanban, Calendar, Gallery, Timeline, List, Multi-Users.
|
||
|
||
> **7.3.9** — audit sécurité P0→P2 (A1–A26, A33–A36, A43 : auth 401 partout, CSRF sans exemption cookie-auth, SSRF, autoescape, logs d'exceptions) · avant : v6.7.x SSO/SAML + OIDC, v6.6.x agent API, v6.5.x synced blocks, v6.4.0 realtime, 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–v6.6)
|
||
- **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 agent publique (v6.6)**: `/api/v2/agents/*` — agents, conversations, **run synchrone JSON**, journal d'actions + rollback, `trigger` externe
|
||
- **Marketplace de skills (v6.6)**: export/import portable + galerie de 6 presets installables (`/api/v2/skills/*`), section « Galerie » dans la palette `/` de l'agent
|
||
- **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.13 + FastAPI + httpx |
|
||
| BDD | SQLite (WAL, 21 tables) — `/data/flowdeck.db` |
|
||
| Déploiement | Docker (python:3.13-slim), docker-compose |
|
||
|
||
## Configuration
|
||
|
||
```env
|
||
GITEA_URL=https://git.dracodev.net
|
||
GITEA_TOKEN=votre_token
|
||
APP_PORT=8080
|
||
DATABASE_URL=sqlite:////data/flowdeck.db
|
||
```
|
||
|
||
### Environnements dev/prod (v7.82.0)
|
||
|
||
Aucun nom public d'une application dracodev n'est codé en dur : les
|
||
URL des autres apps (ObsiGate/SSO, service d'agents, TikTak, Kanbante)
|
||
et l'URL publique de Flowdeck se résolvent depuis le `.env` (voir la
|
||
section « URLs publiques dracodev » de `.env.example` et
|
||
`app/services/draco_urls.py`). Les valeurs par défaut sont les noms
|
||
**officiels** (production) ; un environnement de développement déclare
|
||
les noms en `-dev` dans son `.env`, par exemple
|
||
`DRACO_SSO_URL=https://og-dev.dracodev.net`,
|
||
`DRACO_AGENT_URL=https://agent-dev.dracodev.net`,
|
||
`TIKTAK_URL=https://tiktak-dev.dracodev.net`,
|
||
`KANBANTE_URL=https://kanbante-dev.dracodev.net` et
|
||
`OAUTH_REDIRECT_URI=https://flowdeck-dev.dracodev.net/auth/callback`
|
||
(dont l'origine sert d'URL publique à l'instance, sauf si
|
||
`FLOWDECK_URL` est posée). La CSP, la barre commune, le panneau Spark,
|
||
le bouton SSO, le preset MCP TikTak et les références croisées
|
||
suivent automatiquement.
|
||
|
||
## Tests
|
||
|
||
```bash
|
||
python3 -m pytest tests/ -v # 764/764 passent (0 skip)
|
||
```
|
||
|
||
## Roadmap
|
||
|
||
Voir [ROADMAP.md](ROADMAP.md) — 7/7 blocs complétés, 52/52 features ✅
|
||
|
||
## Licence
|
||
|
||
MIT
|