Dernier reliquat de l'A35 (docs/périmètre dérivés) : - Dockerfile : python:3.12-slim → python:3.13-slim (builder + runtime) - .gitea/workflows/ci.yml : python-version '3.12' → '3.13' (lint + test) - README.md : « Python 3.12 » et « python:3.12-slim » → 3.13 (×2) - pyproject.toml : ruff target-version py312 → py313 (0 nouvelle remarque ruff) - zéro référence 3.12 résiduelle ; uv.lock (requires-python >=3.13) et le venv (3.13.14) étaient déjà bons Validation (le point laissé « à faire par un rebuild d'image ») : - docker build VERT sur python:3.13-slim → image flowdeck:a35-py313 - dans le conteneur : python -V = 3.13.16, `import app.main` OK (v7.35.0) → wheels requirements.txt construits + importables sur 3.13 A35 = TERMINÉ (OpenAPI/README/titre dupliqué faits en 7.3.9 + drift). suite **1093/1093** · ruff OK (target py313) · docs à jour
102 lines
3.9 KiB
Markdown
102 lines
3.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
|
||
```
|
||
|
||
## 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
|