A feature-rich, modern, and high-performance e-commerce mobile application built with Flutter. This project was developed as a deep dive into the Flutter framework, focusing on implementing a scalable, testable, and maintainable codebase using Clean Architecture and BLoC.
This app isn't just a UI clone; it's a fully functional application wired up to a real-world (fake) API, built with a focus on performance, scalability, and a "wow" user experience.
| Home Screen & Dark Mode | Product Details & Hero Animation |
| [Your GIF/Screenshot Here] | [Your GIF/Screenshot Here] |
| Login & Checkout | Order History & Profile |
| [Your GIF/Screenshot Here] | [Your GIF/Screenshot Here] |
- 🔒 Secure Authentication: Full Login/Register flow with JSON Web Tokens (JWT). Access and refresh tokens are securely stored on the device using
flutter_secure_storage. - ✨ Stunning UI & Animations:
- Custom Design System: Built from scratch with reusable components, typography, colors, and
ThemeExtensionfor a consistent look. - Full Dark Mode Support: A beautiful, animated dark mode toggle.
- Fluid Animations: Extensive use of
flutter_animatefor staggered list animations,Heroanimations for seamless page transitions, andAnimatedSwitcherfor stateful UI changes.
- Custom Design System: Built from scratch with reusable components, typography, colors, and
- ⚡ High-Performance & Caching:
- Full API Integration: Consumes the Platzi Fake Store API.
- Local Caching: Caches data (like products/categories) locally to reduce network calls, minimize loading times, and provide a snappy, near-offline experience.
- Complex UI Layouts: Uses
CustomScrollViewandSliversfor high-performance, complex scrollable screens (like Home and Profile).
- 🔍 Advanced Search & Filtering:
- Debounced Search: Efficiently handles user input in the search bar, waiting for the user to stop typing before sending an API request.
- Filtering: A functional filter screen (UI) to narrow down product results.
- 🛒 Full E-commerce Flow:
- Product catalog, categories, and details.
- Fully state-managed cart.
- A multi-step checkout process.
- 💳 Payment Gateway Simulation:
- UI and state logic for selecting and simulating payments via PayPal and Stripe (Credit Card).
- 🔔 Push Notifications:
- Configured with Firebase Cloud Messaging (FCM) to simulate order confirmation notifications.
- 🚚 Order History & Tracking:
- A complete screen for users to view their past orders and simulate tracking an order in progress.
This project is built on a foundation of modern, scalable, and professional best practices.
- Architecture: Clean Architecture
Domain: Contains the core business logic, entities, and repository interfaces (contracts).Data: Implements the repositories and manages data sources (remote API and local cache).Presentation: Contains the UI (Screens/Widgets) and the State Management (BLoC).
- State Management: BLoC (Bloc Library)
- Used to separate business logic from the UI, creating a testable and predictable state.
- Utilizes
Eventsto trigger logic,Statesto represent the UI, andBlocsto manage the transformation.
| Category | Technology / Package |
|---|---|
| Core | Flutter, Dart |
| State Management | flutter_bloc |
| Architecture | Clean Architecture |
| Networking | dio (for API requests and interceptors) |
| Functional Error Handling | fpdart (Either type for success/failure) |
| Secure Storage | flutter_secure_storage (for JWT tokens) |
| UI & Animation | flutter_animate, flutter_staggered_grid_view |
| Service Locator | get_it, injectable (for Dependency Injection) |
| Notifications | firebase_messaging |
This project is powered by the Platzi Fake Store API. A huge thanks to the Platzi team for providing this excellent free resource for developers.
To run this project locally:
- Clone the repository:
git clone [https://github.com/](https://github.com/)[YOUR_USERNAME]/[YOUR_REPO_NAME].git - Navigate to the project directory:
cd [YOUR_REPO_NAME] - Install dependencies:
flutter pub get - Run the app:
(Note: For Firebase Push Notifications to work, you will need to set up your own
flutter runfirebase_options.dartfile.)
This project is licensed under the MIT License - see the LICENSE file for details.