Giter Club home page Giter Club logo

eventrecommendation's Introduction

Event Recommendation & Ticket Search System

  • Designed and maintained an interactive web page for clients to search events and purchase tickets demo

Table of contents

1. Project Description

  • Link to the web application
  • Frontend: an interactive web page with AJAX technology implemented with HTML, CSS and JavaScript. This web application supports 3 major implementations:
    • Auto-Search events around users based on geolocation
    • Favorite events when the user likes while Unfavorite events when user unlikes the events
    • Show recommendation of events around based on their favorite history
  • Backend: create Java servlet with RESTful APIs in Apache Tomcat to handle HTTP requests and responses
    • Utilized relational and NoSQL databases (MySQL/MongoDB) to store real business data, such as name, description, location and price, from TicketMaster API
    • Design content-based recommendation algorithm for event recommendation
    • Deployed server to Amazon EC2 to handle 160 QPS tested by Apache JMeter

2. Infrastructure Design

  • 3-tier architecture
    • Presentation tier: HTML, CSS, JavaScript
    • Data tier: MySQL, MongoDB
    • Logic tier: Java
  • Local and remote development environment

local environment

Local development environment

remote environment

Remote development environment

3. Java Servlet Design

  • Logic tier(Java Servlet to RPC)
    • Search
      • searchItems
      • Ticketmaster API
      • parse and clean data, saveItems
      • return response
    • History
      • get, set, delete favorite items
      • query database
      • return response
    • Recommendation
      • recommendItems
      • get favorite history
      • search similar events, sorting
      • return response
    • Login
      • GET: check if the session is logged in
      • POST: verify the user name and password, set session time and marked as logged in
      • query database to verify
      • return response
    • Logout
      • GET: invalid the session if exists and redirect to index.html
      • POST: the same as GET
      • return response
    • Register
      • Set a new user into users table/collection in database
      • return response

APIs design

APIs design in logic tier

  • TicketMasterAPI Official Doc - Discovery API
  • Recommendation Algorithms design
    • Content-based Recommendation: find categories from item profile from a user’s favorite, and recommend the similar items with same categories.
    • Present recommended items with ranking based on distance (geolocation of users)

recommendation algorithm

Process of recommend request

4. Database Implementation

  • MySQL
    • users - store user information.
    • items - store item information.
    • category - store item-category relationship
    • history - store user favorite history

mysql

MySQL database design

  • MongoDB
    • users - store user information and favorite history. = (users + history)
    • items - store item information and item-category relationship. = (items + category)
    • logs – store log information

5. Design pattern

  • Builder pattern: Item.java
    • When convert events from TicketMasterAPI to java Items, use builder pattern to freely add fields.
  • Factory pattern: ExternalAPIFactory.java, DBConnectionFactory.java
    • ExternalAPIFactory.java: support multiple function like recommendation of event, restaurant, news, jobs… just link to different public API like TicketMasterAPI. Improve extension ability.
    • DBConnectionFactory.java: support multiple database like MySQL and MongoDB. Improve extension ability.
  • Singleton pattern: MySQLConnection.java, MongoDBConnection.java
    • Only create specific number of instance of database, and the class can control the instance itself, and give the global access to outerclass

Acknowledgement

  • Above figures credit to Hannah Wang

eventrecommendation's People

Contributors

moonsulong avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.