-
- Visitors arrive on landing page when not logged in
- Visitors can sign up, log in, log out
- Visitors can use a demo login to try the site
- Visitors must log in to enter site
- Users arrive on home page when logged in
-
- Users can navigate profile options with drop-down menu
- Users can add profile with name/avatar
- Users can update profile name/avatar
- Users can delete profile
-
- Users have a watch list that is initially empty
- Users can add/remove videos to their watch list
-
- Users can search for videos by:
- Title
- Actor(Bonus)
- Genre(Bonus)
- Explore-block shows movie collections under text input
- Users can search for videos by:
-
- Users have a home page as a catalog/profile of videos
- Users can dynamically update home page based on recently watched items
- Users can view videos based on genre/type
- Users can browse through a main banner of ten featured/trending videos
- Users can browse across five major collections:
- Disney
- Pixar
- Marvel
- Star Wars
- National Geography
-
- Users can play/pause movie
- Users can time-stamp movie
-
- Users can resume play where they left off.
- Users can watch from the beginning.
-
- Users can change the global site language
-
- Users can see suggested search results render per keystroke
- GET / - Renders the default page
- GET /login - Render form to enter email credentials
- POST /login - Submits the email credtials, redirect to GET /login/password
- POST /login/password - Submits the password to the server and redirect to GET /account/profile/select if more than one profile
- POST /account/profile/select - Set the current profile and redirect to /home
- GET /home - Renders the catalogue
- GET /search - Render the search page
- PATCH /search - Update to display matched results
- GET /watchlist - Render the associated watchlist for current profile
- GET /movies - Renders all movies
- GET /movies/:id - Render the associated id movie
- DELETE /movies/:id - Deletes from watch list
- GET /series - Renders all series
- GET /series/:id - Renders the associated id series
- DELETE /series/:id - Deletes from watch list
- GET /select-avatar - Render possible avatars for a profile when you add or edit a profile
- PATCH /select-avatar - Save the selected avatar to the profile redirect GET /account/profile/add or account/profile/edit
- GET /add - Renders the add profile screen to add name and kid options
- POST /add:id - Save newly added profile redirects GET account/profile/select
- GET /select - Renders a screen to select current profile
- POST /select - Set the current profile and redirect to GET /home
- GET /edit - Renders a screen with all available profiles
- GET /edit:id - Renders a screen to edit the selected profile
- PATCH /edit - Updates the profiles and redirects to GET account/profile/select
- PATCH /edit:id - Updates the preferences for a selected profile and redirects to GET account/profile/select
- DESTROY /edit:id - Deletes selected profile and redirects to GET account/profile/edit
- GET /brand/:id
column name | data type | details |
---|---|---|
id | integer (serial) | not null, primary key |
string | not null, indexed, unique | |
passwordDigest | string | not null |
passwordSalt | string | not null |
sessionToken | string | not null, unique |
- Must always have at least one profile, but you may have up to 7 profiles per account.
column name | data type | details |
---|---|---|
id | integer (serial) | not null, primary key |
name | string | not null |
isKid | boolean | default false |
accountId | integer | not null, foreign key references Accounts(id) |
avatarId | integer | not null, foreign key references Avatars(id) |
column name | data type | details |
---|---|---|
id | integer (serial) | not null, primary key |
title | string | not null, unique, indexed |
description | string | not null |
rating | integer (serial) | not null |
year | integer | not null |
isOriginal | boolean | default false |
isMovie | boolean | not null |
runtime | string | not null |
director | string | nullable |
starring | string | not null |
seasons | string | nullable |
genres | string | not null |
details | string | not null |
videoUrl | url | not null |
titleImg | url | not null |
backgroundImg | url | not null |
buttonImg | url | not null |
brandId | integer | not null, foreign key references Brands(id) |
column name | data type | details |
---|---|---|
id | integer (serial) | not null, primary key |
brandName | string | not null |
titleImg | url | not null |
backgroundImg | url | not null |
buttonImg | url | not null |
column name | data type | details |
---|---|---|
id | integer (serial) | not null, primary key |
profileId | integer | not null, foreign key references Profiles(id) |
videoId | integer | (allow null), foreign key references Videos(id) |
column name | data type | details |
---|---|---|
id | integer (serial) | not null, primary key |
selection | string | not null |
column name | data type | details |
---|---|---|
id | integer (serial) | not null, primary key |
selection | string | not null |
column name | data type | details |
---|---|---|
id | integer (serial) | not null, primary key |
name | string | not null |
avatarImg | url | not null |
column name | data type | details |
---|---|---|
id | integer (serial) | not null, primary key |