Oct 07

Django A to Z

Creating an opensource hospex site from scratch

I was a vivid couchsurfer. I had excellent experiences and has changed the way I travel for ever. But while the community was growing, the site had been lagging behind. I thought about contributing to the code base, but the site is closed sourced and the official position of the organization was against opensource.

Years have passed by and now couchsurfing has changed it's status from a non-profit to a B-corporation. While this move in itself might not be as bad as it sounds, it seems that couchsurfing has a long history of in-transparency and mismanagement, enraging many volunteers and people who have donated to the non-profit.

Many have fled to bewelcome.org, a registered non-profit developing the site with opensource tools and open to everybody.

It currently runs on rox/php and there is a drupal/php branch in the works. Momentum has picked up since couchsurfing went non-profit, and I decided to chip in, in a way.

Drupal is a great CMS with framework capabilities, but I considered that a site like bw should be built with a framework, with several services that are as decoupled as posible, as my experience with CMS is that in the long run you spend more time tuning and bending the CMS as wrtiing productive code.

My goal is to write a generic hospex application based on django/python with a tutorial documenting django best coding practices. Some of technologies I will use:

  • lang, framework: python/(geo)django
  • webservers: gunicorn + nginx for static
  • databases: postgresql + redis
  • cache: memcached
  • css: compass, but not sure what css framework yet
  • javascript: jquery, backbonejs (probably)
  • additional dev tools: vagrant+puppet+teamcity+selenium+cucumber
  • search: elasticsearch

The project will not be bw specific, and could be easily used by any hospex site as a code basis. I will talk about every aspect of modern web programming that I use daily: test automation, version control, caching, common development and deployments tools like vagrant, fabric, puppet and chef.

So head on the first post if your ready.