222 lines
5.3 KiB
Markdown
222 lines
5.3 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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
|
|
|
|
```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 :
|
|
```dart
|
|
static const String _baseUrl = 'http://192.168.1.11:8080';
|
|
```
|
|
|
|
Modifier `lib/core/auth/keycloak_config.dart` pour Keycloak :
|
|
```dart
|
|
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) :
|
|
|
|
1. Modifier `application.properties` :
|
|
```properties
|
|
quarkus.hibernate-orm.database.generation=drop-and-create
|
|
```
|
|
|
|
2. Redémarrer Quarkus - Le fichier `import.sql` sera exécuté automatiquement
|
|
|
|
3. Remettre en mode production :
|
|
```properties
|
|
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
|
|
```bash
|
|
mvn test
|
|
```
|
|
|
|
### Mobile
|
|
```bash
|
|
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
|
|
|