UnionFlow
Système de gestion intégré pour les unions et associations Lions Club de Côte d'Ivoire.
📋 Description
UnionFlow est une plateforme complète de gestion pour les organisations Lions Club, comprenant :
- Gestion des membres et cotisations
- Organisation d'événements
- Système de solidarité
- Gestion des organisations
- Authentification sécurisée via Keycloak
🏗️ Architecture
Le projet est composé de deux applications principales :
Backend - Quarkus (Java)
- Framework : Quarkus 3.x
- Base de données : PostgreSQL
- Authentification : Keycloak (OIDC)
- API : REST (JAX-RS)
- ORM : Hibernate avec Panache
Mobile - Flutter
- Framework : Flutter 3.x
- Architecture : Clean Architecture + BLoC
- Authentification : Keycloak WebView
- HTTP Client : Dio
- State Management : flutter_bloc
🚀 Démarrage Rapide
Prérequis
- Java 17+
- Maven 3.8+
- PostgreSQL 14+
- Keycloak 23+
- Flutter 3.x
- Dart 3.x
Backend
cd unionflow-server-impl-quarkus
# Configuration de la base de données
# Créer une base PostgreSQL nommée 'unionflow'
# Modifier src/main/resources/application.properties si nécessaire
# Démarrage en mode développement
mvn clean quarkus:dev
# L'API sera disponible sur http://localhost:8080
Mobile
cd unionflow-mobile-apps
# Installation des dépendances
flutter pub get
# Génération du code (models, etc.)
flutter pub run build_runner build --delete-conflicting-outputs
# Lancement de l'application
flutter run
📦 Configuration
Backend - application.properties
# Base de données
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/unionflow
quarkus.datasource.username=unionflow
quarkus.datasource.password=unionflow123
# Keycloak
quarkus.oidc.auth-server-url=http://localhost:8180/realms/unionflow
quarkus.oidc.client-id=unionflow-server
quarkus.oidc.credentials.secret=unionflow-secret-2025
Mobile - Configuration
Modifier lib/core/network/dio_client.dart pour l'URL du backend :
static const String _baseUrl = 'http://192.168.1.11:8080';
Modifier lib/core/auth/keycloak_config.dart pour Keycloak :
static const String authority = 'http://192.168.1.11:8180/realms/unionflow';
static const String clientId = 'unionflow-mobile';
🗄️ Base de Données
Mode Développement
Pour charger les données initiales (membres, cotisations, événements) :
- Modifier
application.properties:
quarkus.hibernate-orm.database.generation=drop-and-create
-
Redémarrer Quarkus - Le fichier
import.sqlsera exécuté automatiquement -
Remettre en mode production :
quarkus.hibernate-orm.database.generation=update
Mode Production
En production, utilisez toujours update pour préserver les données.
📱 Fonctionnalités
Gestion des Membres
- Inscription et profils des membres
- Gestion des statuts (actif, inactif, suspendu)
- Historique des adhésions
Cotisations
- Différents types : mensuelle, annuelle, adhésion, événement, formation, projet, solidarité
- Suivi des paiements (payée, en attente, en retard, partiellement payée)
- Rappels automatiques
Événements
- Types variés : assemblée générale, réunion, formation, conférence, atelier, séminaire, événement social, manifestation, célébration
- Gestion des inscriptions
- Capacité et tarification
- Statuts : planifié, confirmé, en cours, terminé, annulé, reporté
Organisations
- Gestion des clubs et unions
- Hiérarchie organisationnelle
- Statistiques et rapports
🔐 Sécurité
- Authentification via Keycloak (OAuth 2.0 / OIDC)
- Tokens JWT stockés de manière sécurisée (FlutterSecureStorage)
- Contrôle d'accès basé sur les rôles (RBAC)
- Refresh automatique des tokens
🛠️ Développement
Structure du Backend
unionflow-server-impl-quarkus/
├── src/main/java/dev/lions/unionflow/server/
│ ├── entity/ # Entités JPA
│ ├── resource/ # Endpoints REST
│ ├── service/ # Logique métier
│ ├── dto/ # Data Transfer Objects
│ └── repository/ # Repositories (si nécessaire)
└── src/main/resources/
├── application.properties
├── import.sql # Données initiales
└── db/migration/ # Migrations Flyway (si utilisé)
Structure du Mobile
unionflow-mobile-apps/
├── lib/
│ ├── core/ # Configuration, réseau, auth
│ ├── features/ # Modules par fonctionnalité
│ │ ├── auth/
│ │ ├── members/
│ │ ├── events/
│ │ ├── cotisations/
│ │ └── organisations/
│ └── main.dart
📝 API Documentation
Une fois le backend démarré, la documentation OpenAPI est disponible sur :
- Swagger UI : http://localhost:8080/q/swagger-ui
- OpenAPI JSON : http://localhost:8080/q/openapi
🧪 Tests
Backend
mvn test
Mobile
flutter test
📄 Licence
Propriétaire - Lions Club Côte d'Ivoire
👥 Équipe
UnionFlow Team - Lions Club Côte d'Ivoire
📞 Support
Pour toute question ou problème, contactez l'équipe de développement.
Version : 1.0.0
Dernière mise à jour : 2025-10-05