Whiskyton, find whiskies that you like!
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.




This web based app uses an open database about whisky to help you find whiskys you'd probably like. It uses mathematics to run through the tastes classified in that database, and to find the best matches. We were inspired by this data visualization shared on Reddit.

What really matters

This is our very first project in Python (and we are not professional coders) -- so all feedback is important to help us through our learning process. Don't hesitate to criticize our code and software design! To be true, that is what we are expecting :)


  1. Clone the repository: $ git clone git@github.com:cuducos/whiskyton.git.

  2. Go to the repository folder: $ cd whiskyton (if you want, get your virtualenv running there).

  3. Install the dependencies: $ pip install -r requirements.txt.

  4. You should have the coffee command line tool working: probably $ apt-get install nodejs and $ npm install coffee-script should do the job.

  5. Create and feed the database: $ python manage.py db upgrade.

  6. Run the server: $ python manage.py runserver.

If you wanna deploy to Heroku, you need to use heroku-buildpack-multi.


To run tests: $ nosetests.

Nose has serious difficulties in finding tests in executable files. That said, you might wanna change the permissions of the tests files: $ chmod -x $(find whiskyton/tests/ -name '*.py').

Some tests use your local Firefox through Selenium.

Managing the application

Charts cache

If you want to get rid of all the cached SVG charts: $ python manage.py charts delete.

If you want to create all possible charts and cache the SVG files: $ python manage.py charts create (it is not necessary, the app creates and caches them on the fly; however pre-caching them can optimize page loading time).

Page views data

If you want to export analytics data (date, whisky and page views) as a CSV file to an external FTP server, you will need to set these ENV variables: FTP_SERVER, FTP_USER and FTP_PASSWORD. Once you have these variables, just run: $ python manage.py analytics save.


We had a lot of Python teachers, we are so glad we could count on you, guys:

In sum, we had the best teachers of the world in Python. Any mistake here is completely our fault.

Also we are glad to have contributions from Henrique Bastos, Lucretiel, Justin Velluppillai and Chris Loverchio.


Copyright (c) 2015 Eduardo Cuducos and Gabriel Vicente

Licensed under the MIT license (see MIT-LICENSE file)