Compare critic and audience reviews for all your favourite movies!
Try it Out!
·
Report Bug or Request a Feature
A web application that compares the aggregate score given by viewers and reviewers for a particular movie on the Open Movie Database.
The application delivers a memorable user experience on top of a simple concept, with the application aiming to maximise time spent on site. It's designed to be immersive, with neon colours presented against a pitch-black background. It also has a sense of humour, with load spinners and the initial page view accompanied by randomly generated phrases. The functionality is kept to a minimum to provide an excellent experience on smaller screens.
Aside from using the project to learn React, this was also the first project I developed using TDD, using Jest as well as React Testing Library.
To get a local copy of Critics vs. The People up and running, follow these simple steps.
Install npm on your machine.
npm install npm@latest -g
- Clone the repo
git clone https://github.com/jackmulligan-ire/critics-versus-people.git
- Install NPM packages
npm install
- Launch the development server
npm start
Your local version of Critics vs. The People should now be available at localhost:3000
The following information is provided for each movie: its Metacritic (“Critics”) and IMDB rating (“The People”), as well as a short description and its poster (if available). An IMDB link is also provided, with this opening up a new tab to not break the user’s visit on the site.
An initial screen hints at the concept of the website, with a motto pitting critic and viewer opinion against one another. Many of these phrases are available, with a random number generator determining which one is shown each time. The application is made responsive through a mixture of Bootstrap’s default declaration and Sass files that set custom breakpoints for very small and very large screen sizes. All movie data is sourced from the Open Movie Database API, so it was necessary to include some form of load spinner. To prevent the immersion in the app from becoming broken, a phrase is also placed under the spinner. Multiple of these phrases are available, with one being selected at random on each call to the API. A timeout of 1 second is included on the get request to the API, so that the load phrase remains visible just long enough to be read by the user. Two sources of error are accounted for: connection errors and incorrect search terms. An error screen is in-place for both scenarios, with a search bar in the site’s navbar allowing the user’s experience on the site to continue.- Convert codebase from JavaScript to TypeScript.
- Increase testing coverage to mock the OMDb API.
- Second page showing data on movies with biggest differences in critical and audience reviews.
- Convert codebase to from React Class Components to Functional Components (Hooks).
If you have a suggestion to improve Critics vs. The People, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
You can also feel free to log bugs under Issues.
Distributed under the MIT License. See LICENSE.txt
for more information.
Jack Mulligan - LinkedIn - Email
- Thank you to The Odin Project for their fantastic resources on learning React and JavaScript testing.
- README template credit: Best README template
- Badges credit: Badges 4 README.md Profile