ReactJS-Spring-Boot-Full-Stack-App
This project consists of two applications: one is a Spring Boot Rest API called spring-backend and another is a ReactJS application called react-frontend.
Service-oriented platform focusing on establishing and maintaining connections between consumers and small businesses in the The Arts, Entertainment, and Recreation sector.
Applications
- spring-backend
Spring Boot Web Java backend application that exposes a REST API to manage hobbies. Its secured endpoints can just be accessed if an access token (JWT) is provided.
spring-backend stores its data in a MySql database.
spring-backend has the following endpoints
| Endpoint | Secured | Roles |
| POST /users/authenticate | NO | USER and BUSINESS |
POST /hobbies/create-offer {“name”,”slogan”, “category”, “intro”, “description”,”price”,”creator”,”location”,”profileImgUrl”,”galleryImgUrl1”, “galleryImgUrl2”,”galleryImgUrl3”, “contactInfo” } | YES | BUSINESS |
| DELETE /hobbies/delete-hobby/{sbdbId} | YES | BUSINESS |
| GET /user-home/{sbdbUsername} | YES | USER |
| GET /hobbies/hobby-details/{sbdbId} | YES | USER and BUSINESS |
| GET /hobbies/is-saved {“id”, “username”} | YES | USER |
| GET /hobbies/saved-hobbies/{sbdbUsername} | YES | USER |
| GET /business-owner/{sbdbUsername} | YES | BUSINESS |
| GET /hobbies/remove-hobby {“id”, “username”} | YES | USER |
| GET /hobbies/remove-hobby {“id”, “username”} | YES | USER |
PUT /hobbies/update-hobby {“name”,”slogan”, “category”, “intro”, “description”,”price”,”creator”,”location”,”profileImgUrl”,”galleryImgUrl1”, “galleryImgUrl2”,”galleryImgUrl3”, “contactInfo”, “id” } | YES | BUSINESS |
| POST /users/login/{sbdbUsername} | YES | USER and BUSINESS |
POST /test/results {“categoryOne”,” categoryTwo”, “categoryThree”, “ categoryFour”,” categoryFive”, “ categorySix”, “ categorySeven”, “location” } | YES | USER |
| POST /users/change-password {“email”} | NO | USER and BUSINESS |
| POST /users/change-password-new {“id”, “username”} | NO (link from Email) | USER and BUSINESS |
| POST /users/register-business {“username”,”businessname”, “address”, “email”,”password”, “repeatpassword”} | NO | BUSINESS |
| POST /users/rsignup {“username”,”fullName”, “gender”, “email”,”password”, “repeatpassword”} | NO | USER |
| GET users/show-business-details/{sbdbUsername} | YES | BUSINESS |
| DELETE users/delete-user/{sbdbId} | YES | USER and BUSINESS |
| PUT users/update-business {”businessname”, “address”,”password”, “id”} | YES | BUSINESS |
| PUT users/update-USER {,”fullName”, “gender”, ”password”, “id”} | YES | USER |
| GET users/show-client-details/{sbdbUsername} | YES | USER |
-react-frontend
ReactJS frontend application where users can find and save hobbies and businesses can manage offers. In order to access the application, user / business must login using his/her username and password. All the requests coming from react-frontend to secured endpoints in spring-backend have a access token (JWT) that is generated when user / business logs in.
react-frontend uses Semantic UI React as CSS-styled framework.
Prerequisites
-Java 11+
-npm
-JWT