This Shopping App is built using Flutter and allows users to browse products, add items to their cart, and manage their profiles. Users can also access the products page as guests with limited features. The application adheres to principles of Clean Architecture, with Riverpod for state management.
The project is inspired by Clean Architecture principles and focuses on the separation of concerns between two primary layers:
- Presentation Layer (UI) - Contains the UI code and its related classes.
- Data Layer - Contains the implementation of data sources, repositories, and models.
Riverpod is used to manage states in the Presentation Layer, effectively separating the UI code from the business logic.
- Riverpod for state management
- Get_it for dependency injection
- Fluro for navigation
- Dio, Freezed, and Retrofit generator for API and data modeling
- Easy_localization for localization
- Flutter_screenutil for responsive UI
- SharedPreferences for local storage
- Lottie for animations
- Auth Screen: This screen enables users to log in with their email and password or register. Input validations are performed for email and password, displaying error messages for invalid entries. Once logged in, user information is saved in SharedPreferences, facilitating direct navigation to the Home screen on subsequent app launches. Users can also enter the application as guests with limited features.
- Home Screen: Showcases products with pagination.
- Product Details Page: Presents comprehensive product information and allows users to add products to their cart with a specified quantity.
- Cart Modal: Displays complete cart details, including total price, item count, and all products in the cart. Users can also remove products from the cart as desired.
Before running the app, ensure that your development environment meets the required dependencies and configurations by running flutter doctor
. Here's an example screenshot of a flutter doctor
output:
If you encounter any issues or missing dependencies, please refer to the Flutter documentation for guidance on setting up your development environment.