Version: 1.0
You are tasked with creating an API for an application that the company is building for a client. The application is a movies indexing application that will have high volumes of traffic and thus it needs to be fast, efficient and robust while being secure at the same time.
The application has the following functionality:
- Home
- List top 5 highest rated movies [Done]
- Movies List
- List Movies [Done]
- Search [Done]
- Filter by Genre [Done]
- Movie detail
- Display selected movie detail information [Done]
- Create Movie
- Create a new movie that can be retrieved in the movies list [Done]
- Update Movie
- Update movies data. [Done]
- ASP.NET (AspNetCore) (3.1 or higher)
- Microsoft Orleans (3 or higher)
- GraphQL (3 or higher)
You may use any 3rd party libraries which can facilitates your development.
- A complete working solution with GraphQL and Orleans pre-configured. You do not need to create the boilerplate code yourself
- A
movies.json
with some mock data that can be used as your database (Although you might opt to use some other datasource)
- Make sure the startup project is set to
Movies.Server
- The project has one controller
SampleDataController
that has to requests: - There is also a Graph Query for the Application
AppGraphQuery
and one GraphTypeSampleDataGraphType
- Accessible through:
http://localhost:6600/api/graphql
- Sample query:
query sampleData($id: String!) { sample(id: $id) { id, name } }
- Accessible through:
- All the endpoints call one simple Grain called
SampleGrain
that holds the data on the Orleans server
- Pre-loading data in memory on App Start-up so it can be retrieved faster (using the required technologies)
- Use of good design patterns that avoid bottle necks
- Add Unit tests
- Rudimentary UI
- Dockerized application
If you get the demo in good shape and have extra time, add your own flair and features.
- Provide a working application
- Provide source code in a public git such as github or Bitbucket repository
- Provide markdown readme file
- General information about the app
- Provide steps how to build/launch your application
Good luck!