Skip to content

AWS hosted full stack web app that allows logged-in users to browse and purchase movies using Tomcat and a MySQL database

Notifications You must be signed in to change notification settings

v74c63t/fabflix

Repository files navigation

Fabflix

About

Fabflix is an AWS hosted full stack web app that allows logged-in users to browse and purchase movies using Tomcat and a MySQL database. There is also a simplified Android version that communicates with the backend api to perform fulltext search. On top of that, this repo includes an XML parser for parsing certain XML files from the Stanford InfoLab Movie Database which contains additional movies, stars, and genres to add to the database.

Configuration

TomCat

  • Username: admin
  • Password: mypassword

MySQL

  • Username: mytestuser
  • Password: My6$Password

Set Up

  1. Create the database
    mysql -u mytestuser -p < create_table.sql
    
  2. Update the sales table
    mysql -u mytestuser -p < update_sales_table.sql
    
  3. Add stored procedures
    mysql -u mytestuser -p < stored-procedure.sql
    
  4. Create indexes
    mysql -u mytestuser -p < create_index.sql
    

Deployment

AWS

Single Instance

  • Run mvn package in the directory where pom.xml is located
  • Then run cp ./target/*.war /var/lib/tomcat/webapps/ to copy the war file into tomcat/webapps

Scaling up

  • In both the master and slave instance:
    • Run mvn package in the directory where pom.xml is located
    • Then run cp ./target/*.war /var/lib/tomcat/webapps/ to copy the war file into tomcat/webapps
  • Set up Apache2 webserver on the load balance instance by creating a load balancer proxy for the master and slave instance and make it so it is configured to enable load balancing, Connection Pooling, and sticky sessions

Android

  • If the server is running on localhost, the Android app should be able to run properly without needing any changes
  • If the server is running on AWS, the urls will need to be changed in each of the files so it can make calls to the server

Features

Fabflix Desktop

General User
  • Login
  • Login Filter
  • reCaptcha Verification
  • Top 20 Movies Page
  • Single Movie Page
  • Single Star Page
  • Search by Genre
  • Search by Start Character
  • Advanced Search
    • Search by Title, Director, Year, and/or Star
    • Substring Matching Design
      • %AB%: For a query 'AB', it will return all strings the contain the pattern 'AB' in the results
      • LIKE '%AB%'
  • Fulltext Search
  • Search Autocomplete
  • Persisting Search Results Page
    • Even if the user navigates to a different page, their previous search results will be kept and can be accessed on the search results page
  • Search Results Pagination
  • Search Results Filters
    • Sorting
      • Sort by Title
      • Sort by Rating
      • Any combination of sorting ascending or descending can be applied
    • Page Size Limits
  • Add Movie to Cart
  • Movie Cart Page
    • Users can increment/decrement the copies of a movie in their cart
    • Users can delete a movie from their cart
  • Payment Page
  • Payment Confirmation Page
Employees/Developers
  • Employee Login
  • Employee Login Filter
  • reCaptcha Verifications
  • Database Metadata Page
  • Database Modifications using Stored Procedures
    • Adding a New Movie
      • Existing Movie: The title, director, and year inputted matches a movie in the database
    • Adding a New Star
      • Existing Star: Both the star name and the star birth year inputted matches a star in the database
    • Adding a New Genre
      • Existing Genre: The name inputted matches a genre in the database
Others

Fablix Mobile

  • Login
  • Fulltext Search
  • Search Result Pagination
  • Single Movie Page

Walkthrough

Fabflix Desktop

Fabflix Mobile

fabflix mobile video walkthrough

Additional Notes

XMLParser

  • There is a README file in the xmlParser directory with additional information about how to run the parser, the assumptions made while parsing the files, and the inconsistency files logged during parsing

JMeter Log Processing

  • There is a README file in the logs directory with additional information about how to run the JMeter logs processor and JMeter measurements for the web app

API + Database

  • Refer to DOCS.md for more information about the API endpoints and the database schema

Contributors

Vanessa Tang @v74c63t

Haver Ho @haverh

About

AWS hosted full stack web app that allows logged-in users to browse and purchase movies using Tomcat and a MySQL database

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published