Skip to content

Mahmoudagha01/ShoPack-App-With-Clean-Architecture

Repository files navigation

ShoPack E-Commerce App Using Flutter (User App)

This app follow clean architecture proposed By Uncle Bob I used BloC as state management to improve widget rebuilding performance.

Download App

video

You can see a Demo video Here

Screenshots

onBoarding 1 onBoarding 2 onBoarding 4 Splash Screen
Screensh example shopack_user Screenshot_٢٠٢٣-om example shopack_user Screenshot_٢٠٢٣-٠١-٠٨-١٧-٥٨-١٢-٥٤٢_com example shopack_user Screenshot__com example shopack_user
Register screen login Screen forgot password Screen verify Email Screen
Screenshample shopack_user Screenshotm example shopack_user Screenshot_ example shopack_user Screenshotom example shopack_user
Reset Password screen Home Screen Shop Screen 1 shop Screen 2
Screenshot_٢٠٢٣-٠١-٠٩-٢٠-٣٩-١٦-٣٤٤_com example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢٠-٤١-٢٨-١٩٩_com example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢٠-٤٢-٠٢-٧٢٩_com example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢٠-٤٤-٣٥-٣٣٩_com example shopack_user
search product Filter Product Product Detalis Screen 1 Product Detalis Screen 2
Screenshot_٢٠٢٣-٠١-٠٩-٢٠-٤٨-٤٢-٢٣٨_com example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢٠-٤٩-٢٥-٠٧٩_com example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢٠-٥١-٥٨-٣٤١_com example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢٠-٥٢-١٣-٣٠٩_com example shopack_user
Write Review Product Reviews Screen Favorite Screen Cart Screen
Screenshot_٢٠٢٣-٠١-٠٩-٢١-٠٣-٠٨-٣٦٥_com example shopack_user Screenshot_com example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢١-٠٧-٣٣-٨٤٠_com example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢١-١٧-٤٠-٣٠٧_com example shopack_user
Checkout Screen 1 Checkout Screen 2 Map Screen Search map
Screenshot_٢٠٢٣-٠١-٠٩-٢١-١٧-٥٢-٠٥٧_com example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢١-١٨-١٦-٠٣٦_com example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢١-١٨-٤٨-٠٩٨_com example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢١-١٨-٣٤-٥٩١_com example shopack_user
Payment Screen 1 Payment Screen 2 Success Screen Active orders
Screenshot_٢٠٢٣-٠١-٠٩-٢١-١٩-٣٤-٩٩٩_com example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢١-٢٠-٥٤-٧١٠_com example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢١-٢١-٠٠-٨٦٠_com example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢١-٣٠-٤٠-٥٣٢_com example shopack_user
Past orders Profile Screen Update Profile Screen change password
Screenshot_٢٠٢٣-٠١-٠٩-٢١-٣٠-٤٣-٦٠٠_com example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢١-٣٧-٠٨-٧١١_com example shopack_user Screenshot_om example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢١-٣٧-٣٦-٨٣٤_com example shopack_user
Dark mode sample 1 Dark mode sample 2 Dark mode sample 3 No Internet Status
Screenshot_٢٠٢٣-٠١-٠٩-٢١-٣٧-٤٨-٢٤٤_com example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢١-٣٨-١٩-٣٥٢_com example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢١-٣٨-١٢-٩٥٤_com example shopack_user Screenshot_٢٠٢٣-٠١-٠٩-٢١-٤٦-٣٧-٩٠٣_com example shopack_user

APP FEATURES

  • Authentication (Login/Register)
  • Email sign-in backed up by Reset Password
  • Beautiful onboarding layout and animations
  • Shop by category and trending products
  • Search products with Its Name
  • Filter products by ratings or price
  • Products, Favorite can be accessed in-app
  • Edit account details easily
  • Chang Password easily
  • Order products through quote based system
  • Easily editable product widgets (Cards, Slider, Grids, Lists and more!)
  • Beautiful Product pages with reviews, description and features
  • Caching data in local database (Hive)
  • Adaptive UI (changes color based on Mode dark or light)
  • Google Map (Get current Location & Search specific Location)
  • payment integration with paymob

Directory Structure

lib
├───core
│   ├───colors
│   ├───error
│   ├───local
│   ├───network
│   ├───theme
│   │   ├───bloc
│   │   └───local_theme
│   ├───usecase
│   └───utilities
├── dependency_injection.dart
├── main.dart
└───features
    ├───cart
    │   ├───data
    │   │   ├───datasource       
    │   │   └───models
    │   └───presentation
    │       ├───bloc
    │       │   └───cubit        
    │       ├───views
    │       └───widgets
    ├───favorite
    │   └───presentation
    │       ├───bloc
    │       └───views
    ├───forgotpass&verifyemail   
    │   ├───data
    │   │   ├───datasources      
    │   │   ├───models
    │   │   └───repositories     
    │   ├───domain
    │   │   ├───entities
    │   │   ├───repositories     
    │   │   └───usecases
    │   └───presentation
    │       ├───forgotpass&verifyemail_bloc
    │       └───views
    ├───home
    │   ├───presentation
    │   │   ├───bloc
    │   │   └───view
    │   └───widgets
    ├───login
    │   ├───data
    │   │   ├───datasources
    │   │   ├───models
    │   │   └───repositories
    │   ├───domin
    │   │   ├───entities
    │   │   ├───repositories
    │   │   └───usecases
    │   └───presentation
    │       ├───bloc
    │       ├───view
    │       └───widgets
    ├───payment
    │   ├───data
    │   │   ├───datasources
    │   │   ├───models
    │   │   └───repositrories
    │   ├───domain
    │   │   ├───entities
    │   │   ├───repositories
    │   │   └───usecases
    │   └───presentation
    │       ├───bloc
    │       └───views
    ├───profile
    │   ├───data
    │   │   ├───datasources
    │   │   ├───models
    │   │   └───repositories
    │   ├───domain
    │   │   ├───entities
    │   │   ├───repositories
    │   │   └───usecases
    │   └───presentation
    │       ├───bloc
    │       ├───views
    │       └───widgets
    ├───register
    │   ├───data
    │   │   ├───datasources
    │   │   ├───models
    │   │   └───repositories
    │   ├───domain
    │   │   ├───entities
    │   │   ├───repositories
    │   │   └───usecases
    │   └───presentation
    │       ├───bloc
    │       └───views
    ├───setpassword
    │   ├───data
    │   │   ├───datasources
    │   │   ├───models
    │   │   └───repositories
    │   ├───domain
    │   │   ├───entities
    │   │   ├───repositories
    │   │   └───usecases
    │   └───presentation
    │       ├───bloc
    │       └───views
    ├───shop
    │   ├───data
    │   │   ├───datasources
    │   │   ├───models
    │   │   └───repositories
    │   ├───domain
    │   │   ├───entities
    │   │   ├───repositories
    │   │   └───usecases
    │   └───presentation
    │       ├───bloc
    │       ├───views
    │       └───widgets
    └───splash&onboarding
        ├───data
        │   └───models
        └───presentation
            ├───views
            └───widgets

.env file example

CLOUDINARY_NAME=<Your Cloudinary name>
CLOUDINARY_API_KEY<Your Cloudinary API key>
CLOUDINARY_SECRET_KEY=<Your Cloudinary Secret key>
MAP_API_KEY=<Your Google Map Api key>
PAYMENT_API_KEY=<Paymob Api Key>
INTEGRATION_ID_CARD=<Paymob Integration Id  Card>
BASE_URL=https://newshopack.onrender.com/api/v1   //API Base Url