SkyWatch is a cross-platform application developed using Flutter framework and it runs on the Android & iOS platforms.
Using SkyWatch you can check out the current weather for your localization, see the forecast for the next 4 days and share short videos showing the current weather.
- Meteomatics: Create a free-trial account here and set your user and password at "http_paths.dart".
- Nominatim OpenStreetMap.
For compare the final UI with the designed UI/UX see Figma's SkyWatch project, which presents detailed components and color palettes.
This project follows the Clean Architecture Pattern to separate each responsibility correctly.
The most intern layer is the entities' layer where we define the model's interfaces, then we have the use cases' layer where we define the actions the app can perform, the presenter's layer where we receive and transform data, and the most external is the UI layer where we update the events on screen.
The project is composed by one single module, Home Module, but the modular composition allows us to add new modules in the future. Each module is independent by itself and global dependencies are injected by the CoreModule.
We're using Modular Package as router and dependency injector.
The folder structure organize the project as: data, domain and presentation. In order to follow the Clean Architecture for Flutter.
Some implemented Design Patterns in this project:
- Adapter;
- Interface;
- Singleton;
- Factory;
- Builder;
The project uses Bloc as State Manager and it allows a robust management with easy mantaininment. Bloc receives events and emits states, updating the pages with BlocBuilders & BlocListeners.
The SOLID principles and others are extremely important to any project to follow, it makes the code more readable, the project scalable and easier to maintain.
You can find some tests structures on the /test folder. The folder follows the src folder structure to make easier the identification.