zackapotamus / video-star

Organize your video disc collection

Home Page:https://video-star.herokuapp.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

VideoStar - A Full Stack React App

Table Of Contents

Description

This application is specially designed for video collectors and keep track of all the videos in their collection.

  • The user can search for movies in TMDB (The Movie Database) and add them to their collection.
  • After a search in TMDB, the user gets a table of movies with the results of the search term.
  • The search results table from TMDB show information about each movie: ** poster image ** movie title ** synopsis ** popularity ** realease date
  • The search results table from TMDB, allows the user to click on the Details button to get more details about a specific movie.
  • The search results table from TMDB, allows the user to click on the 3 Add buttons (Add Blu-Ray, Add DVD, Add Digital) to save the specific movie in their collection as Blu-Ray, DVD or Digital format.
  • The collection can be of 3 different types of videos: Blu-Ray, DVD or Digital.
  • The user can save their videos as physical Blu-Ray and DVD or as digital format.
  • The user can lend videos to other people and can specify to whom, the lending date and the agreed return date.
  • The user can borrow videos from other people and can specify from whom, the borrowing date and the agreed return date.
  • To use the app the user must signup for a free account or login with its credentials.
  • To signup, the user is required to provide a name, a valid email address and a password.
  • To login, the user only needs to provide a valid email and password.
  • The user session is controlled with a JWT (JSON Web Token) stored in the browser's Window.sessionStorage.
  • The user has a profile that can be updated.
  • Once authenticated, the user has access to all the features in the app.
  • Users that are not authenticated can not access any resources.

This is a Full Stack application that follows the MVC (Model View Controller) software design pattern. This app uses:

  • React JS is the front-end library that is acting as the View.
  • Express JS is the web server that is acting as the Controller.
  • MySQL is the database server that is acting as the Model.

This app contains React components, helper/util functions, and uses React lifecycle methods to query and display books based on user searches. Node, Express and MongoDB are used in the backend so that users can save books to review or purchase later.


Deployed App in Heroku

VideoStar in Heroku


GitHub Repository

VideoStar in GitHub


App Mockup Screenshots

Login and Signup Pages

login page

signup page


My Library and Lent/Borrowed Pages

my video library page

lent-borrowed page


Add To Library and Details Page

add to library page

details page


Lend and Borrow Pages

lend page

borrow page


Account Page

account page


User Experience Flow Mockup

User Experience Flow Page


Relational Database Design Mockup

Database Design


Real App Screenshots

Login and Signup Pages

login page

--->

signup page


My Library and Lent/Borrowed Pages

my video library page

--->

lent-borrowed page


Add To Library and Details Page

add to library page

--->

details page


Lend and Borrow Pages

lend page

--->

borrow page


Account Page

account page


Technologies Used in VideoStar

  • HTML (Hypertext Markup Language). The standard markup language for documents designed to be displayed in a web browser.

  • CSS (Cascading Style Sheets). CSS describes how HTML elements are to be displayed on screen, paper, or in other media.

  • Javascript. A lightweight, interpreted, or just-in-time compiled programming language with first-class functions. It is the scripting language for Web pages, although many non-browser environments also use it (Node.js, Apache CouchDB and Adobe Acrobat). JavaScript is a prototype-based, multi-paradigm, single-threaded, dynamic language, supporting object-oriented, imperative, and declarative (e.g. functional programming) styles.

  • jQuery. It is a JavaScript library that makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers.

  • Bootstrap. The world’s most popular front-end open source toolkit to quickly design and customize responsive mobile-first sites.

  • Nodejs

  • npm Packages

    • Expressjs. As a web server.
    • Mysql. As a driver for mysql.
    • Axios. Promise based HTTP client for the browser and node.js
    • Bcryptjs. A library to help hash passwords.
    • Dotenv. Loads environment variables from a .env file into process.env. Storing configuration in the environment separate from code is based on The Twelve-Factor App methodology.
    • If-env. To simplify npm scripts.
    • JSON Web Token. Open industry standard (RFC 7519) method for representing claims securely between two parties.
    • Sequelize. A promise-based Node.js ORM (Object-Relational Mapping) for Postgres, MySQL, MariaDB, SQLite and Microsoft SQL Server. It features solid transaction support, relations, eager and lazy loading, read replication and more.
    • Concurrently. For development purposes only. Instead of running all commands in separate terminals, we can use concurrently, which allows to run multiple commands concurrently.
    • Nodemon. For development purposes only. It automatically restarts the node application when file changes in the directory are detected.
    • Moment. Library for parsing, validating, manipulating, and formatting dates.
    • React. A library for creating user interfaces.
    • React DOM. The entry point to the DOM and server renderers for React.
    • React Icons. Utilizes ES6 imports that allows you to include only the icons that your project is using.
    • React Router DOM. DOM bindings for React Router.
    • React Scripts. Configuration and scritps for Create React App
    • React Toast Notifications. A configurable, composable, toast notification system for react.
    • Read More React. It "intelligently" truncates text at the appropriate point given a min, an ideal, and max text length.
    • React Date Picker. Allows a user to use a calendar to pick up a date when filling an input form. A date picker for the React app, where the user can pick days, months, years, or even decades. Supports virtually any language. No moment.js is needed.
  • The Movie Database API.

the movie database logo

  • Create React App. Sets up a modern React web app by running one command.

  • Full CRUD Operations. Create, read, update, and delete are the 4 basic functions of persistent storage.

  • Heroku. A cloud application platform to host web apps. It is a Platform as a Service (PaaS) that enables developers to build, run, and operate applications entirely in the cloud.

  • MVC (Model-View-Controller). This app follows the MVC paradigm, a software design pattern commonly used for developing user interfaces which divides the related program logic into 3 interconnected elements.

  • Environment Variables. An environment variable is a variable whose value is set outside the program, typically through functionality built into the operating system or microservice. An environment variable is made up of a name/value pair, and any number may be created and available for reference at a point in time.

  • Adobe Illustrator. The state of the art in illustration. A vector-based graphics software that scales down for mobile screens and up to billboard size. The results always look crisp and beautiful.

  • Adobe Photoshop. A photo editor to create and enhance photos, images, and designs.

  • Trello. A visual tool for organizing your work and life. It is an excellent lightweight project management tool. It is easy on the eye and relatively straightforward to use.

  • MySQL Workbench. A unified visual tool for database architects, developers, and DBAs.

  • Postman. The Collaboration Platform for API Development. Quickly and easily send REST, SOAP, and GraphQL requests directly within Postman.

  • Slack. Slack brings the team together, wherever you are. With all of your communication and tools in one place, remote teams will stay productive no matter where you’re working from.

  • Zoom. Unifies cloud video conferencing, simple online meetings, and group messaging into one easy-to-use platform.

  • Google Meet. Premium video meetings in the browser.


Coding Requirements

This application has the following requirements:

  • Must use React JS
  • Must use Node and Express JS Web Server
  • Must be backed by a database, like MySQL or MongoDB
  • Must use a ORM (Object-Relational Mapping) like Sequelize or a ODM like Mongoose
  • Must have full CRUD routes for retrieve, add, update and delete data.
  • Must be deployed in Heroku with data.
  • Must use at least 2 new libraries, packages or technologies.
  • Must use user authentication
  • Must have a polished font end user interface.
  • Must follow the MVC paradigm
  • Must follow best practices for directory structure.
  • Must follow good quality coding standards (indentation, scope, naming conventions, etc).
  • Must use an external API call.
  • Must hide the API key with environment variables.
  • Must hide sensitive information from the public.

About

Organize your video disc collection

https://video-star.herokuapp.com


Languages

Language:JavaScript 94.8%Language:CSS 3.1%Language:HTML 2.1%