Case study

IMDb Clone — Full-Stack Application

A full-stack application developed as a technical challenge, combining a Next.js frontend with a REST API built using Node.js, Express, and TypeScript. The platform provides movie management, user authentication, role-based access control, and a rating system, using MySQL for data persistence and OpenAPI for API documentation.

Jan 2025Jan 2025
imdb

Technologies

TypeScriptExpress.jsNext.jsNode.jsReactKnex.jsMySQLJWTSwagger / OpenAPI

The problem

The challenge was to design an IMDb-inspired application capable of integrating frontend, backend, and database layers into a complete architecture. In addition to displaying movies, the solution needed to support user authentication, different permission levels, catalog management, movie ratings, and a structured API that could be securely consumed by the frontend.

The solution

A full-stack application was developed using Next.js for the frontend and a REST API built with Node.js, Express, and TypeScript for the backend. MySQL was used for data persistence, with migrations providing version control for the database structure. The backend was organized into controllers, services, routes, and middleware to separate request handling, business rules, and data access responsibilities. Authentication was implemented using JWT and middleware responsible for validating users before allowing access to protected routes. Role-based authorization was also implemented so that administrative actions such as creating, updating, and deleting movies are restricted to authorized users. The API was documented using OpenAPI, with a Postman collection provided to simplify testing and integration.

Responsibilities

Responsible for the end-to-end design and implementation of the solution, from architecture definition and database modeling to frontend and backend development. Responsibilities included REST API development, authentication and authorization implementation, user, movie, and rating flows, database migrations, MySQL integration, ERD modeling, OpenAPI documentation, Postman collection creation, and integration between the Next.js application and backend API.

Technical decisions

TypeScript was used across both frontend and backend to improve type safety and maintain consistency between application layers. Next.js was selected for the frontend because it provides a React-based architecture with built-in routing, componentization, and support for multiple rendering strategies. Node.js with Express was selected for the backend to create a lightweight and modular REST API. The application was organized into controllers, services, routes, and middleware to avoid coupling business logic directly to HTTP routes. MySQL was selected as the relational database, while Knex was used to manage schema migrations. JWT was adopted for authentication, with additional backend validation to ensure that both the token and its associated user remain valid before granting access to protected resources. Role-based middleware was used to restrict administrative operations. OpenAPI, ERD modeling, and Postman were used to document the API contract, data structure, and request flows respectively.

Results

The project resulted in a functional full-stack application integrating frontend, backend, and relational database layers, including authentication, role-based authorization, movie catalog management, and user ratings. The solution also established a documented API contract and a version-controlled database structure through migrations, making the application easier to configure, test, and evolve. The challenge strengthened practical experience in full-stack development, REST API architecture, route security, relational data modeling, and integration between multiple application layers.

IMDb Clone — Full-Stack Application | Felipe Micheletti