GitXplorerGitXplorer
J

Pitt-Menu

public
0 stars
0 forks
23 issues

Commits

List of commits on branch master.
Unverified
9c2a13984c975af12c37822df89373358a3757ea

Sass setup

committed 5 years ago
Unverified
2eeac49b71a74ebce8d6fde8341b5afa5f1af908

eslint setup

committed 5 years ago
Unverified
83c4f74cadb04d46afad4a377dc96b4f23e9b9d3

New React TypeScript Pitt Menu App Created.

committed 5 years ago
Unverified
3a0792abfb46a5069ab1df4f45e9c0e6b8540776

ImageSearch try case

committed 5 years ago
Unverified
265199e5ec58170bd6ce638efa9a719f6869b043

ReadMe Typo

committed 5 years ago
Unverified
003b17b0e5434eb697c5032f2645825ab8bc5bd1

Updated ReadMe

committed 5 years ago

README

The README file for this repository.

Pitt-Menu

Repo for my undergraduate capstone project. The project is a fullstack application that parses a PDF of the menu from my school's dining hall, and uploads it to a normalized database. The data is then used in a Node.JS REST API and delivered to multiple front-end apps. The front end apps include a mobile and desktop friendly React App, as well as a Google Home Action for getting the lunch and dinner menu for the day.

Table of Contents

Python PDF Processor

This part of the project is found under the File Processor folder and is written in python. It downloads the university menus from a source link and differentiates between lunch and dinner menus. It then reads the items from the menus and uploads them to the MySql database.

To Run, install the dependenices using:

pip3 install [dependency]

Then:

python3 FormatPdf.py

Python Dependencies

MySQL Database

Run the SQL script in a database you have setup.

Here is the ER Conceptual and Logical diagrams for the database.

Conceptual

diagram

Logical

diagram2

Node.JS REST API

the endpoint for the Node.JS REST API is https://api.joelaustin.net.

The requests that you can make the API are as follows.

Menu for a specific date

GET https://api.joelaustin.net/menu/[DATE]?type=[TYPE]

Date: e.g. '2019-02-20

Type: e.g. 1 (dinner) OR 0 (lunch/breakfast)

Data for a specific item by item ID

GET https://api.joelaustin.net/item/[ITEMID]

Item IDs range from 1 to however many items are in the database.

Rating for specific item

Honestly, I don't know why i didn't just include this with the one above. 1 request > 2 requests.

GET https://api.joelaustin.net/ratings/[ITEMID]

Google Actions Webhook

This is a required endpoint for Google Assistant Actions and Dialogflow.

POST https://api.joelaustin.net/google

Invoking the Python Processor

When a GET request is made to this address it creates a child process that runs the python script that reads the PDF. This is automatically called every monday at 11AM EST.

GET https://api.joelaustin.net/invoke

React Web App

The Pitt Menu Web Application is built using React. It uses a mix of Semantic UI and my own styles and components. It can be visited below.

https://pitt-menu.joelaustin.net

System Architecture

Below is a diagram that outlines the system architecture for Pitt Menu. The data is stored in a mix of MySQL and Google Firebase. Firebase Mostly handles the user authentication.

test `

About the Developer

My name is Joel Austin, I am a developer from the University of Pittsburgh.

Please visit my Website at http://JoelAustin.Net