Production-Ready Flutter E‑Commerce App
This project is a full-featured Flutter e-commerce app that demonstrates production-style architecture, solid state management, and real payment + backend integration using Firebase and Stripe. It’s built to showcase real-world product browsing, cart/wishlist flows, and order processing with a polished UX and reusable UI components.
Key product features
- Product discovery with a Home experience (offers carousel + “On Sale” section + featured products) and quick navigation to browse all products.
- Full product browsing with search, category filtering, and dedicated “Products on sale” screens, including empty states for zero results.
- Product details page with quantity controls, dynamic total calculation, “free delivery” badge, and add-to-cart logic that prevents duplicates.
Checkout & order management (high impact)
- End-to-end checkout using Stripe PaymentSheet, including PaymentIntent creation via backend endpoint and robust error handling/feedback.
-
Orders pipeline: after successful payment, orders are stored in Firestore with timestamps and unique IDs, then the cart is cleared and the order history is refreshed.
- Orders history screen powered by asynchronous loading (FutureBuilder) with a clean order item UI (product preview, paid amount, quantity, and formatted date).
Firebase-backed user flows
- Authentication with Email/Password registration and login, including form validation, loading states, and Firestore user profile creation (shipping address + initialized cart/wishlist arrays).
- Google Sign-In integrated with FirebaseAuth; new users are automatically provisioned in Firestore and redirected to a data-fetch bootstrap flow
- Password reset flow with email delivery confirmation and loading UX.
State management & data synchronization
- App-wide state management using MultiProvider (Products, Cart, Wishlist, Orders, Viewed History, Theme), reflecting scalable architecture patterns used in real apps.
- Firestore synchronization for cart and wishlist stored under the user document (fetch, update, remove item, clear online/local), designed for consistent state across sessions.
- Recently viewed tracking with a dedicated provider and screen, plus a “clear history” confirmation flow.
UX polish and reusable components
- Bottom navigation with live cart badge count powered by Provider, improving usability and demonstrating reactive UI.
- Consistent empty states across cart/wishlist/orders/history to keep the app feeling complete and user-friendly.
- Reusable UI toolkit: unified typography (TextWidget), reusable back button, reusable auth button, and centralized dialogs/toasts for consistent UX and maintainable code.
Theme & app settings
- Full Dark/Light mode support with persisted preference via SharedPreferences and a dedicated provider, surfaced directly in the user profile screen.