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.
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
Run the SQL script in a database you have setup.
Here is the ER Conceptual and Logical diagrams for the database.
the endpoint for the Node.JS REST API is https://api.joelaustin.net.
The requests that you can make the API are as follows.
GET https://api.joelaustin.net/menu/[DATE]?type=[TYPE]
Date: e.g. '2019-02-20
Type: e.g. 1 (dinner) OR 0 (lunch/breakfast)
GET https://api.joelaustin.net/item/[ITEMID]
Item IDs range from 1 to however many items are in the database.
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]
This is a required endpoint for Google Assistant Actions and Dialogflow.
POST https://api.joelaustin.net/google
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
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
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.
My name is Joel Austin, I am a developer from the University of Pittsburgh.
Please visit my Website at http://JoelAustin.Net