Spark 193fbd14ce fix(listes): exclure les pages-supports de templates des listes utilisateur
Les pages-supports créées par TemplateService._create_holder (une par
template, search_excluded=1, « masquées, jamais listées ») n'étaient
exclues d'aucune liste : semées à l'init avec updated_at = now (99 sur
une base fraîche), elles occupaient toutes les places des listes
triées par récence (LIMIT 50/20/8) devant les vraies pages — cause
racine de 7 échecs CI (library recents/private/workspace, sidebar
recents, projets builtin, mentions agent), dont l'instabilité du test
provenance (égalité de seconde avec le seed).

Filtre COALESCE(search_excluded, 0) = 0 ajouté : onglets bibliothèque
(meetings, recents, favorites, shared, published, private, workspace),
sidebar Recents, projets builtin, scans de pages des mentions agent.
2026-10-25 22:38:53 +00:00

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

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 · 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

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

python3 -m pytest tests/ -v   # 764/764 passent (0 skip)

Roadmap

Voir ROADMAP.md — 7/7 blocs complétés, 52/52 features ✅

Licence

MIT

S
Description
FlowDeck — Gestion de projets Kanban léger intégré à Gitea
Readme
22 MiB
Languages
Python 58.3%
JavaScript 21.3%
HTML 16.9%
CSS 3.5%