Official App of the Multitec UA student community
Built with Flutter, following Clean Architecture and BLoC, integrated with Firebase Auth, Cloud Firestore, and Sembast.
Multitec App gives Multitec UA members a simple way to keep up with the associationβs activities: browse the events agenda, join/leave activities, and access your member profile anytime β even offline.
π¬ App Showcase β’ βοΈ Technology β’ ποΈ Architecture β’ π§© Dependencies β’ πΊοΈ Roadmap β’ π Getting Started β’ π« Contact
- Architecture: Clean Architecture
- State management: BLoC/Cubit
- Navigation: GoRouter (nested navigation)
- Authentication: Firebase Auth (Google Sign-In)
- Backend: Cloud Firestore for event scheduling and participation
- Offline/local: Sembast (IO/Web) for local persistence
- Networking/HTTP: Dio + cache (
dio_cache_interceptor+ Hive store) - Dependency injection:
get_it - Localization & theme:
gen_l10n(EN/ES) + light/dark theme - Platforms: Android Β· iOS Β· Web
πΈ Clean Architecture + BLoC: clear separation of concerns, low coupling, and high testability.
πΉ Data β datasources β’ dtos β’ repository implementations
πΉ Domain β entities β’ usecases β’ repositories
πΉ Presentation β cubits β’ screens β’ widgets
feature/
βββ data/
β βββ datasources/
β βββ dtos/
β βββ repositories/
β
βββ domain/
β βββ entities/
β βββ repositories/
β βββ usecases/
β
βββ presentation/
βββ cubits/
βββ screens/
βββ widgets/
Feature-first structure (each feature encapsulates
data/,domain/andpresentation/)
lib/
core/
constants/ # API/base URLs
database/ # Sembast (IO/Web)
di/ # Dependency injection (get_it)
events/ # Event bus
exceptions/ # Failures, exceptions, reporting & guard clauses
l10n/ # ARB + gen_l10n
network/ # Dio clients, cache, interceptors
preferences/ # SharedPreferences
router/ # GoRouter + nested shell
ui/ # Design system, theming, reusable components
utils/ # Common helpers & extensions
features/
auth/
home/
schedule/
user/
profile/
settings/
bootstrap.dart
main_development.dart
main_staging.dart
main_production.dart
State management
bloc+flutter_bloc
Routing
go_router
Persistence
sembast+sembast_webshared_preferences
Firebase
firebase_core,firebase_auth,cloud_firestore
DI
get_it
Serialization / Modeling
freezed,freezed_annotation,json_serializable
Networking / Cache
diodio_cache_interceptor+dio_cache_interceptor_hive_store
Utilities
multiple_resultevent_busflutter_localizationsurl_launcher
Testing & Code Quality
bloc_testmocktailvery_good_analysis
Automation & Productivity
husky,commitlint_climason_cli
- NFC member card to access the associationβs space
- Online voting system for board elections
- Push notifications for announcements and event reminders
- Chat for long-term activities or events
- Suggestion box module
Clone the project repository (choose one):
# Using SSH
git clone [email protected]:Multitec-UA/multitec-app.gitor
# Using HTTPS
git clone https://github.com/Multitec-UA/multitec-app.gitThen, navigate into the project folder:
cd multitec-appInstall FVM (Flutter Version Management) globally to manage Flutter SDK versions easily:
dart pub global activate fvmUse FVM to install the Flutter version specified in the .fvmrc file (this installs Flutter locally to the project):
fvm install
β οΈ After runningfvm install, it is likely necessary to restart VSCode or at least its terminal for the changes to take effect and for VSCode to use the FVM-installed Flutter version properly.
Fetch all packages:
fvm flutter pub getFinally, install Husky git hooks:
fvm dart run husky installThis project uses Mason to generate feature folders inside lib/features following the standard structure.
Install Mason CLI:
dart pub global activate mason_cliTo generate a new feature, run:
mason make featureπ¨βπ» Developed by David GonzΓ‘lez ΓΓ±iguez
π§ [email protected]
π linkedin.com/in/davidgonzaleziniguez
βοΈ If you like this project, consider giving it a star!
π¬ Open to collaborations and Flutter opportunities.






