C# Exercise – Creating a Movie Recommendations WebAPI Project

Let’s create a WebAPI Project following some standards to improve our coding skills, such as the usage of some design patterns, a specific architecture, some clean code principles, and much more!

Movie Recommendations C# Exercise

Exercise premise: You are tasked with developing a movie recommendation system using .NET and C#. The system should be able to recommend which movies a user can watch, using a simple random criteria over a collection of movies (Feel free to experiment with logic in this specific area).

The importance of this exercise is to implement a fully working Rest API solution, which is able to handle the creation of Users, creation of Movies, and to provide the said logic to recommend movies.

This is a practical exercise to improve your coding skills in terms of:

  • Coding best practices
  • Usage of design patterns
  • Use of modern libraries

Specific Features

  • Users can create a new movie entry.
  • Users can create a new user profile.
  • Users can get a list of recommended movies based on their interests.

Technologies to use

  • .NET and C# for the backend implementation
  • ASP.NET Core for building the RESTful API
  • Clean Architecture
  • Entity Framework Core for database access (Repository pattern is a plus)
  • MediatR for implementing the mediator pattern
  • FluentValidation for model validation
  • SQL Server for the database

Solution

As you might imagine, there are multiple ways to create this solution, but what’s most important is how you implement the said features, in order to practice successfully the usage of good coding practices, design patterns, usage of modern libraries, etc

Below you will find a proposed solution to use as example in case you get stuck and need something to compare against your implementation

Github Repository: https://github.com/marcelomusza/MovieRecommendations/

Feel free to suggest any contributions, in case you find better ways to handle what was proposed in the example repository!

I hope you find this exercise useful, and helpful in order to improve your coding skills!

See you on the next exercise!