A feature-rich, scalable, and maintainable e-commerce application template built with Flutter. This project serves as a practical example of implementing Clean Architecture principles in a real-world application, making it an ideal starting point for your next e-commerce project.
- Clean Architecture: A well-structured and layered architecture for maintainability and scalability.
- State Management: Using
providerfor efficient and straightforward state management. - Dependency Injection: Leveraging
get_itfor managing dependencies and decoupling components. - Authentication: Simple and secure user authentication using Firebase and Google Sign-In.
- Product Catalog: A beautiful and interactive product catalog to browse items.
- Shopping Cart: A fully functional shopping cart to add, remove, and manage items.
- Search Functionality: Easily search for products within the app.
- Responsive Design: A user interface that adapts to different screen sizes.
| Get Started | Shop | Item Details |
|---|---|---|
![]() |
![]() |
![]() |
| Cart | Invoice | Drawer Menu |
|---|---|---|
![]() |
![]() |
![]() |
This project follows the principles of Clean Architecture to create a separation of concerns, making the codebase easier to test, maintain, and scale. The architecture is divided into three main layers:
- Presentation Layer: Contains the UI and state management logic. It is responsible for displaying data to the user and handling user input.
- Domain Layer: The core of the application. It contains the business logic and rules, and is independent of any other layer.
- Data Layer: Responsible for data retrieval from various sources (e.g., remote API, local database). It implements the repositories defined in the domain layer.
lib/
├── app/ # App-level widgets, routes, and main app setup
├── core/ # Shared code: DI, error handling, theme, use cases
├── features/ # Application features (e.g., auth, cart, shop)
│ ├── auth/
│ │ ├── data/
│ │ ├── domain/
│ │ └── presentation/
│ ├── cart/
│ │ └── ...
│ └── shop/
│ └── ...
└── main.dart # App entry point
To get a local copy up and running, follow these simple steps.
- Flutter SDK: https://flutter.dev/docs/get-started/install
-
Clone the repo
git clone https://github.com/ansgrb/rolex_boutique.git
-
Navigate to the project directory
cd rolex_boutique -
Install dependencies
flutter pub get
-
Set up Firebase
- Create a new project on the Firebase Console.
- Add an Android app to your Firebase project with the package name
com.example.rolex_boutique. - Download the
google-services.jsonfile and place it in theandroid/appdirectory. - Add an iOS app to your Firebase project with the bundle ID
com.example.rolexBoutique. - Download the
GoogleService-Info.plistfile and place it in theios/Runnerdirectory. - Enable Google Sign-In in the Firebase console (Authentication > Sign-in method).
-
Run the app
flutter run
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.






