Coder Social home page Coder Social logo

rancid-tomatillos's Introduction

Rancid Tomatillos

Preview

RancidTomatillos.mov

Abstract

Our team created a movie review site utilizing an API that presented us with with an array of movies and details. The user is able to search and filter by genre or title, and when a specific movie is clicked, the user will be presented a page with additional details regarding the movie's rating, release date, revenue, and several other details.

This project took place during the third inning of Turing's front-end software engineering program, and required us to utilize our newly learned skills in react to create a fully functioning site from design to operation in just under 2 weeks. As a team we utilized our project management and research skills to ensure we had the time and knowledge to complete this application.

Contributors

Dani Bagley
Tricia Holmes
Zac Walters

Research and Documentation

Initial design document:

image Our data model and DOM flowchart:

image

Project board we created and managed in GitHub:

image

Technologies

  • React
  • Fetch API
  • Cypress testing
  • Git/GitHub
  • GitHub project board
  • CSS
  • HTML

Methodologies

  • Design the UI to adapt to various screen sizes
  • Error handling
  • Implement react components which support a complex data model
  • Use object and array prototype methods to perform data manipulation
  • Create a user interface that is easy to use and clearly displays information
  • Write modular, reusable code that follows SRP (Single Responsibility Principle)
  • Make network requests to retrieve data
  • Demonstrate DRY principles
  • Utilize Agile/Scrum project management

Installation Instructions

  1. Fork this repository.
  2. Clone your new, forked repository to your local machine.
  3. cd into the project repository on your local machine and run npm install, then npm start to launch the application.
  4. Open the link to your local server (listed in your terminal) in your web browser to view the live page.

rancid-tomatillos's People

Contributors

tricia-holmes avatar daniabee avatar zacwalters4 avatar

Watchers

 avatar

Forkers

daniabee

rancid-tomatillos's Issues

Add defaultProps to banner

User Story:

N/A

Acceptance Criteria:

When banner receives no props, the banner should use the default props


Definition of Done:

  • Add defaultProps to banner

As a user, I should see all movies on app launch

User Story:

As a user, I should see all movies on app launch so I know what movies are available to look at


Acceptance Criteria:

When a user lands on on the app page, they should clearly see all the app's movies displayed without having to click on anything


Definition of Done:

  • When the app is initialized, componentDidMount makes a fetch request that receives all the data for the movies
  • AMovies Container Component maps through all movie data and creates instances of movie components and has a onClick event for showing movie details -> future feature
  • A Movie component receives data and creates a JSX Img element
  • User Story has been manually tested

As a user, when a movie’s details are displayed, I should have a way to return to the main view of all movies

User Story:

As a user, when a movie’s details are displayed, I should have a way to return to the main view of all movies


Acceptance Criteria:

When a movie’s details are displayed, I should have a clear way to navigate back to the main page


Definition of Done:

  • Have a button on the MovieDetails component
  • Button needs to have an event handler that closes the MoviesDetail component this can be done by setting App's currentMovie state back to empty object since we have conditional rendering in place already

As a user, I can click a movie, and see that movie’s details

User Story:

As a user, when I click on a movie then I will see the details for that movie


Acceptance Criteria:

When a user clicks on any movie displayed that they can click and see the movie details


Definition of Done:

  • Have a currentMovie in App State that defaults to {} on load
  • Create an onClick for the movie components -> this will be used to trigger the display for movie details
  • Have a handleClick in App that takes the event target id and searches App's movies state to find the movie that was clicked on. Once the movie is found, the currentMovie state is then set to the found movie
  • Have conditional rendering if currentMovie is defined then to render the MovieDetails component

REMAINING:

  • Create MovieDetails component to take in currentMovie as a prop
  • Create JSX elements to display movie details
  • Create initial css styling

As a user, when I land on the page I should see a movie banner img

User Story:

As a user, when I land on the page I should see a movie banner img

Acceptance Criteria:

When the user lands on the app home page, they should see a banner movie image


Definition of Done:

  • Add Cypress test the tests the page to contain an image in the banner section

Search Feature

To Dos:

  • We need a search input in the top right hand corner (UI), a search component that would filter the displayed movies by any word in the titles

bonus: search by genre

As a user, when the server returns a 500 error, I should see proper error handling

User Story:

As a user, when the server returns a 500 error, I should see proper error handling


Acceptance Criteria:

When the server returns an error, the user should see some visual that let's them know that something went wrong


Definition of Done:

  • Need to add a catch to our fetch
  • Need to add an error state to our app that starts off as empty and if the catch is trigger it sets our error
  • Need to add conditional rendering to our app, that if an error is defined to render an error JSX element

As a user, when I load the application, I can see the title of the application left top corner

User Story:

As a user, when I load the application, I can see the title of the application left top corner so I know what app I'm visiting


Acceptance Criteria:

When a user lands on on the app page, they can clearly see the app title


Definition of Done:

  • JSX element is rendered on load as an H1 element
  • Title is visible and easily readable in the top left corner
  • User Story has been manually tested

Add propTypes for our components

User Story:

N/A

Acceptance Criteria:

When props are passed down, they are the expected data type and console receives no errors


Definition of Done:

  • Add propType for Movies
  • Add propType for Movie
  • Add propType for Movie Details
  • Add propType for Banner

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.