Skip to content

Ecommerce mobile application compatible with Android and iOS devices, visit the website project at https://github.com/jatolentino/Shop-Ecommerce

License

Notifications You must be signed in to change notification settings

jatolentino/Shop-Ecommerce-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

27 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation


SHOP APP

Buy anytime you want!
Pay with any credit or debit card
Compatible with Android & iOS devices

Dart Swift Kotlin Gradle HTML5 YAML JSON Cloudinary API Figma Inkscape Gimp Adobe-after-effects XCODE VSCODE Github GIT

GitHub repo size GitHub language count Awesome rating uptime
GitHub license git-last-commit GitHub commit activity GitHub top language


shop-phone-c

app-commercial.mp4

πŸ“– Table of Contents


πŸ“ Overview

Flutter mobile application project compatible with Android and iOS devices, it connects to a Mongo database through a Express API. The client and server projects are located at https://github.com/jatolentino/Shop-Ecommerce. The APK and IPA files fron Android and iOS can be generated with this project, but you can download the android app from this link. Please generate your IPA file for iOS following the common flutter process.


πŸ“¦ Features

Features Customer App
Users Registration βœ”οΈ βœ”οΈ
Users Login/Logout βœ”οΈ βœ”οΈ
Reset Password βœ”οΈ βœ”οΈ
Dashboard βœ”οΈ βœ”οΈ
Add Products to your cart βœ”οΈ βœ”οΈ
Add Products to your favorites βœ”οΈ βœ”οΈ
Search/filter products βœ”οΈ βœ”οΈ
Credit/Debit card payment βœ”οΈ βœ”οΈ
Product tracking βœ”οΈ βœ”οΈ
Terms & Condition βž– βœ”οΈ
Privacy & Policy βž– βœ”οΈ
Rating Products βœ”οΈ βœ”οΈ

πŸ“‚ Repository Structure

└──Shop-EcommerceShop-Ecommerce-app
	β”œβ”€β”€ android
	β”‚Β Β  β”œβ”€β”€ app
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ build.gradle
	β”‚Β Β  β”‚Β Β  └── src
	β”‚Β Β  β”‚Β Β      β”œβ”€β”€ debug
	β”‚Β Β  β”‚Β Β      β”‚Β Β  └── AndroidManifest.xml
	β”‚Β Β  β”‚Β Β      β”œβ”€β”€ main
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ AndroidManifest.xml
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ kotlin
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  └── com
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β      └── envytheme
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β          └── app
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β              └── econix
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β                  └── MainActivity.kt
	β”‚Β Β  β”‚Β Β      β”‚Β Β  └── res
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ drawable
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”‚Β Β  └── launch_background.xml
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ drawable-v21
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”‚Β Β  └── launch_background.xml
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ mipmap-hdpi
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”‚Β Β  β”œβ”€β”€ app_icon.png
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”‚Β Β  └── ic_launcher.png
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ mipmap-ldpi
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”‚Β Β  └── app_icon.png
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ mipmap-mdpi
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”‚Β Β  β”œβ”€β”€ app_icon.png
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”‚Β Β  └── ic_launcher.png
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ mipmap-xhdpi
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”‚Β Β  β”œβ”€β”€ app_icon.png
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”‚Β Β  └── ic_launcher.png
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ mipmap-xxhdpi
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”‚Β Β  β”œβ”€β”€ app_icon.png
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”‚Β Β  └── ic_launcher.png
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ mipmap-xxxhdpi
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”‚Β Β  β”œβ”€β”€ app_icon.png
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”‚Β Β  └── ic_launcher.png
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ values
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”‚Β Β  └── styles.xml
	β”‚Β Β  β”‚Β Β      β”‚Β Β      └── values-night
	β”‚Β Β  β”‚Β Β      β”‚Β Β          └── styles.xml
	β”‚Β Β  β”‚Β Β      └── profile
	β”‚Β Β  β”‚Β Β          └── AndroidManifest.xml
	β”‚Β Β  β”œβ”€β”€ build.gradle
	β”‚Β Β  β”œβ”€β”€ gradle
	β”‚Β Β  β”‚Β Β  └── wrapper
	β”‚Β Β  β”‚Β Β      └── gradle-wrapper.properties
	β”‚Β Β  β”œβ”€β”€ gradle.properties
	β”‚Β Β  β”œβ”€β”€ settings.gradle
	β”‚Β Β  └── upload-keystore.jks
	β”œβ”€β”€ app-logo.jpg
	β”œβ”€β”€ assets
	β”‚Β Β  β”œβ”€β”€ icons
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ about.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ accessories-fill.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ accessories.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ back-arrow.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ bag.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ battery-fill.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ battery.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ camera-fill.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ camera.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ cart-fill.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ cart-icon.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ cat-fill.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ cat.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ conditions.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ desktop-fill.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ desktop.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ email-icon.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ headphone-fill.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ headphones.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ heart-fill.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ heart-icon.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ home-fill.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ home.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ laptop-fill.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ laptop.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ lock.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ login.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ logoImg.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ logout.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ menu-icon.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ mobile-fill.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ mobile.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ name.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ order-icon.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ phone.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ products.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ profile-fill.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ profile.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ search-icon.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ share-icon.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ star.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ stereo-fill.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ stereo.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ store-fill.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ store.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ tick-square.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ tv-box.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ tv-fill.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ uk-flag.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ username.svg
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ watch-fill.svg
	β”‚Β Β  β”‚Β Β  └── watch.svg
	β”‚Β Β  └── images
	β”‚Β Β      β”œβ”€β”€ about-img.png
	β”‚Β Β      β”œβ”€β”€ airpod.jpg
	β”‚Β Β      β”œβ”€β”€ avatar.jpg
	β”‚Β Β      β”œβ”€β”€ banner-1.jpg
	β”‚Β Β      β”œβ”€β”€ banner-2.jpg
	β”‚Β Β      β”œβ”€β”€ banner-3.jpg
	β”‚Β Β      β”œβ”€β”€ banner-4a.jpg
	β”‚Β Β      β”œβ”€β”€ banner-4.jpg
	β”‚Β Β      β”œβ”€β”€ banner-5a.jpg
	β”‚Β Β      β”œβ”€β”€ banner-5.jpg
	β”‚Β Β      β”œβ”€β”€ banner-6a.jpg
	β”‚Β Β      β”œβ”€β”€ banner-6.jpg
	β”‚Β Β      β”œβ”€β”€ camera1.jpg
	β”‚Β Β      β”œβ”€β”€ camera2.jpg
	β”‚Β Β      β”œβ”€β”€ camera3.jpg
	β”‚Β Β      β”œβ”€β”€ cctv.jpg
	β”‚Β Β      β”œβ”€β”€ condition-img.png
	β”‚Β Β      β”œβ”€β”€ featur4.jpg
	β”‚Β Β      β”œβ”€β”€ feature1.jpg
	β”‚Β Β      β”œβ”€β”€ feature2.jpg
	β”‚Β Β      β”œβ”€β”€ feature3.jpg
	β”‚Β Β      β”œβ”€β”€ feature5.jpg
	β”‚Β Β      β”œβ”€β”€ feature6.jpg
	β”‚Β Β      β”œβ”€β”€ featureclothe.jpg
	β”‚Β Β      β”œβ”€β”€ featurefreezer.jpg
	β”‚Β Β      β”œβ”€β”€ featuretable.jpg
	β”‚Β Β      β”œβ”€β”€ feature-table.png
	β”‚Β Β      β”œβ”€β”€ headphone1.jpg
	β”‚Β Β      β”œβ”€β”€ headphone2.jpg
	β”‚Β Β      β”œβ”€β”€ headphone3.jpg
	β”‚Β Β      β”œβ”€β”€ headphone4.jpg
	β”‚Β Β      β”œβ”€β”€ headphone5.jpg
	β”‚Β Β      β”œβ”€β”€ headphone6.jpg
	β”‚Β Β      β”œβ”€β”€ keyboard1.jpg
	β”‚Β Β      β”œβ”€β”€ keyboard2.jpg
	β”‚Β Β      β”œβ”€β”€ keyboard3.jpg
	β”‚Β Β      β”œβ”€β”€ laptop1.jpg
	β”‚Β Β      β”œβ”€β”€ laptop2.jpg
	β”‚Β Β      β”œβ”€β”€ laptop3.jpg
	β”‚Β Β      β”œβ”€β”€ laptop4.jpg
	β”‚Β Β      β”œβ”€β”€ lcd.jpg
	β”‚Β Β      β”œβ”€β”€ lens2.jpg
	β”‚Β Β      β”œβ”€β”€ lens.jpg
	β”‚Β Β      β”œβ”€β”€ logoImg2.png
	β”‚Β Β      β”œβ”€β”€ logoImg2.svg
	β”‚Β Β      β”œβ”€β”€ logoImg.svg
	β”‚Β Β      β”œβ”€β”€ macbook.jpg
	β”‚Β Β      β”œβ”€β”€ microphone.jpg
	β”‚Β Β      β”œβ”€β”€ mouse.jpg
	β”‚Β Β      β”œβ”€β”€ playstation.jpg
	β”‚Β Β      β”œβ”€β”€ projector.jpg
	β”‚Β Β      β”œβ”€β”€ speaker.jpg
	β”‚Β Β      β”œβ”€β”€ splash.gif
	β”‚Β Β      β”œβ”€β”€ splash.mp4
	β”‚Β Β      β”œβ”€β”€ splash.png
	β”‚Β Β      β”œβ”€β”€ text74895.png
	β”‚Β Β      β”œβ”€β”€ uk-flag.png
	β”‚Β Β      β”œβ”€β”€ watch2.jpg
	β”‚Β Β      β”œβ”€β”€ watch3.jpg
	β”‚Β Β      └── watch.jpg
	β”œβ”€β”€ ios
	β”‚Β Β  β”œβ”€β”€ Flutter
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AppFrameworkInfo.plist
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Debug.xcconfig
	β”‚Β Β  β”‚Β Β  └── Release.xcconfig
	β”‚Β Β  β”œβ”€β”€ Runner
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AppDelegate.swift
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Assets.xcassets
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ AppIcon.appiconset
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Contents.json
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Icon-App-1024x1024@1x.png
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Icon-App-20x20@1x.png
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Icon-App-20x20@2x.png
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Icon-App-20x20@3x.png
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Icon-App-29x29@1x.png
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Icon-App-29x29@2x.png
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Icon-App-29x29@3x.png
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Icon-App-40x40@1x.png
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Icon-App-40x40@2x.png
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Icon-App-40x40@3x.png
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Icon-App-60x60@2x.png
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Icon-App-60x60@3x.png
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Icon-App-76x76@1x.png
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Icon-App-76x76@2x.png
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── Icon-App-83.5x83.5@2x.png
	β”‚Β Β  β”‚Β Β  β”‚Β Β  └── LaunchImage.imageset
	β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ Contents.json
	β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ LaunchImage@2x.png
	β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ LaunchImage@3x.png
	β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ LaunchImage.png
	β”‚Β Β  β”‚Β Β  β”‚Β Β      └── README.md
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Base.lproj
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ LaunchScreen.storyboard
	β”‚Β Β  β”‚Β Β  β”‚Β Β  └── Main.storyboard
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Info.plist
	β”‚Β Β  β”‚Β Β  └── Runner-Bridging-Header.h
	β”‚Β Β  β”œβ”€β”€ Runner.xcodeproj
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ project.pbxproj
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ project.xcworkspace
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ contents.xcworkspacedata
	β”‚Β Β  β”‚Β Β  β”‚Β Β  └── xcshareddata
	β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ IDEWorkspaceChecks.plist
	β”‚Β Β  β”‚Β Β  β”‚Β Β      └── WorkspaceSettings.xcsettings
	β”‚Β Β  β”‚Β Β  └── xcshareddata
	β”‚Β Β  β”‚Β Β      └── xcschemes
	β”‚Β Β  β”‚Β Β          └── Runner.xcscheme
	β”‚Β Β  └── Runner.xcworkspace
	β”‚Β Β      β”œβ”€β”€ contents.xcworkspacedata
	β”‚Β Β      └── xcshareddata
	β”‚Β Β          β”œβ”€β”€ IDEWorkspaceChecks.plist
	β”‚Β Β          └── WorkspaceSettings.xcsettings
	β”œβ”€β”€ lib
	β”‚Β Β  β”œβ”€β”€ config
	β”‚Β Β  β”‚Β Β  └── routes
	β”‚Β Β  β”‚Β Β      └── app_route.dart
	β”‚Β Β  β”œβ”€β”€ constants
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ api_path.dart
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ app_color.dart
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ app_constants.dart
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ app_text.dart
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ assets_path.dart
	β”‚Β Β  β”‚Β Β  └── size.dart
	β”‚Β Β  β”œβ”€β”€ core
	β”‚Β Β  β”‚Β Β  └── auth
	β”‚Β Β  β”‚Β Β      β”œβ”€β”€ login.dart
	β”‚Β Β  β”‚Β Β      └── register.dart
	β”‚Β Β  β”œβ”€β”€ main.dart
	β”‚Β Β  β”œβ”€β”€ module
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ controller
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ app_controller.dart
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ auth_controller.dart
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ base_controller.dart
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ cart_controller.dart
	β”‚Β Β  β”‚Β Β  β”‚Β Β  └── data_controller.dart
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ model
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ banner_model.dart
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ category_model.dart
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ checkout_model.dart
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ my_order_model.dart
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ product_model.dart
	β”‚Β Β  β”‚Β Β  β”‚Β Β  └── user_model.dart
	β”‚Β Β  β”‚Β Β  └── view
	β”‚Β Β  β”‚Β Β      β”œβ”€β”€ about_&_conditons
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ about.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  └── conditions.dart
	β”‚Β Β  β”‚Β Β      β”œβ”€β”€ cart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ cart.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  └── components
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ billing_address.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ cart_list.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ counter.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β      └── total_checkout.dart
	β”‚Β Β  β”‚Β Β      β”œβ”€β”€ category
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ category.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  └── components
	β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ category_tab.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β      └── category_tab_items.dart
	β”‚Β Β  β”‚Β Β      β”œβ”€β”€ home
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ components
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ banner_slider.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ best_seller.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ feature_list.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ flash_sale.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  └── special_product.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  └── home_page.dart
	β”‚Β Β  β”‚Β Β      β”œβ”€β”€ landing_page.dart
	β”‚Β Β  β”‚Β Β      β”œβ”€β”€ order
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ components
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ order_item.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  └── order_title.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  └── order_screen.dart
	β”‚Β Β  β”‚Β Β      β”œβ”€β”€ prodcut_details
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ components
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ info_with_button.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ placeholder.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ recommened_product.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  └── review.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  └── details_page.dart
	β”‚Β Β  β”‚Β Β      β”œβ”€β”€ products
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ components
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ product_tab.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”‚Β Β  └── product_tab_items.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  └── products.dart
	β”‚Β Β  β”‚Β Β      β”œβ”€β”€ profile
	β”‚Β Β  β”‚Β Β      β”‚Β Β  └── profile.dart
	β”‚Β Β  β”‚Β Β      β”œβ”€β”€ splash.dart
	β”‚Β Β  β”‚Β Β      └── wishlist
	β”‚Β Β  β”‚Β Β          β”œβ”€β”€ components
	β”‚Β Β  β”‚Β Β          β”‚Β Β  └── wish_list.dart
	β”‚Β Β  β”‚Β Β          └── wish_page.dart
	β”‚Β Β  β”œβ”€β”€ utils
	β”‚Β Β  β”‚Β Β  β”œβ”€β”€ helper
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ bindings.dart
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ dialog.dart
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ exception.dart
	β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ loader.dart
	β”‚Β Β  β”‚Β Β  β”‚Β Β  └── show_snack.dart
	β”‚Β Β  β”‚Β Β  └── service
	β”‚Β Β  β”‚Β Β      β”œβ”€β”€ api
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ auth_service.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ checkout.dart
	β”‚Β Β  β”‚Β Β      β”‚Β Β  └── product_service.dart
	β”‚Β Β  β”‚Β Β      └── payment
	β”‚Β Β  β”‚Β Β          └── payment.dart
	β”‚Β Β  └── widgets
	β”‚Β Β      β”œβ”€β”€ account_text.dart
	β”‚Β Β      β”œβ”€β”€ action_icon.dart
	β”‚Β Β      β”œβ”€β”€ bottom_nav.dart
	β”‚Β Β      β”œβ”€β”€ custom_app_bar.dart
	β”‚Β Β      β”œβ”€β”€ custom_button.dart
	β”‚Β Β      β”œβ”€β”€ header_text.dart
	β”‚Β Β      β”œβ”€β”€ heading_text.dart
	β”‚Β Β      β”œβ”€β”€ loading_indicator.dart
	β”‚Β Β      β”œβ”€β”€ menu_drawer.dart
	β”‚Β Β      β”œβ”€β”€ product_item.dart
	β”‚Β Β      β”œβ”€β”€ search_delegate.dart
	β”‚Β Β      β”œβ”€β”€ search_field.dart
	β”‚Β Β      └── search_screen.dart
	β”œβ”€β”€ LICENSE
	β”œβ”€β”€ pubspec.lock
	β”œβ”€β”€ pubspec.yaml
	β”œβ”€β”€ README.md
	β”œβ”€β”€ test
	β”‚Β Β  └── widget_test.dart
	└── web
		β”œβ”€β”€ favicon.png
		β”œβ”€β”€ icons
		β”‚Β Β  β”œβ”€β”€ Icon-192.png
		β”‚Β Β  └── Icon-512.png
		β”œβ”€β”€ index.html
		└── manifest.json


βš™οΈ Modules

Root
File Summary
pubspec.yaml The code above represents the pubspec.yaml file for a Flutter project called "shop". It includes the project name, description, version number, and environment specifications. It also lists the project dependencies, such as the Flutter SDK, various packages for features like icon fonts, HTTP requests, image caching, and more. Additionally, it specifies assets, including icons and images, that are used in the project. This file is crucial for managing project dependencies and assets in Flutter development.
pubspec.lock The code represents a directory tree structure for a Shop-Ecommerce-app. It consists of separate directories for Android and iOS, each containing files and folders relevant to their respective platforms. The "lib" directory contains various subdirectories for configuration, constants, core functionalities, modules, utilities, and widgets. These subdirectories have files with code for specific features and components required by the app, such as routes, models, controllers, views, helpers, services, and UI widgets.
.metadata HTTPStatus Exception: 429
Web
File Summary
manifest.json The code represents the manifest.json file for a Flutter project named "shop" in the web/ directory. The manifest contains metadata and configuration for a Progressive Web App (PWA), including the app's name, short name, start URL, display mode, background color, theme color, description, orientation, and icons in different sizes and types. This allows the app to be installed and launched as a standalone application on compatible devices.
index.html HTTPStatus Exception: 429
Lib
File Summary
main.dart HTTPStatus Exception: 429
Constants
File Summary
app_constants.dart HTTPStatus Exception: 429
app_text.dart HTTPStatus Exception: 429
assets_path.dart HTTPStatus Exception: 429
size.dart HTTPStatus Exception: 429
app_color.dart HTTPStatus Exception: 429
api_path.dart HTTPStatus Exception: 429
Auth
File Summary
login.dart HTTPStatus Exception: 429
register.dart HTTPStatus Exception: 429
Routes
File Summary
app_route.dart HTTPStatus Exception: 429
Helper
File Summary
exception.dart HTTPStatus Exception: 429
bindings.dart HTTPStatus Exception: 429
loader.dart HTTPStatus Exception: 429
dialog.dart HTTPStatus Exception: 429
show_snack.dart HTTPStatus Exception: 429
Payment
File Summary
payment.dart HTTPStatus Exception: 429
Api
File Summary
auth_service.dart HTTPStatus Exception: 429
product_service.dart HTTPStatus Exception: 429
checkout.dart HTTPStatus Exception: 429
Widgets
File Summary
search_delegate.dart HTTPStatus Exception: 429
custom_app_bar.dart HTTPStatus Exception: 429
menu_drawer.dart HTTPStatus Exception: 429
account_text.dart HTTPStatus Exception: 429
loading_indicator.dart HTTPStatus Exception: 429
action_icon.dart HTTPStatus Exception: 429
custom_button.dart HTTPStatus Exception: 429
product_item.dart HTTPStatus Exception: 429
search_screen.dart HTTPStatus Exception: 429
search_field.dart HTTPStatus Exception: 429
bottom_nav.dart HTTPStatus Exception: 429
heading_text.dart HTTPStatus Exception: 429
header_text.dart HTTPStatus Exception: 429
Model
File Summary
user_model.dart HTTPStatus Exception: 429
product_model.dart HTTPStatus Exception: 429
banner_model.dart HTTPStatus Exception: 429
category_model.dart HTTPStatus Exception: 429
checkout_model.dart HTTPStatus Exception: 429
my_order_model.dart HTTPStatus Exception: 429
Controller
File Summary
auth_controller.dart HTTPStatus Exception: 429
data_controller.dart HTTPStatus Exception: 429
cart_controller.dart HTTPStatus Exception: 429
app_controller.dart HTTPStatus Exception: 429
base_controller.dart HTTPStatus Exception: 429
View
File Summary
landing_page.dart HTTPStatus Exception: 429
splash.dart HTTPStatus Exception: 429
About_&_conditons
File Summary
about.dart HTTPStatus Exception: 429
conditions.dart HTTPStatus Exception: 429
Category
File Summary
category.dart HTTPStatus Exception: 429
Components
File Summary
category_tab.dart HTTPStatus Exception: 429
category_tab_items.dart HTTPStatus Exception: 429
placeholder.dart HTTPStatus Exception: 429
info_with_button.dart HTTPStatus Exception: 429
review.dart HTTPStatus Exception: 429
recommened_product.dart HTTPStatus Exception: 429
order_title.dart HTTPStatus Exception: 429
order_item.dart HTTPStatus Exception: 429
special_product.dart HTTPStatus Exception: 429
flash_sale.dart HTTPStatus Exception: 429
best_seller.dart HTTPStatus Exception: 429
banner_slider.dart HTTPStatus Exception: 429
feature_list.dart HTTPStatus Exception: 429
cart_list.dart HTTPStatus Exception: 429
total_checkout.dart HTTPStatus Exception: 429
billing_address.dart HTTPStatus Exception: 429
counter.dart HTTPStatus Exception: 429
product_tab_items.dart HTTPStatus Exception: 429
product_tab.dart HTTPStatus Exception: 429
wish_list.dart HTTPStatus Exception: 429
Prodcut_details
File Summary
details_page.dart HTTPStatus Exception: 429
Order
File Summary
order_screen.dart HTTPStatus Exception: 429
Profile
File Summary
profile.dart HTTPStatus Exception: 429
Home
File Summary
home_page.dart HTTPStatus Exception: 429
Cart
File Summary
cart.dart HTTPStatus Exception: 429
Products
File Summary
products.dart HTTPStatus Exception: 429
Wishlist
File Summary
wish_page.dart HTTPStatus Exception: 429
Runner.xcworkspace
File Summary
contents.xcworkspacedata HTTPStatus Exception: 429
Xcshareddata
File Summary
WorkspaceSettings.xcsettings HTTPStatus Exception: 429
IDEWorkspaceChecks.plist HTTPStatus Exception: 429
WorkspaceSettings.xcsettings HTTPStatus Exception: 429
IDEWorkspaceChecks.plist HTTPStatus Exception: 429
Runner
File Summary
Info.plist HTTPStatus Exception: 429
AppDelegate.swift HTTPStatus Exception: 429
Runner-Bridging-Header.h HTTPStatus Exception: 429
Launchimage.imageset
File Summary
Contents.json HTTPStatus Exception: 429
Appicon.appiconset
File Summary
Contents.json HTTPStatus Exception: 429
Base.lproj
File Summary
LaunchScreen.storyboard HTTPStatus Exception: 429
Main.storyboard HTTPStatus Exception: 429
Flutter
File Summary
Release.xcconfig HTTPStatus Exception: 429
Debug.xcconfig HTTPStatus Exception: 429
AppFrameworkInfo.plist HTTPStatus Exception: 429
Runner.xcodeproj
File Summary
project.pbxproj HTTPStatus Exception: 429
Xcschemes
File Summary
Runner.xcscheme HTTPStatus Exception: 429
Project.xcworkspace
File Summary
contents.xcworkspacedata HTTPStatus Exception: 429
Test
File Summary
widget_test.dart HTTPStatus Exception: 429
Android
File Summary
settings.gradle HTTPStatus Exception: 429
build.gradle HTTPStatus Exception: 429
App
File Summary
build.gradle HTTPStatus Exception: 429
Econix
File Summary
MainActivity.kt HTTPStatus Exception: 429

πŸš€ Getting Started

Dependencies

Please ensure you have the following dependencies installed on your system:

- ℹ️ Flutter >= 3.7.12

- ℹ️ Android SDK version >= 34.0.0

- ℹ️ Java build >= 17.0.6

πŸ”§ Installation

  1. Clone the Shop-Ecommerce-app repository and decompress it:
git clone https://github.com/jatolentino/Shop-Ecommerce-app
  1. Building the Gradle version of the Project

    • Create a Shop-Ecommerce-app.iml file in Shop-Ecommerce-app/android. The file name must be equal to the root folder's name, it will be empty, don't worry!
    • Open the folder project Shop-Ecommerce-app with Android Studio
    • Don't install the dependencies with the pub get recommendation from Android yet, we'll do it later, be patient :D
    • Now, go to Tools > Flutter and click on Open Android module in Android Studio
    • This will open a new window, where you will see Android Studio building your gradle
    • When the built process is completed, you will see a message suggesting to upgrade the Android Gradle plugin, do not select Start AGP Assistant, just proceed to close Android Studio because the project's Gradle has been built!!!
  2. Open the project folder Shop-Ecommerce-app with your favorite editor, like VS Code:

cd Shop-Ecommerce-app
code .

Make sure your have the flutter extensions installed in your IDE

  1. Install the dependencies:
flutter pub get
  1. Configure your android device

    • Open your android device with Virtual Device Manager of Android Studio
    • List the available android devices you have with flutter devices from the terminal
    • Annotate the name of your virtual android devices, usually it has a name like emulator-5554
    • Go to ./vscode folder and open launch.json file
    • Configure the name of your device in the last item object, should be like this if your device name was emulator-554
      {
         "name": "MyAndroid",
         "request": "launch",
         "type": "dart",
         "deviceId": "emulator-5554"
      }

πŸ’° Configure your Stripe keys

  • Go to lib\utils\service\payment\payment.dart and configure your keys:
String _secretKey = "sk_test_2hSm...";
String _publishableKey = "pk_test_51Ii...";

πŸ€– Running Shop-Ecommerce-app

  • Go to the Run and Debug option in the Activity Bar of VS Code
  • Choose MyAndroid in the dropdown tab, and run the project with the play button

πŸ“ Sing in your app and generate your APK file

If you prefer to see a video explanation of this section, please go to this link

  • Find your java path with:

    flutter doctor -v
  • Extract your path from the section Android toolchain - develop for Android devices, the java path is like: C:\Program Files\Android\Android Studio\jbr\bin\java

  • Open up a terminal and navigate to your path but dont't conside the \java

    cd C:\Program Files\Android\Android Studio\jbr\bin
  • Visit https://docs.flutter.dev/deployment/android and navigate to the section On Windows, use the following command in PowerShell, copy the code there and replace %userprofile% with a place you want to store your key, say in the folder keys on your desktop ( C:\Users\Admin\Desktop\keys). Execute that command in the terminal from C:\Program Files\Android\Android Studio\jbr\bin like:

    keytool -genkey -v -keystore C:\Desktop\keys\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload
  • When prompted to add your info, set your password and other information that dont matter.

  • Now, create a key.properties file in the android folder of the root project folder and fill out your password previously created and in the storeFile variable put the path where you stored your upload-keystore.jks key that you generated in the later step.

    keyAlias=upload
    keyPassword=password
    storeFile=C:/Desktop/keys/upload-keystore.jks
    storePassword=password

keyAlias is always the string upload :)

  • Now go to android\app\ and open build.gradle, modify the section signinConfigs with:

     signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
            storePassword keystoreProperties['storePassword']
        }
    }
  • Lastly, generate the apk with a build-name and build-number that you consider is appropiate with:

    flutter build apk --build-name=1.0 --build-number=1
  • Generate the Bundle app with:

    flutter build appbundle

Find your apk in Shop-Ecommerce-app-main\build\app\outputs\apk\release with the name app-release.apk and your bundle app in Shop-Ecommerce-app-main\build\app\outputs\bundle\release with the name app-release.aab

πŸ›£ Project Roadmap

  • ℹ️ Task 1: Implement X
  • ℹ️ Task 2: Implement Y
  • ℹ️ ...

🀝 Contributing

Contributions are welcome! Here are several ways you can contribute:

Contributing Guidelines

Click to expand
  1. Fork the Repository: Start by forking the project repository to your GitHub account.
  2. Clone Locally: Clone the forked repository to your local machine using a Git client.
    git clone <your-forked-repo-url>
  3. Create a New Branch: Always work on a new branch, giving it a descriptive name.
    git checkout -b new-feature-x
  4. Make Your Changes: Develop and test your changes locally.
  5. Commit Your Changes: Commit with a clear and concise message describing your updates.
    git commit -m 'Implemented new feature x.'
  6. Push to GitHub: Push the changes to your forked repository.
    git push origin new-feature-x
  7. Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.

Once your PR is reviewed and approved, it will be merged into the main branch.


πŸ“„ License

This project is protected under the SELECT-A-LICENSE License. For more details, refer to the LICENSE file.


πŸ‘ Acknowledgments

  • List any resources, contributors, inspiration, etc. here.

Return