Project Overview
WinterStore is a next-generation, cross-platform e-commerce application built with Flutter. It delivers a seamless, high-performance shopping experience with a modern UI, robust product management, and real-time data integration using Firebase. Designed for scalability and flexibility, WinterStore is suitable for both rapid prototyping and production-ready deployments.
Problem Statement
Many e-commerce apps suffer from slow performance, poor user experience, and fragmented codebases for different platforms. WinterStore addresses these issues by providing a unified, maintainable, and scalable solution that leverages Flutter’s cross-platform capabilities and Firebase’s real-time backend.
Target Users / Use Cases
- Store Owners: Digitize and expand their business online.
- Flutter Developers: Use as a robust template for e-commerce projects.
- End Users: Shop online with a fast, secure, and intuitive app.
Tech Stack
- Flutter (Dart): Cross-platform UI (Android, iOS, Web, macOS)
- Firebase: Authentication, Firestore, Storage
- GetX: State management, routing, dependency injection
- Lottie, Shimmer, Carousel, Cached Network Image: Modern UI/UX
- CI/CD: Flutter lints, widget testing
Methodology / Workflow
- Modular Design: Feature-based folder structure for maintainability.
- Reactive State Management: GetX for efficient state and navigation.
- Data Integration: Real-time sync with Firestore for products, categories, brands, and banners.
- Testing: Widget tests for UI validation.
- Continuous Improvement: Codebase designed for easy scaling and updates.
Project Structure
lib/
features/
authentication/ # Login, signup, onboarding
personalization/ # Profile, address, settings
shop/ # Products, categories, brands, cart, checkout
data/
repositories/ # Firestore integration
dummy/ # Dummy data for development
commons/ # Reusable widgets
routes/ # App routing
utils/ # Helpers, constants, theme, etc
assets/
images/ # Banners, products, onboarding, etc
icons/
fonts/
test/
widget_test.dart # Widget testing
Key Features
- Product & Category Management: CRUD for products, categories, and brands.
- User Authentication: Sign up, login, password recovery, Google sign-in.
- Cart & Checkout: Add/remove products, order summary, checkout process.
- Wishlist & Favorites: Save favorite products.
- Personal Profile: Edit profile, manage addresses, view order history.
- Search & Filter: Search products, filter by category/brand.
- Modern Animations: Lottie, shimmer, carousel, grid layouts.
- Automated Data Upload: Sync dummy data to Firestore.
Data Source & Preprocessing
- Data Source: Firestore (products, categories, brands, banners, users)
- Preprocessing: Dummy data uploaded via in-app upload feature.
- Data Models: Well-defined models for all entities.
- Data Relationships: Product ↔ Category, Brand ↔ Category, etc.
Challenges & Solutions
- Data Sync: Addressed delays and duplication with loaders and error handling.
- State Management: Leveraged GetX for efficient, maintainable state.
- Responsive UI: Adaptive layouts for all screen sizes.
- Testing: Widget tests to ensure UI stability during updates.
Model Performance / Evaluation Metrics
- Widget Testing: UI interaction validation (e.g., counter increment test).
- Linting & Static Analysis: Enforced with
flutter_lints
. - Manual QA: Tested across devices and user scenarios.
Results & Impact
- Rapid Development: Single codebase for multiple platforms.
- Enhanced UX: Modern UI, interactive animations, intuitive navigation.
- Scalability: Easily extendable for small to large-scale stores.
Future Improvements
- Online payment integration (Stripe, Midtrans, etc.)
- Push notification support
- Web-based admin dashboard
- AI-powered product recommendations
- More comprehensive unit and integration tests
Lessons Learned
- Modular code is essential for scalability.
- GetX simplifies state management and dependency injection.
- Firestore integration enables real-time data sync.
- Modern UI/UX significantly improves user retention.
Installation & Setup Guide
- Clone the repository:
git clone <repo-url> cd e_commerce_app
- Install dependencies:
flutter pub get
- Setup Firebase:
- Create a project in Firebase Console
- Download
google-services.json
(Android) &GoogleService-Info.plist
(iOS) - Place them in the appropriate folders (
android/app/
,ios/Runner/
)
- Run the app:
flutter run
- (Optional) Upload dummy data to Firestore:
- Open the “Upload Data” menu in the app, upload categories, brands, products, banners, and relationships.