This project contains of all the source code for my current personal project, The Open Movie DB clone.
This project will only contain the Back-end code, the front-end code will be stored in a seperate reposity which can be found here
As part of the README file it will describe and explain the following sections:
- Purpose
- Core features
- Technologies used
- Getting started
- Testing
- Reporting issues
- Feature requests
- Project information
The TheOpenMovieDB-Clone-Graphql-Service is a simple GraphQL service which allows client-side applications to search for movies, tv shows, celebrities. This is also possible thanks to TheOpenMovieDB public facing RESTful API interface
While most of the heavy will work will done by their API it will be this API's job to ensure all the data is optimized and transformed into a useable format for the client-sides state management library, apollo-client.
As of the current version of the GraphQL service, it is currently capable of performing the following tasks:
-
Search for Movies, TV Shows, People
-
Search for a Movies, Person and Show
-
Search for a movies and shows reviews, cast, crew, reccomendations, keywords, social and videos
-
Discover films and shows
-
Search the most popular movies, shows and people
-
Search for movies and shows which are currently playing
-
Search for upcoming movies and shows
-
Search for top rated movies and shows
-
Filter for credits, this is an indvidual endpoint for filtering through a persons credits by categories ike acting, writing, producing etc
-
Provide a cache via the apollo-server caching mechanism, it will currently cache for 1 hour
-
Generate the endpoints based on the config provided through the env variables
-
Providing various utils for certain situations e.g. convering values to percentages, replacing object keys, generating custom dates etc
-
Clear and easy to understand documention which is automatically generated by the apollo-server, it inteligently knwons all the schemas and resolvers
- eslint
- eslint-config-airbnb-base
- eslint-config-prettier
- eslint-plugin-import
- eslint-plugin-prettier
- jest
- prettier
-
Clone the project to your development environment by using
git clone https://github.com/AlexMachin1997/TheOpenMovieDB-Graphql-Example.git
-
Install all dependencies for the application by issuing this command
npm run coreDependencies
(Excludes all development dependencies e.g. prettier, eslint, jest etc)
To get started with the testing suites you will need to install all the development dependencies used for the application. To install the dependencies use npm run devDependencies
, this will install all the development dependencies. By choosing install all the development dependencies you will be able to run unit and integration tests aswell as linting and prettifying the applications code.
The Applications tests
-
GraphQL resolver mocking (COMING SOON)
-
Checks all the math utils work as exepected e.g. outputting numbers into percentages
-
Checks all the the date utilites work as expected e.g. outputting a celebrites birthday
-
Checks images can generate an absolute image url e.g. https://image.tmdb.org/t/p/w440_and_h660_face/q3E71oY6qgAEiw6YZIHDlHSLwer.jpg
-
Checks the "Discover" endpoints query parameters can be generated e.g. ?search="Iron Man"
-
Checks all the object utils work as expected e.g. updating object keys
-
Checks all the resolver specific utils work as expected e.g. sorting data
If you find any problems while using the API, report them here, and I will address them as quick as I can.
If you would like to request features for future versions of the application again, please post them here. When posting ideas ensure the functionality is explained to provide any developers contributing to the project know what to implement.
If you would like to impliment a feature in the issues list or refactor existing code (Withut breaking exisitng functionality), feel free to form the repo and submit a PR detailing all the changes mades.
Alex Machin
If you want to connect with me on my professional social network platforms feel free to use the links located below, but please don't abuse them.
The application is currently at version 1.2.0, with each feature added it will increment based on these guidelines
This project is licensed under the MIT License, for more details about the PWA refer to the LICENSE.md file located within the project.