Cinema.Database
This project provided an opportunity to develop both the backend and frontend of an application using the MERN stack (MongoDB, Express, React, Node).
The backend utilizes numerous modules, most prominently Express, for interacting with a small database of films and users through a RESTful API. The final NoSQL database was also written from scratch in MongoDB using the Mongo Shell, and an earlier version of the database was written in PostgreSQL to practice utilizing a relational database. Registered users are authenticated using JWT, and authorization of a valid user is required to access the database. All API testing was done using Postman, and you can find a collection of these tests on the API GitHub page.
The frontend is a single-page application built with React. It uses a combination of class and functional components in order to showcase my knowledge of lifecycle methods, hooks, and prop types. The UI was built with React Bootstrap, and the final design is the result of a collaboration with Anna Ferrari.
Special care was taken to implement a straightforward UX system regarding user validation of the forms on the site, whose input must be compatible with the requirements of the API. API requests are handled using Axios.
While the project was originally developed in the MVC design pattern, a Flux design pattern was implemented in the final app to better handle persistent state across components, using React Redux.