Skip to content

A webpage that can search OMDB for movies, and allows users to save their favorite films they feel should be up for nomination.

Notifications You must be signed in to change notification settings

shinellm/the-shoppies-awards

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

the-shoppies-awards

If you want to see the project in action, visit the delpoyed project on Heroku!

This project is my submission for the UX Developer Intern & Web Developer Intern Challenge created by Shopify. The project was built using my boilerplate-cra-nodejs project, which has a React frontend and a custom Node backend (server for API, proxy, & routing).

In this project you are presented with a webpage that can search OMDB for movies. It allows users to save their favorite films they feel should be up for nomination in The Shoppies: Movie awards for entrepreneurs.

Project Features

The minimal requirement for this project were to create a user interface that does the following:

  • The webpage searches OMDB and displays movies only
  • Users can add a movie from the search results to their nomination list
  • Users can view the list of films already nominated
  • Users can Remove a nominee from their nomination list
  • Users can nominate up to 5 of their favorite films

Some technical requirements mentioned:

  • Search results should come from OMDB's API (free API key: http://www.omdbapi.com/apikey.aspx).
  • Each search result should list at least its title, year of release and a button to nominate that film.
  • Updates to the search terms should update the result list
  • Movies in search results can be added and removed from the nomination list.
  • If a search result has already been nominated, disable its nominate button.
  • Display a banner when the user has 5 nominations.

Additional features that I added:

  • Created a simple landing page to give users some information about the site and instructions on how to use it
  • Emulated the Popdog Beta game card hover effect
  • Users can trigger a modal that displays movie details just by clicking on a movie title's image
  • A load more button, which loads in more movies that fit the movie title a user has searched for
  • Integrated notifications, which popup in the bottom right hand corner when the user has added/removed a movie from their nominations list
  • Added a confirmation page, which the user is navigated to after successfully submitting their list of 5 movie nominations
  • Added an error page, which appears if a user's list of 5 movie nominations was not successfully submitted
  • Added a 404 page if the user navigates to a page that doesn't exist
  • Created a nominees page to display all of the movies that have been nominated so far and how many nominations each has received
  • Highlighted the nominated movies which rank in the top 3 for most nominations
  • Integrated the ability to quickly create/share posts about the site on social media
  • Created scroll button to quickly navigate to the top of the page
  • Added various usability enhancements, animations, and styling (the website is not currently mobile ready, but is desktop ready)

Web Demo

A small demo of the website is shown below:

React App Demo

File Layout

This project consists of a client folder, which contains the React frontend UI, and a server folder, which contains the Node backend server. The boilerplate is a combination of two npm projects, so there are two package.json configs and therefore two places to run npm commands:

  1. Node server: ./package.json
  2. React client: client/package.json

Local Development

Because this app is made of two npm projects, there are two places to run npm commands:

  1. Node API Server at the root ./
  2. React Frontend UI in client/ directory.
  • 📝 Note: To simplify this process, "npm-run-all" was added to the devDependencies. Local development can instead be started at the root ./ via "dev" script:
# Initial setup
npm install

# Start the backend and frontend servers
npm run dev

Run the Node API Server

In a terminal:

# Initial setup
npm install

# Start the server at http://localhost:8080/
npm start

Install new npm packages for Node:

npm install package-name --save

Run the React Frontend UI

The React app is configured to proxy backend requests to the local Node server. (See "proxy" config)

In a separate terminal from the API server, start the UI:

# Always change directory, first
cd client/

# Initial setup
npm install

# Start the server http://localhost:3000/
npm start

Install new npm packages for React Frontend UI:

# Always change directory, first
cd client/

npm install package-name --save

About

A webpage that can search OMDB for movies, and allows users to save their favorite films they feel should be up for nomination.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published