This document contains technical details, architecture decisions, and platform-specific configurations for the Albourane project ecosystem.
Both applications follow GetX modular architecture:
- Routing: Centralized in
lib/resources/routes.dartwith path-based URL strategies for web - State Management: GetView + GetxController pattern
- Bindings: Dependency injection via
lib/resources/bindings.dart
- Flutter (v3.12+)
- GetX (^4.7.3)
- Firebase (^4.5.0 core) - Auth & Firestore
pdf&printingfor document generationcross_connectivity(^3.3.0) for network monitoringflutter_svgfor scalable iconsflutter_web_pluginsfor URL strategy
- Flutter
- GetX
- Firebase (Firestore, Authentication)
intlfor dates and number formattingprinting&pdffor reports
- Naming Convention: All files use Dart
lower_case_with_underscores - Linting: 100% compliant with
flutter analyze - Production:
printstatements replaced withdebugPrint - Widgets: Modern
super.keyparameters
| Property | Client App | Admin |
|---|---|---|
| Target/Compile SDK | 34 | 34 |
| Gradle Version | 9.4.1 | 7.5 |
| AGP | 8.4.0 | 7.3.0 |
| Kotlin | 1.9.22 | 1.8.22 |
| Java Target | 17 | - |
- Uses
usePathUrlStrategy()fromflutter_web_pluginsfor clean URLs (no hash fragment) - Firebase initialized via FlutterFire plugins (no manual JS SDK)
- Native desktop support initialized
- Platform-specific guards for non-native plugins
- Firebase features skipped on Linux to maintain stability (Firestore/Auth in beta)
The apps are resilient against missing configurations or unsupported platforms:
- Safe Initialization:
Firebase.initializeApp()wrapped in try-catch - Platform Checks: Linux blocks Firebase initialization to prevent crashes
- Lazy Controllers: Firebase instances initialized only in
onInit()ifFirebase.appsis not empty - Nullable UI: FutureBuilder components handle nullable snapshots correctly
- Fonts: Stored locally in
res/fonts/for offline availability - Arabic Support: Tajawal, Carlito, EMComic fonts
- Icons: SVG via
flutter_svgfor crisp rendering across resolutions
- Firebase Linux Support: Limited/beta - features skipped on Linux
- Android requires
google-services.jsonto build - Some stylistic lint suggestions remain (e.g.,
prefer_const)
albourane/
├── admin/ # Admin dashboard
│ ├── lib/
│ │ ├── controllers/ # GetX controllers
│ │ ├── views/ # UI screens
│ │ ├── resources/ # Routes, bindings
│ │ └── ...
│ ├── android/
│ └── ...
├── albourane/ # Client app
│ ├── lib/
│ │ ├── controllers/
│ │ ├── views/
│ │ ├── resources/
│ │ └── ...
│ ├── android/
│ └── ...
└── res/
└── fonts/