![project-image](https://private-user-images.githubusercontent.com/100046123/262788888-5e314ad6-9892-4097-9ae3-5366c1d4efe3.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ2NDY3MjMsIm5iZiI6MTcyNDY0NjQyMywicGF0aCI6Ii8xMDAwNDYxMjMvMjYyNzg4ODg4LTVlMzE0YWQ2LTk4OTItNDA5Ny05YWUzLTUzNjZjMWQ0ZWZlMy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODI2JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgyNlQwNDI3MDNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0xNjZmZDBjNzhiMTk4MDY3Zjk2MGJlYzliYmUzODFkOTE1MmUzNmEyMDA0YWRiZDQxOGZkM2IxZGQ3MDY2Y2Q5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.4v_p5u2paaghHSYutbw4FvkLjmDM6baBfV3SE83u4ZE)
This project is a Flutter app that uses Firebase services to help users find and book repair appointments for their cars or order food.
Branches:
- master
- feature/PT-1/setup project
- Clean Architecture + BloC
- Dependency Injection: GetIt
- Domain layer: models, repositories, use-cases.
- Data layer: entities, mappers from entities to domain model, implementations of repositories and providers.
- Presentation layer: screens + bloc
- dev
-
core
-
core_ui
-
navigation
-
data
-
domain
-
For presentation layer every feature is a separate module.
- Flutter Async
- Providers are responsible for specific services (e.g. http provider, local provider, etc.), they use data layer entities. Do not have abstract base classes. Repositories are responsible for gathering data from providers and mapping it to the corresponding domain layer models. Have abstract base classes in domain layer.
- Base and frequently used widgets are stored in core_ui module. Base widget for screens is AppScaffold. Example: CustomScreen -> CustomForm Navigation is implemented using Auto Route Navigation on BLoC event is done from the BLoC object itself without BuildContext, router is stored in DI container and is injected in BLoC via constructor.
- One file = one widget.
- Screen widget contains BlocProviders.
- Localization is implemented using EasyLocalization service.
- Fonts, colors, frequently used constant values, and icons are stored in core_ui module.
- Mobiles - Android and IOS