Skip to content

Multitec-UA/multitec-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

97 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Developer LinkedIn | David GonzΓ‘lez

Leer en espaΓ±ol


Logo Multitec App

Official App of the Multitec UA student community


Flutter Dart Architecture: Clean/Hexagonal BLoC Platforms: Android Β· iOS Β· Web

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


🎬 App Showcase

Home Agenda Details Profile My Events Login Settings
Home Agenda Details Profile My Events Login Settings

βš™οΈ Technology

  • 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

πŸ›οΈ Architecture

πŸ”Έ Clean Architecture + BLoC: clear separation of concerns, low coupling, and high testability.

Layer structure

πŸ”Ή 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/

Folder tree (summary)

Feature-first structure (each feature encapsulates data/, domain/ and presentation/)

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

🧩 Dependencies

State management

  • bloc + flutter_bloc

Routing

  • go_router

Persistence

  • sembast + sembast_web
  • shared_preferences

Firebase

  • firebase_core, firebase_auth, cloud_firestore

DI

  • get_it

Serialization / Modeling

  • freezed, freezed_annotation, json_serializable

Networking / Cache

  • dio
  • dio_cache_interceptor + dio_cache_interceptor_hive_store

Utilities

  • multiple_result
  • event_bus
  • flutter_localizations
  • url_launcher

Testing & Code Quality

  • bloc_test
  • mocktail
  • very_good_analysis

Automation & Productivity

  • husky, commitlint_cli
  • mason_cli

πŸ—ΊοΈ Roadmap

  • 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

πŸš€ Getting Started

Downloading and installing project πŸ§‘β€πŸ’»

Clone the project repository (choose one):

# Using SSH
git clone [email protected]:Multitec-UA/multitec-app.git

or

# Using HTTPS
git clone https://github.com/Multitec-UA/multitec-app.git

Then, navigate into the project folder:

cd multitec-app

Install FVM (Flutter Version Management) globally to manage Flutter SDK versions easily:

dart pub global activate fvm

Use FVM to install the Flutter version specified in the .fvmrc file (this installs Flutter locally to the project):

fvm install

⚠️ After running fvm 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.

Downloading and installing project dependencies ✨

Fetch all packages:

fvm flutter pub get

Finally, install Husky git hooks:

fvm dart run husky install

Using Mason bricks 🧱

This project uses Mason to generate feature folders inside lib/features following the standard structure.

Install Mason CLI:

dart pub global activate mason_cli

To generate a new feature, run:

mason make feature

πŸ“« Contact

πŸ‘¨β€πŸ’» 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.

About

Multitec mobile app to help members keep up with events and interact with the community

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •