Snack Rice - A Rice University servery finder, customized for your needs!

Overview

🍚 Snack Rice

Table of Contents

  1. About
  2. Feature List
  3. 15 Simple Steps
  4. Future Todos
  5. Techstack
  6. Hosting

Quick Info:

Built in under 36 hours, Snack Rice is your go-to place for Rice University's serveries (cafeterias for non-Ricers). Snack Rice combines a Yelp-like website for rating food with a notification system for getting custom recommendations based on distance, quality, and dietary restrictions. With the ability to review all servery food, filter food based on dietary restrictions, and set up custom SMS messages to alert you of your favorite foods, Snack Rice will help you to get the most out of your meal plan.

📚 Feature List:

- Automated tasks to scrape meal information from dining.rice.edu
- Customized meal text notifications using the Twilio API and a Node.js server
	- Dietary restrictions (vegan, vegetarian, gluten free, and more)
	- Proximity from serveries (Google Maps API)
	- Reviews of dishes
	- Notification timing
- Review every dish with star rating and review text
- View weekly future meals
- Option for crowdsourcing data and images if Rice website is incorrect
- Infinite scroll leaderboard of users with the most reviews
- Infinite scroll leaderboard of dishes with the best reviews
- Persistent light/dark themes based off user choice and browser settings

👣 15 Simple Steps to Communicate Between Text, Django, Flask, and Google Maps:

1. User sets up account with Snack Rice
2. User puts in phone number, preferences about walking and food quality, dietary restrictions, and notification timing
3. Django timed task calls notification loop
4. Django calls Google Maps API to determine distances between serveries and default locations
5. Django determines the best choice based on distances, reviews, and restrictions
6. Django sends the best servery choice and menu
7. If user is not in default location, user responds to text
8. Flask server reads text
9. Flask server sends request to Google Maps API
10. Flask texts user detailed location choices based on their input
11. User responds to text with one of the location choices
12. Flask sends text to django with user info and location choice
13. Django calls Google Maps API to get distances
14. Django determines the best choice based on distances, reviews, and restrictions
15. Django sends text with Twilio to user

🔮 Future Todos:

- Add food poisoning alert
- Adding information for calories for each meal
- Suggests what food you should try out in your next adventure - machine learning 😉
- Reviews with markdown and likes
- See where your friends/followers are eating

🤖 Techstack:

- Django (python)
- Django templates (html/css/js/python)
- SQLite
- Flask (python)
- ngrok (Flask on the internet)
- Twilio (sms)
- Google Cloud (Google Maps API)
- Domain.com (domain registration and management)
- Cloudflare (security and performance)

🖥️ Instructions on how to host locally

First, clone the repository.

$ git clone [email protected]/AidanG1/snackRice.git
$ cd snackRice

Then set up your virtual environment and install the requirements.

$ pip install -r requirements.txt

Next apply database migrations

$ python manage.py migrate

Finally, run the website on localhost. Visit localhost:8000 in your browser!

$ python manage.py runserver

To receive notification messages, create environment variables account_sid, auth_token, and msg_service_sid with your Twilio credentials and GOOGLE_KEY with your Google Maps API key. Then open up the flask server.

$ python notification.py

After that, use ngrok to open port 5050 to the internet.

$ ngrok.exe http 5050

Copy the url from ngrok into the Twilio GUI and you are now set up to receive notifications!

Created by Aidan Gerber, Ian Rundle, Karl Hernandez, and Phoebe Scaccia

Owner
Aidan Gerber
Creator of basketballstocks.com and tradethisandthat.com
Aidan Gerber
Mnemosyne: efficient learning with powerful digital flash-cards.

Mnemosyne: Optimized Flashcards and Research Project Mnemosyne is: a free, open-source, spaced-repetition flashcard program that helps you learn as ef

359 Dec 24, 2022
A web interface for a soft serve Git server.

Soft Serve monitor Soft Sevre is a very nice git server. It offers a really nice TUI to browse the repositories on the server. Unfortunately, it does

Maxime Bouillot 5 Apr 26, 2022
Easily map device and application controls to a midi controller

pymidicontroller Introduction Easily map device and application controls to a midi controller

Tane Barriball 24 May 16, 2022
personal dotfiles for rolling release linux distros

dotfiles Screenshots: Directions: Deploy my dotfiles with yadm Packages from arch listed in .installed-packages Information on osu! see ~/Games/osu!/.

-pacer- 0 Sep 18, 2022
Script para generar automatización de registro de formularios IEEH

Formularios_IEEH Script para generar automatización de registro de formularios IEEH Corresponde a un conjunto de script en python que permiten la auto

vhevia11 1 Jan 06, 2022
Explore-bikeshare-data - GitHub project as part of the Programming for Data Science with Python Nanodegree from Udacity

Date created February 10, 2022 Project Title Explore US Bikeshare Data Descripti

Thárcyla 1 Feb 14, 2022
A tool to nowcast quarterly data with monthly indicators: US consumption example

MIDAS_Nowcaster A tool to nowcast quarterly data with monthly indicators: US consumption example Pulls data directly from FRED from a list of codes -

Gene Kindberg-Hanlon 3 Oct 06, 2022
x-tools is a collection of tools developed in Python

x-tools X-tools is a collection of tools developed in Python Commands\

5 Jan 24, 2022
Fork of pathlib aiming to support the full stdlib Python API.

pathlib2 Fork of pathlib aiming to support the full stdlib Python API. The old pathlib module on bitbucket is in bugfix-only mode. The goal of pathlib

Jazzband 73 Dec 23, 2022
Reactjs web app written entirely in python, using transcrypt compiler.

Reactjs web app written entirely in python, using transcrypt compiler.

Dan Shai 22 Nov 27, 2022
Exploiting Linksys WRT54G using a vulnerability I found.

Exploiting Linksys WRT54G Exploit # Install the requirements. pip install -r requirements.txt ROUTER_HOST=192.169.1.1 ROUTER_USERNAME=admin ROUTER_P

Elon Gliksberg 31 May 29, 2022
Uma versão em Python/Ursina do aplicativo Real Drum (android).

Real Drum Descrição Esta é uma versão alternativa feita em Python com a engine Ursina do aplicatio Real Drum (presente no Google Play Store). Como exe

hayukimori 5 Aug 20, 2022
Projects using the Tkinter module in Python!

Tkinter projects This repository includes some Tkinter projects made by me. All of these are simple to understand. I create apps with good functionali

Amey 0 Sep 24, 2021
Pampy: The Pattern Matching for Python you always dreamed of.

Pampy: Pattern Matching for Python Pampy is pretty small (150 lines), reasonably fast, and often makes your code more readable and hence easier to rea

Claudio Santini 3.5k Dec 30, 2022
A custom advent of code I am completing

advent-of-code-custom A custom advent of code I am doing in python. The link to the problems I am solving is here: https://github.com/seldoncode/Adven

Rocio PV 2 Dec 11, 2021
Credit Card Fraud Detection

Credit Card Fraud Detection For this project, I used the datasets from the kaggle competition called IEEE-CIS Fraud Detection. The competition aims to

RayWu 4 Jun 21, 2022
Powerful Assistant

Delta-Assistant Hi I'm Phoenix This project is a smart assistant This is the 1.0 version of this project I am currently working on the third version o

1 Nov 17, 2021
An easy FASTA object handler, reader, writer and translator for small to medium size projects without dependencies.

miniFASTA An easy FASTA object handler, reader, writer and translator for small to medium size projects without dependencies. Installation Using pip /

Jules Kreuer 3 Jun 30, 2022
Grammar of Scalable Linked Interactive Nucleotide Graphics

Gosling.js Gosling.js is a declarative grammar for interactive (epi)genomics visualization on the Web. ⚠️ Please be aware that the grammar of Gosling.

Gosling 126 Nov 29, 2022
Advanced Developing of Python Apps Final Exercise

Advanced-Developing-of-Python-Apps-Final-Exercise This is an exercise that I did for a python advanced learning course. The exercise is divided into t

Alejandro Méndez Fernández 1 Dec 04, 2021