Ecommerce application is simple ecommerce application POC built with Spring boot backend and VueJs frontend.
This project is designed for simple ecommerce application that run on any docker container. Mainly focused on three major use case scenario.
- Publicly browse products
- Customers browse and purchase with one click checkout option
- Merchants can be able to add their products to the application
Amazon S3 and Image transformation API is required to run application.
Application backend components
- Spring Boot
- PostgresSQL
- Redis
- TransformImgs -> Open source image transformation library uses ImageMagick
- Amazon S3
Ecommerce application is a simple monolith single page application. Frontend application communicates with backend side on secured and public REST API.
Application has 3 roles,
ADMIN
- > Admin user to manage/browse API swagger documentation.MERCHANT
- > User can add/modify productsCUSTOMER
- > Regular user type who can purchase products
Two types of backend API is designed for application.
/public/*
- > Public REST API for registration or browsing products that are no user required/api/*
- > Secured REST API for product or customer related resources that requiredJWT
token at Authorization header.
For database version control Liquibase is used. All type of users are populated with it.
To simulate Amazon S3 environment, Localstack is used. To reduce the size of the images, TransformImgs is used. It is a simple REST API version of ImageMagick.
OpenAPI documentation can be browsed at http://localhost:8081/admin/swagger
which is generated by swagger.
Only ADMIN
role user can be able to log in and test credentials are;
[email protected]
E3VG5mmq8WCK
CoreUI Vue Admin Template is used for frontend of application. It has already built in components and offers production ready user experience.
Browse in setup
folder and run
docker-compose up --build -d
To stop application
docker-compose down
Localstack is using localstack-data
in setup
folder and delete to reset all images.
PostgreSQL is using postgres-data
in setup
folder and delete to erase database.