GitHub repository: zongchanglyu/Fabflix_Project
Primary language: Java
Description: Fabflix - an online movies shopping web application (Course project)   Fabflix is a website on which user can buy all kinds of movies. This web application built on Tomcat server and the database I choose is mysql, browser using AJAX sending requests to Tomcat server, and using mircro-service architecture and it is deployed on AWS.  On Fabflix, user could search movies by its title, year, director or stars’ name, browse by movies’ title or genres, and movies can be sorted by rating or title(from A to Z or Z to A). Fabflix support pagination and user can change the number of movies on one page, user can also check the detail information of single movie or single star. By using a login filter, it could guarantee that only after user successfully login, they can access our web content. If customers want to buy some movies, they can just click ‘add to cart’, and in their shopping cart, they can modify the quantity of movies or delete items, or go to the payment page. To place their order, they should provide correct information on their credit card, if the payment is successful, the transaction would be recorded into our database. To make it more security, this web application using HTTPS, preparedStatement before send queries to backend database, adding reCAPTCHA powered by google. To protect customers’ information, the login password is encrypted. To allow administrator manage this website, Fabflix enable employee dashboard, it would show the metadata of database and administrator can add new movies and new stars to database manually, using a mysql store procedure ‘add_movie’ we created. We import large XML data files into the Fabflix Database. Using DOM approach to parse the XML files, and using in-memory hash table and batch inserts to tune the performance. To make the search box more powerful, we support full-text search and autocomplete suggestion. To optimize user experience, we implement fuzzy search using user defined functions(udf) to allow some typos during search(i.e. show results of whose edit distance <=2). We also want to scaling Fabflix and tune the performance. We enable Connection Pooling for all servlets, enable MySQL replication on the scaled version, and only write requests can only be routed to master SQL, read requests can be routed to anyone, using a cluster of Tomcat server and a load balancer(apache 2). Using Jmeter simulate stress test and measure the performance of Fabflix.