1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68# Amazon Clone
Full Stack Amazon Clone along with Admin Panel
## Features
- Email & Password Authentication
- Persisting Auth State
- Searching Products
- Filtering Products (Based on Category)
- Product Details
- Rating
- Getting Deal of the Day
- Cart
- Checking out with Google/Apple Pay
- Viewing My Orders
- Viewing Order Details & Status
- Sign Out
- Admin Panel
- Viewing All Products
- Adding Products
- Deleting Products
- Viewing Orders
- Changing Order Status
- Viewing Total Earnings
- Viewing Category Based Earnings (on Graph)
## YouTube
I have created a tutorial based on this, do check it out on my channel [Rivaan Ranawat](https://youtu.be/O3nmP-lZAdg)
<p align="center">
<img width="600" src="https://github.com/RivaanRanawat/flutter-amazon-clone-tutorial/blob/master/screenshot.png" alt="Youtube Tutorial Image">
</p>
## Running Locally
After cloning this repository, migrate to ```flutter-amazon-clone-tutorial``` folder. Then, follow the following steps:
- Create MongoDB Project & Cluster
- Click on Connect, follow the process where you will get the uri.- Replace the MongoDB uri with yours in ```server/index.js```.
- Head to ```lib/constants/global_variables.dart``` file, replace <yourip> with your IP Address.
- Create Cloudinary Project, enable unsigned operation in settings.
- Head to ```lib/features/admin/services/admin_services.dart```, replace ```denfgaxvg``` and ```uszbstnu``` with your Cloud Name and Upload Preset respectively.
Then run the following commands to run your app:
### Server Side
```bash
cd server
npm install
npm run dev (for continuous development)
OR
npm start (to run script 1 time)
```
### Client Side
```bash
flutter pub get
open -a simulator (to get iOS Simulator)
flutter run
```
## Tech Used
**Server**: Node.js, Express, Mongoose, MongoDB, Cloudinary
**Client**: Flutter, Provider
## Feedback
If you have any feedback, please reach out to me at namanrivaan@gmail.com