5a124d1328ad1c9cd597a87631ac1d95ba5690a4
- OAuth2 Gitea (login/callback/logout) with fallback admin mode
- Session management with signed cookies (itsdangerous, 7 days)
- CSRF protection middleware on all POST/PUT/PATCH/DELETE
- Rate limiting in-memory (60 req/min per IP)
- Issue creation from FlowDeck (POST /api/issues/{owner}/{repo})
- Inline issue editing (PATCH /api/issues/{owner}/{repo}/{issue_id})
- Card detail modal (double-click): description, labels, comments
- Checklists with toggleable items (CRUD endpoints + UI)
- Priority + due date editable on cards
- Webhook receiver (POST /api/webhook) with HMAC-SHA256
- Auto-register/status webhooks for repos
- GiteaClient: create_issue, update_issue, get_comments, webhooks, collaborators
- New DB tables: users, user_tokens, checklists, checklist_items
- CSS: modal, forms, checklists, comments, PR section
FlowDeck
Gestion de projets Kanban légère, auto-hébergée, intégrée nativement à Gitea.
Quick Start
cp .env.example .env
# Éditer .env avec votre token Gitea
docker compose up -d
# → http://localhost:8080
Features
- Dashboard listant tous les projets Gitea (user + orgs)
- Board Kanban 5 colonnes : Backlog → À faire → En cours → Révision → Terminé
- Issues Gitea → cartes : sync automatique, filtres par milestone/label/assignee
- Drag & drop (SortableJS) avec persistance SQLite
- Sync bidirectionnelle : déplacer une carte → label Gitea mis à jour, colonne Terminé → ferme l'issue
- Colonnes personnalisables + configuration du mapping colonne→label Gitea
- WIP limits configurables par colonne
- Notes Markdown par projet (éditeur + sauvegarde)
- API REST :
/api/health,/api/stats,/api/projects,/api/move,/api/col-mapping - Thème clair/sombre commutable
- Filtres par milestone, label, assignee
- PR affichées séparément des issues
- Dark/light theme toggle avec persistance localStorage
Stack
| Couche | Techno |
|---|---|
| Frontend | HTML5 + Jinja2 + CSS custom, HTMX, Alpine.js, SortableJS |
| Backend | Python 3.12 + FastAPI + Uvicorn + httpx |
| BDD | SQLite (WAL mode) — /data/flowdeck.db |
| Intégration | API REST Gitea v1 (token auth) |
| Déploiement | Docker (Python 3.12-slim), docker-compose |
Configuration
Voir .env.example. Variables principales :
GITEA_URL=https://git.dracodev.net
GITEA_TOKEN=votre_token
APP_PORT=8080
DATABASE_URL=sqlite:////data/flowdeck.db
SYNC_INTERVAL=60
GITEA_CACHE_TTL=30
API Reference
| Endpoint | Description |
|---|---|
GET /api/health |
Health check (DB + Gitea) |
GET /api/stats |
Statistiques globales |
GET /api/projects |
Projets Gitea (JSON) |
POST /api/move |
Déplacer une carte |
POST /api/col-mapping |
Configurer mapping colonne→label |
GET /api/board-config/{owner}/{repo} |
Configuration board |
POST /api/board-config/{owner}/{repo} |
Mettre à jour colonnes/WIP |
Développement
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # éditer
uvicorn app.main:app --reload --port 8080
Licence
MIT