7.6 KiB
🚀 Déploiement Frontend AfterWork
Date : 2026-01-10 Statut : ✅ Prêt pour le build production
📋 Configuration de Production
URL de l'API Backend
https://api.lions.dev/afterwork
WebSocket
wss://api.lions.dev/afterwork/ws/notifications/{userId}
wss://api.lions.dev/afterwork/ws/chat/{userId}
🔧 Build de l'Application
Build APK (Android)
cd C:\Users\dadyo\PersonalProjects\lions-workspace\afterwork
# Build APK production
.\build-prod.ps1 -Target apk
# Ou directement avec Flutter
flutter build apk --release \
--dart-define=API_BASE_URL=https://api.lions.dev/afterwork \
--dart-define=ENVIRONMENT=production \
--dart-define=DEBUG_MODE=false \
--split-per-abi
Artefacts générés:
build/app/outputs/flutter-apk/
├── app-armeabi-v7a-release.apk
├── app-arm64-v8a-release.apk (Recommandé pour la plupart des appareils)
└── app-x86_64-release.apk
Build AAB (Google Play Store)
# Build AAB pour Play Store
.\build-prod.ps1 -Target appbundle
# Ou directement
flutter build appbundle --release \
--dart-define=API_BASE_URL=https://api.lions.dev/afterwork \
--dart-define=ENVIRONMENT=production \
--dart-define=DEBUG_MODE=false
Artefact généré:
build/app/outputs/bundle/release/app-release.aab
📱 Installation et Test
Installer l'APK sur un Appareil
# Via ADB
adb install build/app/outputs/flutter-apk/app-arm64-v8a-release.apk
# Ou copier l'APK sur l'appareil et l'installer manuellement
Tester l'Application
-
Connexion au Backend
- L'app doit pointer vers
https://api.lions.dev/afterwork - Vérifier que le login fonctionne
- L'app doit pointer vers
-
WebSocket (Temps Réel)
- Tester les notifications en temps réel
- Tester le chat instantané
- Vérifier les typing indicators
-
Fonctionnalités Principales
- ✅ Login/Signup
- ✅ Gestion de profil
- ✅ Événements
- ✅ Amis (ajout, suggestions, demandes)
- ✅ Chat (messages, statuts ✓✓✓)
- ✅ Social (posts, likes, commentaires)
- ✅ Stories
- ✅ Notifications
🔄 Changements pour Production
Configuration API
Le fichier lib/core/constants/env_config.dart est configuré pour supporter les variables d'environnement:
static const String apiBaseUrl = String.fromEnvironment(
'API_BASE_URL',
defaultValue: 'http://192.168.1.145:8080', // Développement
);
En production:
- Via
--dart-define=API_BASE_URL=https://api.lions.dev/afterwork - Le script
build-prod.ps1configure automatiquement cette variable
Validation
Au démarrage, l'app valide la configuration:
- En production, HTTPS est obligatoire
- Les URLs malformées sont rejetées
- Les clés API manquantes génèrent des warnings
🐛 Corrections Appliquées
Race Condition Chat (CRITIQUE)
Problème: Les icônes de statut (✓, ✓✓, ✓✓ bleu) ne s'affichaient pas
Solution: Pattern Optimistic UI
- Message créé localement immédiatement
- Ajouté à la liste AVANT la requête HTTP
- Remplacé par le message serveur à la réponse
Fichier: lib/presentation/state_management/chat_bloc.dart
TODOs Implémentés (13)
- Partage de posts (copier lien, partage natif)
- Signalement de posts
- Recherche de conversations
- Gestion de médias (upload, suppression, miniatures)
- Sélection d'amis pour partage
📦 Fichiers Importants
Configuration
lib/core/constants/
├── env_config.dart # Configuration environnements
├── colors.dart # Thème de couleurs
└── urls.dart # URLs et endpoints
lib/config/
├── injection/injection.dart # Injection de dépendances
└── router.dart # Navigation
Services
lib/data/services/
├── chat_websocket_service.dart # WebSocket chat
├── realtime_notification_service.dart # WebSocket notifications
├── media_upload_service.dart # Upload médias
└── image_compression_service.dart # Compression images
État Management
lib/presentation/state_management/
├── chat_bloc.dart # Gestion chat
├── event_bloc.dart # Gestion événements
└── user_bloc.dart # Gestion utilisateurs
🎯 URLs et Endpoints
Authentification
- POST
/api/users/login - POST
/api/users/register
Utilisateurs
- GET
/api/users/{id} - PUT
/api/users/{id} - GET
/api/users/friends
Chat
- GET
/api/messages/conversations - GET
/api/messages/conversation/{id} - POST
/api/messages/send - WebSocket
/ws/chat/{userId}
Social
- GET
/api/social/posts - POST
/api/social/posts - POST
/api/social/posts/{id}/like - POST
/api/social/posts/{id}/comment
Notifications
- GET
/api/notifications - PUT
/api/notifications/{id}/read - WebSocket
/ws/notifications/{userId}
📊 Statistiques du Projet
| Métrique | Valeur |
|---|---|
| Fichiers Dart | ~200+ |
| Lignes de code | ~40,000+ |
| Widgets custom | 80+ |
| Blocs/Providers | 15+ |
| Services | 20+ |
| Entities | 15+ |
| Tests | 25+ |
✅ Checklist de Déploiement
Avant le Build
- Backend déployé et accessible sur
https://api.lions.dev/afterwork - Configuration
env_config.dartprête - Script
build-prod.ps1configuré - Tests manuels effectués en local
- Race condition chat corrigée
Build
- Exécuter
.\build-prod.ps1 -Target apk - Vérifier la taille des APKs générés
- Tester l'installation sur un appareil réel
Tests Post-Build
- Login fonctionne avec l'API production
- WebSocket se connecte correctement
- Chat temps réel fonctionne
- Notifications temps réel fonctionnent
- Upload de médias fonctionne
- Pas d'erreurs dans les logs
Distribution
- Signer l'APK/AAB si nécessaire
- Upload sur Play Store (ou distribution interne)
- Documentation utilisateur mise à jour
🔐 Sécurité
HTTPS Obligatoire en Production
L'application force HTTPS en production via env_config.dart:
if (isProduction && !apiBaseUrl.startsWith('https://')) {
errors.add('API_BASE_URL doit utiliser HTTPS en production');
}
Tokens et Authentification
- Les tokens JWT sont stockés de manière sécurisée
- Refresh automatique des tokens expirés
- Déconnexion automatique si le token est invalide
📞 Support
En cas de problème:
-
Vérifier les logs de l'app:
flutter logs # ou adb logcat | grep flutter -
Vérifier la connexion API:
curl https://api.lions.dev/afterwork/q/health/ready -
Vérifier les WebSockets:
- Ouvrir l'app
- Vérifier les logs pour "WebSocket connected"
🎉 Résumé
✅ Application Complète et Fonctionnelle
- Frontend: Flutter avec architecture Clean + BLoC
- Backend: Quarkus avec WebSocket temps réel
- Infrastructure: Kubernetes sur VPS
- URL Production: https://api.lions.dev/afterwork
✅ Prêt pour Production
Toutes les fonctionnalités sont implémentées et testées:
- Authentification sécurisée
- Chat temps réel avec statuts de messages
- Publications sociales avec médias
- Stories temporaires
- Notifications push temps réel
- Gestion d'événements
- Système d'amitié complet
Pour builder l'application:
.\build-prod.ps1 -Target apk
Artefacts:
build/app/outputs/flutter-apk/app-arm64-v8a-release.apk
Dernière mise à jour: 2026-01-10