Code Monkey home page Code Monkey logo

moovli's Introduction

CircleCI Test Coverage

Moovli

Description | Live Demo | The Team | Challenges and Goals | Features | User Stories | Getting Started | How to Run the Tests | How to Run the App | Design Approach | Technologies Used | Code Quality | Continuous Integration

Description

Struggling to find a great movie? Are you spending hours scrolling down Netflix as your eyes glaze over and you become increasingly bored?

Introducing Moovli - a movie suggestion app that allows you to find the best movies from across the world. Moovli allows users to interact with a map and click on any country to see some of best movies available.

Live Demo

The application is deployed to Heroku at this link: https://moovli.herokuapp.com

The Team

This was a group project during the final two weeks at Makers Academy. The team was composed by:

Challenges and Goals

  • Build a front-end web application that people would use and have fun playing around with.
  • Use and understand React design patterns and its testing frameworks Jest and Enzyme.
  • Handle nested asynchronous requests from multiple APIs within a React application.
  • Deploy a front-end app to Heroku, given API restrictions for production websites.
  • Use Python to scrape data from the internet and save it into a usable JSON format.

Features

Homapage

  • If you click on a country that doesn't have any available movie, the info window shows a useful message to the user:

No Movies

  • If you click on a country that has available movies, you are redirected to the movies page, with the best movies from that country:

Movies

  • If you click on one of the genre buttons, you can filter the movies by genre:

Filter Movies by Genre

  • If you click on the IMDB link, you are redirected to the IMDB web page of the selected movie:

Imdb Hyperlink

User Stories

As a user,
So that I can see all countries,
I'd like to see a map of the World

As a user,
So that I can choose a country,
I'd like to be able to be able to click on a country

As a user,
So that I can see some great movie suggestions,
I'd like to see a list of movies for the country I selected,

As a user,
So that I can recognize each movie,
I'd like to see the title of each movie.

As a user,
So that I can know what a movie is about,
I'd like to see a description of each movie.

As a user,
So that I can know the level of a movie,
I'd like to see the ratings for each movie.

As a user,
So that I can know how old is a movie,
I'd like to see the release date for each movie

As a user,
So that I can return to the home page,
I'd like to be able to use a back button on the movies page.

As a user,
So that I can pick my favorite type of movie,
I'd like to be able to filter the available movies by genre.

As a user,
So that I can read reviews and learn more about a movie,
I would like to see a link to the IMDB page for each movie.

Getting Started

  • Clone this repository with git clone [email protected]:AndreaDiotallevi/moovli.git
  • Change into the folder with cd moovli
  • Install all the dependencies with npm install

How to Run the Tests

To run all the tests type npm test

How to Run the App

Start the local server with npm start

Design Approach

The application has four react components and each of them has a clear responsibility:

  • App: application main container.

  • Home: responsible for showing the homepage title and containing the MapContainer component.

  • MapContainer: responsible for showing the map and managing the info window.

  • Movies: responsible for listing the best movies for each country and filtering them by genre.

Technologies Used

  • Main technologies:

    • React: a JavaScript library we used to build the user interface and gather data from external APIs.
    • Google Maps React: a library that includes a helper to wrap around the Google maps API.
    • Python: a general purpose programming language we used for web scraping (see this helper repository).
    • CSS Flexbox: the flexible box layout module makes it easier to design flexible responsive layout structure without using float or positioning.
  • External APIs:

    • Google Maps Api: web service we used to show the map on the page and get geographical coordinates from the user click.
    • LocationIQ API: web service we used to get the country information from geographical coordinates.
    • OMDb API: web service we used to get each movie information by title.
  • Testing frameworks:

    • Jest: a JavaScript Testing Framework with a focus on simplicity.
    • Enzyme: a JavaScript Testing utility for React that makes it easier to test the React Components' output.

Code Quality

ESLint: tool for identifying and reporting on patterns found in ECMAScript/JavaScript code, with the goal of making code more consistent and avoiding bugs.

Continuous Integration

CircleCI: tool for automating the development process quickly, safely, and at scale.

moovli's People

Contributors

andreadiotallevi avatar tuannguyen1010 avatar denriquem avatar hishambokhari avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.