Welcome to the Flutter Blog App! This application is a demonstration of how Clean Architecture and SOLID principles can be applied in Flutter development to build scalable, maintainable, and well-structured mobile applications.
- User Authentication: Users can sign up, log in, and log out securely to access the app.
- Create and Edit Posts: Users can create new blog posts, edit existing posts, and delete posts.
- View and Interact with Posts: Users can view a list of blog posts, read full post content, and interact with posts by liking, commenting, and sharing.
- Offline Support: The app provides offline support, allowing users to view cached content and perform certain actions even when offline.
- Responsive Design: The app is designed to provide a seamless experience across different screen sizes and orientations.
- Flutter: A cross-platform UI toolkit for building natively compiled applications for mobile, web, and desktop from a single codebase.
- Dart: The programming language used for developing Flutter applications.
- Supabase Authentication: For user authentication and management.
- Supabase: A flexible, scalable database for storing and syncing data in real-time.
- Bloc: A state management solution for Flutter applications, used to manage application state and data flow.
- Clean Architecture: A software design approach that separates concerns and enforces a clear separation of dependencies between layers.
- SOLID Principles: A set of five design principles that promote modular, maintainable, and scalable code.
To get started with the Flutter Blog App, follow these steps:
-
Clone the repository:
git clone https://github.com/yourusername/flutter-blog-app.git
-
Install Dependencies:
flutter pub get
-
Run the app:
flutter run
The project follows a modular folder structure based on Clean Architecture principles:
- data: Contains data layer components such as repositories, data sources, and models.
- domain: Defines domain layer entities, use cases, and repository interfaces.
- presentation: Contains presentation layer components including UI screens, widgets, and view models.
Contributions are welcome! If you have any ideas for new features, improvements, or bug fixes, feel free to open an issue or submit a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.
- Flutter
- Firebase
- Provider