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
Sodium is a general purpose programming language which is instruction-oriented

Sodium is a general purpose programming language which is instruction-oriented (a new programming concept that we are developing and devising)

Satin Wuker 22 Jan 11, 2022
Anki cards generator for Leetcode

Leetcode Anki card generator Summary By running this script you'll be able to generate Anki cards with all the leetcode problems. I personally use it

Pavel Safronov 150 Dec 25, 2022
An app about keyboards, originating from the design of u/Sonnenschirm

keebapp-backend An app about keyboards, originating from the design of u/Sonnenschirm Setup Firstly, ensure that the environment for python is install

8 Sep 04, 2022
APC Power Usage is an application which shows power consuption overtime for UPS units manufactured by APC.

APC Power Usage Introduction APC Power Usage is an application which shows power consuption overtime for UPS units manufactured by APC. Screenshoots G

Stefan Kondinski 3 Oct 08, 2021
Hack CMU Go Local Project

GoLocal A submission for the annual HackCMU Hackathon. We built a website which connects shopper with local businesses. The goal is to drive consumers

2 Oct 02, 2021
The dynamic code loading framework used in LocalStack

localstack-plugin-loader localstack-plugin-loader is the dynamic code loading framework used in LocalStack. Install pip install localstack-plugin-load

LocalStack 5 Oct 09, 2022
Show my read on kindle this year

Show my kindle status on GitHub

yihong 26 Jun 20, 2022
simple password manager.

simple password manager.

1 Nov 18, 2021
An html wrapper for python

MessySoup What is it? MessySoup is a python wrapper for html elements. While still a ways away, the main goal is to be able to build a wesbite straigh

4 Jan 05, 2022
A water drinking notification every hour to keep you healthy while coding :)

Water_Notification A water drinking notification every hour to keep you healthy while coding. 💧 💧 Stay Hydrated Stay Healthy 💧 💧 Authors @CrazyCat

Arghya Banerjee 1 Dec 22, 2021
Using graph_nets for pion classification and energy regression. Contributions from LLNL and LBNL

nbdev template Use this template to more easily create your nbdev project. If you are using an older version of this template, and want to upgrade to

3 Nov 23, 2022
PyGo custom language, New but similar language programming

New but similar language programming. Now we are capable to program in a very similar language to Python but at the same time get the efficiency of Go.

Fernando Perez 4 Nov 19, 2022
Build a grocery store management application.

python_projects_grocery_webapp In this python project, we will build a grocery store management application. It will be 3 tier application, Front end:

codebasics 54 Dec 29, 2022
Team10 backend - A service which accepts a VRM (Vehicle Registration Mark)

GreenShip - API A service which accepts a VRM (Vehicle Registration Mark) and re

3D Hack 1 Jan 21, 2022
Given tool find related trending keywords of input keyword

blog_generator Given tool find related trending keywords of input keyword (blog_related_to_keyword). Then cretes a mini blog. Currently its customised

Shivanshu Srivastava 2 Nov 30, 2021
On this repo, you'll find every codes I made during my NSI classes (informatical courses)

👨‍💻 👩‍💻 school-codes On this repo, you'll find every codes I made during my NSI classes (informatical courses) French for now since this repo is d

EDM 1.15 3 Dec 17, 2022
This is the Quiz that I made using Python Programming Language. This can only run in the Terminal

This is the Quiz that I made using Python Programming Language. This can only run in the Terminal

YOSHITHA RATHNAYAKE 1 Apr 08, 2022
Linux GUI app to codon optimize many single-fasta files with coding sequences , using many taxonomy ids

codon_optimize_cds_with_many_taxids_singlefasta Linux GUI app to codon optimize many single-fasta files with coding sequences, using many taxonomy ids

Olga Tsiouri 1 Jan 23, 2022
An Airdrop alternative for cross-platform users only for desktop with Python

PyDrop An Airdrop alternative for cross-platform users only for desktop with Python, -version 1.0 with less effort, just as a practice. ##############

Bernardo Olisan 6 Mar 25, 2022
⏰ Shutdown Timer is an application that you can shutdown, restart, logoff, and hibernate your computer with a timer.

Shutdown Timer is a an application that you can shutdown, restart, logoff, and hibernate your computer with a timer. After choosing an action from the

Mehmet Güdük 5 Jun 27, 2022