You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ecommerce application based on microservice architecture built using Spring-boot (back-end) and React JS (front-end).
2
+
eCommerce application based on the microservices architecture built using Spring-boot (back-end) and React JS (front-end).
3
3
4
4
**DEMO**
5
-
- Deployed to Heroku Cloud:
6
-
7
-
https://shoppers-ecom-app.herokuapp.com
5
+
- Deployed to Heroku Cloud:
6
+
7
+
https://shoppers-ecom-app.herokuapp.com
8
+
9
+
**Note:** It is running on a free dyno, so the services go to sleep if not in use.
10
+
For the first time, it may take some time to respond.
8
11
9
-
**Note:** It is running on a free dyno, so the services goes to sleep if not in use.
10
-
For the first time it may take some time to responds.
11
-
12
12
**FEATURES**
13
13
14
-
- Google OAuth 2.0 support for a quick login.
15
-
- Regular Username/Password authentication.
16
-
- Search bar and Search suggestions help to find products quickly.
17
-
- Stores user information in MySQL database.
18
-
- Stores API data in Redis Cache to minimize network calls.
19
-
- Select filters to display products based on the selections.
20
-
- Sort products by popularity, newest and prices.
21
-
- Pagination to display max products on a single page.
22
-
- Stores authentication details like token information in cookies.
23
-
- Store cart's products information in cookies.
24
-
- Payment service using Stripe's API to buy products.
25
-
14
+
- Google OAuth 2.0 support for quick login.
15
+
- Regular Username/Password authentication.
16
+
- Search bar and Search suggestions help to find products quickly.
17
+
- Stores user information in the MySQL database.
18
+
- Stores API data in Redis Cache to minimize network calls.
19
+
- Select filters to display products based on the selections.
20
+
- Sort products by popularity, newest, and prices.
21
+
- Pagination to display max products on a single page.
22
+
- Stores authentication details like token information in cookies.
23
+
- Store cart's product information in cookies.
24
+
- Payment service using Stripe's API to buy products.
25
+
26
26
**TOOLS USED**
27
27
28
-
-**ReactJS:** Front-end Javascript framework.
29
-
-**Spring-boot 2.0:** Back-end JAVA framework to build microservices using Spring
30
-
Rest Controller and Spring JPA.
31
-
-**Material-UI:** Used Google's material design based on CSS Framework for a responsive website.
32
-
-**Semantic-UI:** Used some components which Material-UI doesn't support.
33
-
-**MySQL:** Stores product and user information.
34
-
-**Redis:** Stores API data in key-value pairs.
35
-
-**Cloudinary:** CDN server for storing product images.
36
-
-**Google OAuth:** 3rd Party authentication service for quick login by retrieving user profile information.
37
-
-**Stripe:** Payment service API to handle user payment requests.
38
-
-**Heroku Cloud Platform:** Deploying microservices on Heroku.
39
-
-**Docker-Compose:** Easy way to bring up the application using containerization
40
-
and behaves similar in production environment.
41
-
28
+
-**ReactJS:** Front-end Javascript framework.
29
+
-**Spring-boot 2.0:** Back-end JAVA framework to build microservices using Spring
30
+
Rest Controller and Spring JPA.
31
+
-**Material-UI:** Used Google's material design based on the CSS Framework for a responsive website.
32
+
-**Semantic-UI:** Used some components which Material-UI doesn't support.
33
+
-**MySQL:** Stores product and user information.
34
+
-**Redis:** Stores API data in key-value pairs.
35
+
-**Cloudinary:** CDN server for storing product images.
36
+
-**Google OAuth:** 3rd Party authentication service for quick login by retrieving user profile information.
37
+
-**Stripe:** Payment service API to handle user payment requests.
38
+
-**Heroku Cloud Platform:** Deploying microservices on Heroku.
39
+
-**Docker-Compose:** Easy way to bring up the application using containerization and behaves similarly in the production environment.
40
+
42
41
**MICROSERVICES**
43
42
44
-
-**React-UI Service:** Front-end client UI which displays data and makes API calls using Axios API.
45
-
-**Common Data Service:** Handles client request to provide common data such as product, filters, categories and order information etc.
46
-
-**Authentication Service:** Creates user account and handles username/password authentication.
47
-
-**Payment Service:** Handles payment request from the client and makes subsequent request to Stripe API
48
-
for money deduction.
49
-
-**Search Suggestion Service:** Provide default search suggestions and provides suggestions based on a prefix
50
-
using Hashmap. The service creates the Hashmap based on available data from the database with various combination
51
-
and populates the map.
43
+
-**React-UI Service:** Front-end client UI which displays data and makes API calls using Axios API.
44
+
-**Common Data Service:** Handles client request to provide common data such as product, filters, categories and order information, etc.
45
+
-**Authentication Service:** Creates user account and handles username/password authentication.
46
+
-**Payment Service:** Handles payment requests from the client and makes a subsequent request to Stripe API
47
+
for money deduction.
48
+
-**Search Suggestion Service:** Provide default search suggestions and provides suggestions based on a prefix using Hashmap. The service creates the Hashmap based on available data from the database with various combinations and populates the map.
52
49
53
-
**Steps for executing application using docker-compose:**
50
+
**Steps for executing theapplication using docker-compose:**
54
51
1. Clone/Download the repository.
55
52
56
53
2. Set the environmental variables which will be impacted on docker-compose.yml.
57
-
You can check .env-setup file. Most of the variables are already set.
58
-
You need to create Stripe account and Google OAuth credentials.
54
+
You can checkthe .env-setup file. Most of the variables are already set.
55
+
You need to create a Stripe account and Google OAuth credentials.
59
56
These accounts are doesn't charge you anything and are absolutely free.
Go [Here](https://console.developers.google.com) to create Google OAuth Credentials.
70
67
71
-
3. Build all the microservices and run the app using docker-compose. This is done using ./start-all.sh script which creates
72
-
the network and set the container dependencies based on the config mention in the docker-compose.yml.
68
+
3. Build all the microservices and run the app using docker-compose. This is done using ./start-all.sh script which creates the network and set the container dependencies based on the config mention in the docker-compose.yml.
73
69
This will build all the jar files and run all the services.
74
70
```
75
-
./start-all.sh
71
+
./start-all.sh
76
72
```
77
73
78
-
4. If you are making any change in the code then you need to you ./stop-all.sh to clean up
79
-
the jars created by ./start-all.sh script. Also, you need to remove the images from the docker
80
-
otherwise it will occupy the image spaces unnecessarily.
81
-
74
+
4. If you are making any change in the code then you need to you ./stop-all.sh to clean up the jars created by ./start-all.sh script. Also, you need to remove the images from the docker otherwise it will occupy the image spaces unnecessarily.
0 commit comments