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
Think DSP: Digital Signal Processing in Python, by Allen B. Downey.

ThinkDSP LaTeX source and Python code for Think DSP: Digital Signal Processing in Python, by Allen B. Downey. The premise of this book (and the other

Allen Downey 3.2k Jan 08, 2023
Flight Reservation App With Python

Flight Reservation App With Python

victor-h. 1 Nov 21, 2021
Always fill your package requirements without the user having to do anything! Simple and easy!

WSL Should now work always-fill-reqs-python3 Always fill your package requirements without the user having to do anything! Simple and easy! Supported

Hashm 7 Jan 19, 2022
Add all JuliaLang unicode abbreviations to AutoKey.

Autokey Unicode characters Usage This script adds all the unicode character abbreviations supported by Julia to autokey. However, instead of [TAB], th

Randolf Scholz 49 Dec 02, 2022
This repo contains scripts that add functionality to xbar.

xbar-custom-plugins This repo contains scripts that add functionality to xbar. Usage You have to add scripts to xbar plugin folder. If you don't find

osman uygar 1 Jan 10, 2022
Demo repository for Saltconf21 talk - Testing strategies for Salt states

Saltconf21 testing strategies Demonstration repository for my Saltconf21 talk "Strategies for testing Salt states" Talk recording Slides and demos Get

Barney Sowood 3 Mar 31, 2022
New multi tool im making adding features currently

Emera Multi Tool New multi tool im making adding features currently Current List of Planned Features - Linkvertise Bypasser - Discord Auto Bump - Gith

Lamp 3 Dec 03, 2021
🦕 Compile Deno executables and compress them for all platforms easily

Denoc Compile Deno executables and compress them for all platforms easily. Install You can install denoc from PyPI like any other package: pip install

Eliaz Bobadilla 8 Apr 04, 2022
A collection of simple tools that proved to be needed for hadling large periodic calculations with the VASP software package.

VESTA-tools A collection of simple tools that proved to be needed for handling large periodic calculations with the VASP software package. distTotCalc

Ilia Kichev 2 Dec 14, 2021
Resizing using nnedi3/znedi3/nnedi3cl with center alignment and correct chroma placement

nnedi3_resample A VapourSynth script for easy resizing using nnedi3/znedi3/nnedi3cl with center alignment and correct chroma placement. Requirements n

Home Of VapourSynth Evolution 12 Sep 08, 2022
Low-level Python CFFI Bindings for Argon2

Low-level Python CFFI Bindings for Argon2 argon2-cffi-bindings provides low-level CFFI bindings to the Argon2 password hashing algorithm including a v

Hynek Schlawack 4 Dec 15, 2022
run-js Goal: The Easiest Way to Run JavaScript in Python

run-js Goal: The Easiest Way to Run JavaScript in Python features Stateless Async JS Functions No Intermediary Files Functional Programming CommonJS a

Daniel J. Dufour 9 Aug 16, 2022
Python for downloading model data (HRRR, RAP, GFS, NBM, etc.) from NOMADS, NOAA's Big Data Program partners (Amazon, Google, Microsoft), and the University of Utah Pando Archive System.

Python for downloading model data (HRRR, RAP, GFS, NBM, etc.) from NOMADS, NOAA's Big Data Program partners (Amazon, Google, Microsoft), and the University of Utah Pando Archive System.

Brian Blaylock 194 Jan 02, 2023
A curated list of awesome things related to Pydantic! 🌪️

Awesome Pydantic A curated list of awesome things related to Pydantic. These packages have not been vetted or approved by the pydantic team. Feel free

Marcelo Trylesinski 186 Jan 05, 2023
Todos os exercícios do Curso de Python, do canal Curso em Vídeo, resolvidos em Python, Javascript, Java, C++, C# e mais...

Exercícios - CeV Oferecido por Linguagens utilizadas atualmente O que vai encontrar aqui? 👀 Esse repositório é dedicado a armazenar todos os enunciad

Coding in Community 43 Nov 10, 2022
A Python script to delete movies with a certain tag after a certain amount of days.

radarr_autodelete Simple script, which deletes movies with a specific tag after a certain amount of days Pip Packages pip3 install pyarr python-dotenv

7 Dec 06, 2022
Doom o’clock is a website/project that features a countdown of “when will the earth end” and a greenhouse gas effect emission prediction that’s predicted

Doom o’clock is a website/project that features a countdown of “when will the earth end” and a greenhouse gas effect emission prediction that’s predicted

shironeko(Hazel) 4 Jan 01, 2022
A program that takes Python classes and turns them into CSS classes.

PyCSS What is it? PyCSS is a micro-framework to speed up the process of writing bulk CSS classes. How does it do it? With Python!!! First download the

T.R Batt 0 Aug 03, 2021
A script to automatically update bot status at GitHub as well as in Telegram channel.

A simple & short repository to show your bot's status in your GitHub README.md file as well as in you channel.

Jainam Oswal 55 Dec 13, 2022
Problem statements on System Design and Software Architecture as part of Arpit's System Design Masterclass

Problem statements on System Design and Software Architecture as part of Arpit's System Design Masterclass

Relog 1.1k Jan 04, 2023