Travis McKinstry, Saryn Mooney and Norma Lopez.
The link to this app can be found here.
To download this app onto your compter, follow the instructions labelled 'Local Setup';
In this project we were expected to build an app where a user can register and create viewing parties involving a movie of their choice. The app has the following features;
-a user can search through a list of 40 movies, taken from theMovieDB API
The purpose of this project was to get first-time practice and implemenation of API exposure and consumption as well as utilization of Continuous Integration using Travis CI. Although not required for this project, we wanted to learn how to mock external HTTP requests, which we were able to achieve with Webmock. We had a goal to implement mocking with VCR, but were unable to reach this goal within our deadline. Refactoring using Facade Design Patter was strongly encouraged for this project, which we decided as a team would be a goal for us. We achieved implementation of this design pattern and in doing so it allowed for better abstraction, encapsulation, single-responsibility.
We also used knowledge built on previous projects, such as; flash messages, CRUD functionality, MVP design patterns, and more.
- Make sure you have the correct Ruby version installed (2.5.3). To check your Ruby version, from your command line, run
ruby -v
- If you do not have the correct version, follow the instructions to install 2.5.3: from the command line, run
rbenv install 2.5.3
- Make sure you have the correct Rails version installed (5.2.4.3). To check your Rails version, from your command line, run
rails -v
- If you do not have the correct Rails version, follow these instructions to install 2.5.4.3
- Fork and Clone the repo
- Install gem packages:
bundle install
- Setup the database:
rails db:create
- You will need to sign up for an API key through theMovieDB API
- From the command line, run
bundle exec figaro install
. By running this command, rails will create an application.yml file under your config folder. Open up that file, and paste your API key in by following this format: MOVIE_API_KEY: 'your api key here' - Once inside the project directory, run
bundle exec rspec
. You should have several passing tests
- A new user can register with a username, email, and password. We used 'bcrypt' for password security and encryption
- Once logged in, a user can discover the top 40 movies, as well as search for movies based on a keyword
- On the movies index page, each movie title is a link, where a user can click to find more information about that particular movie
- If a user navigates back to their dashboard, they can 'Add Friends'! Search for friends by typing in their email, and if that email is associated with a registered user, then they will be added as a friend! Friendships are reciprocal, so once added by the user, that two-way friendship is created
- If a user has added friends, they have the ability to create a viewing party! They can select which friends they would like to invite, and select a movie to show!
- 'Recommended movies', and 'top rated movies' are both extra pieces of functionality that required additional API calls
-
Going forward we would love to incorporate sending an email once a user has either created a viewing party, or been invited to one. This email would serve as a notification, because currently, a user needs to sign into our app to see whether or not they have any viewing parties. This email could also include an option to 'accept' or 'decline' an invitiation
-
Incorporaing more JavaScript, especially for the index page to see all the movies. Currently, the styling is basic CSS/HTML cards. Eventually we'd like to be able to have nice styling effects for each movie (hover and the movie info appears, etc.).
-
I (Travis) have also made it a long term goal to continue adding and refactoring this project as I learn more.