An entrepreneur wants to have a virtual store to offer advertising products such as mugs, stamps, t-shirts, and many more customizable objects.
There are three initial roles for this project:
- Can create an account on the page.
- On the home page, they will be able to see the list of products.
- For each product they can choose the number of printable object that they want, add a photo to personalize the product, or add a clear description of the design they want.
- Can add products to a shopping cart.
- By reviewing the order they will be able to see a summary of the total order price and delete product that they no longer want.
- After the order was sent the user can check the order and the order status.
- Each of the employees will have an account created by the admin.
- They can access the orders found in the system.
- They can download images that users have initially uploaded to the order.
- They can update the order status.
- They can update the item status independently.
- They can create, search, and update products.
- They can create, search, and delete employees.
- They can see all the products as client, but they will not have the checkout button available.
This project uses a number of open source projects to work properly:
- ReactJS
- Spring
- React Bootstrap
- React Router
- Bootstrap 5.1
- Junit
- MariaDB
- H2
- Maven
- Guava
- Spring Security
- JWT
- Install the maven dependencies
- Run
producttype.sql
,role.sql
andstate.sql
in theprinter-store/deploymentResources/insertQueries
folder. - Start the service running the
src/main/java/com/practicespring/printerstore/BasicSpringApplication.java
- Check out the postman and the different examples of request that you can make.
Deploy FrontEnd for full functionality.
-
How to handle inheritance in Spring entities. Person -> Client , Person -> Employee
-
Return JWT in the body, because the browser intercept the request, and it filters the authentication headers.
-
The default configuration is to accept only GET and POST, in spring security.
-
One controller with multiple access roles.
-
Save an image and receive simultaneously a json is impossible.
-
Beans override the application.properties.
-
Infinite recursion is avoided when only customizable products can have many raw products. But, raw products would never have a list of products.
-
How to create breakpoints in javascript.
-
Hooks vs Classes in ReactJS.