# Spécification de base: UnionFlow - Projet existant (Brownfield)

**Feature Branch**: `000-unionflow-baseline`  
**Created**: 2026-02-27  
**Updated**: 2026-03-08  
**Status**: Baseline documentant l'état actuel  
**Type**: Brownfield / Documentation

## Contexte

Ce document capture l'état actuel du projet UnionFlow pour le Spec-Driven Development. UnionFlow est une plateforme de gestion d'associations, clubs et organisations à but non lucratif, et de **gestion des mutuelles d'épargne et de financement**.

**Référence anti-hallucination** : l’inventaire détaillé du code (packages API, migrations, features mobile, routes) est dans `.specify/memory/inventaire-code.md`. Toute spécification ou implémentation doit s’y aligner ; ne pas inventer de packages, endpoints ou fichiers non listés.

## Architecture actuelle

### Modules

| Module | Technologie | Rôle |
|--------|-------------|------|
| **unionflow-server-api** | Java 17, Maven | DTOs, enums, contrats API (sans dépendances runtime) |
| **unionflow-server-impl-quarkus** | Quarkus 3.15.1, Panache | Backend REST, JPA, Keycloak |
| **unionflow-client-quarkus-primefaces-freya** | Quarkus, PrimeFaces | Client web admin |
| **unionflow-mobile-apps** | Flutter 3.x | Application mobile (Android/iOS) |

### Principes clés (cf. CONSTITUTION.md)

- **DDD strict**: Resources → Services → Repositories
- **API/Impl separation**: unionflow-server-api pur, sans Quarkus/JPA
- **Keycloak**: Authentification OAuth2/OIDC
- **PostgreSQL** (prod), **H2** (dev/test)
- **100% JaCoCo** sur le backend
- **Flyway** pour les migrations

### Répertoires importants

```
unionflow/
├── unionflow-server-api/         # API pure
├── unionflow-server-impl-quarkus/ # Implémentation
├── unionflow-client-quarkus-primefaces-freya/
├── unionflow-mobile-apps/        # Flutter
├── .specify/                     # Spec-Kit
├── specs/                        # Spécifications features
└── CONSTITUTION.md               # Principes projet
```

## Workflow Spec-Kit pour nouvelles features

1. **Branche feature**: `001-nom-court`, `002-autre-feature`, etc.
2. **Specs**: `specs/001-nom-court/spec.md`, `plan.md`, `tasks.md`
3. **Commandes Cursor**: `/speckit.specify`, `/speckit.plan`, `/speckit.tasks`, `/speckit.implement`

## Inventaire consolidé

- **API** : ~210 fichiers Java en `unionflow-server-api/src/main/java` (dto.*, enums.*, service.dashboard, validation). Voir `.specify/memory/inventaire-code.md` pour la liste des packages et conventions.
- **Impl** : Migrations Flyway V1.2 à V3.4 listées dans l’inventaire ; code métier (entity, service, resource, mapper) selon CONSTITUTION.
- **Mobile** : Routes `/`, `/login`, `/dashboard` ; navigation par onglets (Dashboard, Membres, Événements, Plus) ; features about, adhesions, admin, authentication, backup, contributions, dashboard, epargne, events, explore, feed, help, logs, members, notifications, organizations, profile, reports, settings, solidarity. Détail à jour dans `.specify/memory/inventaire-code.md`.

## Artefacts Spec-Kit (référence complète)

- **Racine** : `SPEC-KIT.md` (vue d’ensemble), `CONSTITUTION.md` (principes).
- **.specify/memory/** : `constitution.md`, `inventaire-code.md` (référence anti-hallucination).
- **.specify/scripts/powershell/** : `common.ps1`, `check-prerequisites.ps1`, `setup-plan.ps1`, `create-new-feature.ps1`, `update-agent-context.ps1`. Aucun script Bash.
- **.specify/templates/** : `spec-template.md`, `plan-template.md`, `tasks-template.md`, `checklist-template.md`, `constitution-template.md`, `agent-file-template.md`.
- **.cursor/commands/** : `speckit.constitution.md`, `speckit.specify.md`, `speckit.plan.md`, `speckit.tasks.md`, `speckit.implement.md`, `speckit.clarify.md`, `speckit.checklist.md`, `speckit.analyze.md`, `speckit.taskstoissues.md`.
- **.cursor/rules/** : `unionflow-spec-kit.mdc` (always), `unionflow-backend.mdc`, `unionflow-mobile.mdc`.
- **specs/** : `000-unionflow-baseline/spec.md` (ce fichier) ; par feature `00X-nom/` : `spec.md`, `plan.md`, `tasks.md`, optionnellement `research.md`, `data-model.md`, `quickstart.md`, `contracts/`, `checklists/`.

En cas de divergence entre documentation et code, **le code fait foi** ; mettre à jour l’inventaire en conséquence.

## Commandes utiles

```powershell
# Backend
cd unionflow-server-impl-quarkus && mvn clean verify

# Mobile
cd unionflow-mobile-apps && flutter pub get && flutter test
```
