This project was the result of a 4 credit Personal Projects class building a full stack progressive web application using a React/TypeScript/Bootstrap frontend, Java/Spring Boot/Docker backend, MySQL database, and AWS Lightsail Database and Container for hosting. This project allowed me to use many of the skills I have learned as part of my Computer Science courses and side learning/projects. I gained invaluable experience in designing, building, testing and deploying a full stack web application. This project helped me achieve the following learning goals: • Build a functional full-stack web application from the ground up. • Learn to implement more complicated features and design patterns of a Spring Boot application using an MVC model, REST APIs, Spring Security for user Auth using JWTs, JPA ODM, DTOs, Mappers, and Testing. • Using Maven to test, build, and package Spring Boot applications. • Using Docker to containerize a Spring Boot application and AWS CLI to deploy the container to AWS Lightsail container. • Learning to use React, Typescript, and Bootstrap to build a dynamic progressive web application frontend. • Learning more complicated React implementations using Components, Props, State, Hooks, Contexts, Event Handling and Conditional Rendering. • Using Postman/Newman to design and test API endpoints. • Configuring and working with local development environments and remotely hosted production environments. Throughout the development process, the UI/UX was a major factor. Below are some of the considerations made in the UI/UX design for this project: • Development of an efficient backend design that could quickly process API calls. • Create a clean and uniform design by using React-Bootstrap. • Using a collapsible NavBar to retain functionality on smaller windows/devices. • Use of conditional rendering based on user access to generate the correct add, edit, and delete buttons the user should have access to. • Implementation of Paging to limit the number of responses per page, improve latency, and decrease server load. • Consistent page layouts, color themes, and fields for uniformity. • Intuitive NavBar, Buttons and Links to view and access information. • Using Modals for entering reviews for entities. • Showing ratings in a familiar star rating system. • Efficient pages and handling for user Signup, Login and Logout. • Alert messages after transactions informing if the task was successful. When entities were added or deleted, the user is redirected to the entity page. • Using MySQLWorkbench to manage local and remote SQL servers. • Using git to effectively manage the two code bases. • Gain experience testing different designs and evaluating the tradeoffs of different design choices.