Have you ever had a craving for something, but don’t know where to go?
Foraging Foodie helps users find the perfect restaurants to satisfy their cravings. The app uses advanced search criteria such as taste, food temperature, and dietary restrictions, and integrates the Yelp Fusion API to generate suggestions. Once logged in, users can also track their restaurant visit history, personal restaurant ratings, add addresses and specify food preferences on their profile.
Foraging Foodie is powered by Python and Flask. The elegant and responsive web pages are built with Javascript and Bootstrap. User profile information is stored in a PostgreSQL database.
Backend:
Frontend:
APIs:
Oher:
- Bcrypt -- For password encryption
- Font Awesome -- For the awesome icons!
Prerequisites:
- Python 2.7
- Yelp Developer Account
- Slack workspace
** To host the project remotely you will need AWS EC2 server or equivalent **
1. Clone the repository:
$ git clone https://github.com/alyssalew/foraging-foodie.git
2. Create a virtual environment:
$ virtualenv env
3. Activate the virtual environment:
$ source env/bin/activate
4. Install dependencies:
$ pip install -r requirements.txt
5. Create a secrets.sh
file:
In this file put the following info (also in template_secrets.sh
):
export APP_KEY="A_RANDOM_STRING"
export CLIENT_ID="YOUR_YELP_CLIENT_ID"
export YELP_API_KEY="YOUR_YELP_API_KEY (THE REALLY LONG STRING!)"
export SLACK_WEBHOOK_URL="https://hooks.slack.com/services/xxxxxxxx/xxxxxxx/xxxxxxxxxxxxx"
6. Create a database:
$ createdb foraging-foodie
7. Create your database tables and seed example data:
$ python model.py
$ python seed.py
8. Add your keys as environment variables:
$ source secrets.sh
9. Run the app:
$ python server.py
After the initial setup, follow this pattern to start up the app:
$ source env/bin/activate
$ source secrets.sh
$ python server.py
If you want to use SQLAlchemy to query the database, run it in interactive mode:
$ python -i model.py
You can also query the database using PostgreSQL:
$ psql foraging-foodie
foraging-foodie=# SELECT * FROM users;