This simple Flutter App allows users to view and create blogs. This code base demonstrates using SOLID principles and their application with Clean Architecture. The app uses Bloc & Cubit
for State Management, Get-it
for Dependency Injection, Hive
for Local Persistence and Supabase
for serverless cloud functions.
- Bloc & Cubit - For handling and manipulating state, it provides a seamless approach to state management.
- Get-it - A powerful package for managing dependencies.
- Hive - Local storage management.
The application follows a Layered Clean Architecture with a simple Unidirectional Flow of Data. The code is categorized into 3 Logical Layers, Presentation, Domain and Data Laters.
The Presentation Layer
is responsible for handling the UI, this is where we have the Flutter Widgets and the Bloc State Holders
The Domain Layer
contains the Business Logic of the app, it contains Usecases and Repository interfaces.
The Data Layer
provides access to Remote data sources and Local storage. This is where the Repository implementations sit.
![Screenshot 2024-07-14 at 23 27 07](https://private-user-images.githubusercontent.com/7416651/348571239-7443fc7d-60dd-48e3-8fec-120367725d6e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ3NDAxMTMsIm5iZiI6MTcyNDczOTgxMywicGF0aCI6Ii83NDE2NjUxLzM0ODU3MTIzOS03NDQzZmM3ZC02MGRkLTQ4ZTMtOGZlYy0xMjAzNjc3MjVkNmUucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDgyNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA4MjdUMDYyMzMzWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZWRhNjUwMjI5NmVmNjc3MTZmMGMxNTFjYmEyZjkyMjYzZWIyNWEyZjQxYzM1MDA1OTg3MWI1YTY5MzZhOGFiNyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.u-1cV-bEzPFTqtS0ANF8jEJnkc-yvrJIRsH0H9Imjao)