In this project, I worked in a four-person team to develop a full stack movie application for searching and bookmarking movies from IMDb. The application was designed from scratch with a PostgreSQL database, a backend system, and a single-page application for the frontend.
Links to the code:
https://github.com/ThomasBonderup/RAWDATA-project-group-1
https://github.com/ThomasBonderup/RAWDATA1-portfolio-subproject-2
Database Design
I contributed to designing a relational database schema for the movie application, including database normalization and entity–relationship (ER) modeling.
Database Functionality
The project included the development of advanced database query functionality, such as searching for movie titles, trigger functions to store user search queries in a search history table, extended search functionality based on title, plot, characters, and actors, exact-match queries using inverted indexes to match intersecting search terms, VARIADIC arrays, and search ranking functionality.
Application Design
The backend system was developed using ASP.NET Core with C#. The architecture followed a layered software architecture, consisting of a Web Service Layer implemented with ASP.NET Core MVC to expose a REST API. This API communicated with a Data Access Layer implemented using Entity Framework, utilizing Data Transfer Objects to persist data in a PostgreSQL database running on a server.
Pagination was added to the REST API along with basic API security through user authentication. Unit tests and integration tests were used extensively throughout the project.
Single Page Application
The movie application was designed as a Single Page Application (SPA), with functionality implemented in JavaScript using the Knockout web framework. Bootstrap was used to provide the user experience and layout.