Adventure Planner helps users plan their next adventure. Yelp and Google Maps API are implemented to allow users to search any city and have the option to choose top sights (Sightseeing/tourist attraction), museums, nature, night life, or restaurants. Users can interact with a map of the sights to plan their adventure. Once explored, the user can make a profile to save their sights to a trip they create, which are stored in a PostgreSQL database. Users can also make a to-do list for each trip, check it off when they are done with the task, delete a trip or sight, and the status is dynamically updated via AJAX.
Frontend: JavaScript (AJAX, JSON), HTML, CSS, jQuery, Bootstrap, Jinja
Backend: Python, Flask, PostgreSQL, SQLAlchemy
APIs: Yelp, Google Maps
Search for any city and choose top sights, museums, nature, night life, or restaurants. User account registration not required.
Once registered and logged in, user can add/delete an adventure to their profile
While logged in, user can add any sight to a trip of their choice and view the sights
User can add to a to-do list and check it off when the are done with the task and also delete a sight
Requirements:
- PostgreSQL
- Python 2.7
- Yelp API keys
To have this app running on your local computer, please follow the below steps:
Clone repository:
$ git clone https://github.com/tuongviatruong/Adventure-project.git
Create a virtual environment:
$ virtualenv env
Activate the virtual environment:
$ source env/bin/activate
Install dependencies:
(env) $ pip install -r requirements.txt
Get your own secret keys for Yelp. Save them to a file secrets.sh
. Your file should look something like this:
export CLIENT_ID="abc"
export YELP_API_KEY="abc"
Load secret info into the environment:
(env) $ source secrets.sh
Create database 'trips'.
(env) $ createdb trips
Create your database tables.
(env) $ python -i model.py
Connected to DB.
>>> db.create_all()
Run the app from the command line.
(env) $ python server.py
- Add more testing
- Add a map of the sights user added and get directions
- Ability to organize trips by days