One City at a Time is an app meant for users that love traveling. The app shows main points of interest in popular cities around the world. Registered users can save their preferred spots for future trips, mark places they have already been and leave comments/reviews in the place's page.
Frontend: HTML5, Jinja, Javascript (AJAX, JSON), jQuery, Bootstrap
Backend: Python, Flask, PostgreSQL, SQLAlchemy
APIs: Foursquare, Google maps, Imgur, Bing Image Search
Create an account and activate it.
Logged in or not, search points of interest in a city. Sort results by popularity (most and least popular) or name. If logged in, user can save or "been here" a place.
User (logged in ot not) can check more information about a place. Logged in user can also leave comments.
Requirements:
- PostgreSQL
- Python 2.7
- Foursquare, Google maps, Imgur, and Bing Image Search API keys
To run this app on your local computer, please complete the following steps:
Clone repository:
$ git clone https://github.com/ErikaAzabache/One-City-at-a-Time.git
Create a virtual environment:
$ virtualenv env
Activate the virtual environment:
$ source env/bin/activate
Install dependencies:
$ pip install -r requirements.txt
Get your own secret keys for Foursquare, Google Maps, Imgur, and Bing Image Search. Save them in your secrets.sh
file. Your file should look something like this:
export EMAIL_PASSWORD="ABC123XYZ"
export EMAIL_SENDER="[email protected]"
export EMAIL_SERVER="emailserver.com"
export USER_SENDER="my_user"
export FS_CLIENT_ID="MYFOURSQUARECLIENTID"
export FS_CLIENT_SECRET="MYFOURSQUARECLIENTSECRET"
export IMGUR_CLIENT_ID="MYIMGURCLIENTID"
export IMGUR_CLIENT_SECRET="MYIMGURCLIENTSECRET"
export BING_CLIENT_ID="MYBINGCLIENTID"
export BING_CLIENT_SECRET="MYBINGCLIENTSECRET"
Create database 'places'.
$ createdb places
Create your database tables and seed example data.
$ python models.py
Run the app from the command line.
$ python server.py
If you want to use SQLAlchemy to query the database, run in interactive mode
$ python -i models.py
- Test app for security vulnerabilities
- Add nested comments
- Add ratings system for comments
- Add place suggestions based on user's "saved" and "been here"