yBlackBox
logo
project screenshots

Project Overview



Objective

Using React, build the client-side for an application called myFlix based on its existing server-side code (REST API and database).


Planning



User Stories

  • As a user, I want to be able to access information on movies, actors, directors and genres so that I am able to learn more.
  • As a user, I want to be able to create a profile, make a favorites list to save favorite movies, and be able to update my profile data.

User Flow

Wireframes




Style Guide



Color Palette

I oriented the style of the website on the classical simple style in a dark theme.




Background Color:

#0D1A25


Component Color:

#122535


Link Hover Color:

#F90606


Button Color:

#59A9F0


Typography


Joan


Icongraphy



FontAwesome:

TrashCan


FontAwesome:

Pen-to-Square




Development



Technologies Used

  • Programmed using the MERN tech stack which stands for:
    • MongoDB: Database used to store movie data
    • Express: Node.js web framework
    • React: JavaScript framework
    • Node.js: runtime environment , allows JavaScript to be used on the server side
  • HTML
  • CSS / React Bootstrap



Challenges:



  • As the lessons on CareerFoundry were not up to date with the new versions for example of React and React Router, I had to rely on other sources to program this site. As a web developer it is important to stay up to date and continue learning, which is why I choose to program with the current versions.
    • I studied the official documentation to help me complete the tasks, which was difficult at times but it gave me the opportunity to gain more experience with reading documentations.
  • I decided to include more views, and functions than the lesson stated to have a chance to learn more.
    • I wanted to make the password change function on the user update view more secure. The user needs to type in their old password and their new password, then in the backend the program checks if the old password is the same as that which is saved in the database and only if it returns true the password will be changed.
      • A consequence of this was that I had to go back to the API to make a new endpoint which has the logic behind it to handle the password comparison and change.