myzivi.ch : swiss civilian service search
15 Feb 2013 | Programming
Background / the problem
In Switzerland, we still have mandatory military service. For those who don’t want to serve in the military, there is a replacement civilian service where you work for non-profits. After having completed he military boot camp, I couldn’t stand the idleness of the swiss army anymore and decided to do civilian service instead.
Non-profits that are interested in having civilian service men working for them can announce themselves to the administration. There is an official search engine that allows people to search for those civilian service jobs. The thing is, this official page is kind of clunky : it’s slow, doesn’t always return the same results and it doesn’t allow geographical filtering. Since I wanted to find a job that’s close to my home, I really wanted to be able to visualize the offers on a map.
Solution
So I created http://myzivi.ch. It’s a website that shows a map of the civilian jobs offer from non-profits.
The data is scraped from the official page using scrapy. I use OpenStreetMap’s Nominatim to do the geocoding.
The web frontend is a Django app that uses Backbone.js and django-tastypie to communicate between them. The Google Maps javascript API is used to display the map and MarkerClustererPlus does client-side clustering of the job offers. I’m thinking about doing (partial) server-side clustering to avoid having to send all the data to the client beforehand.
I’ve also used Sentry on the production server to monitor crawling/scraping errors.
That’s a lot of technological hype for a simple tool that I hope will be useful for others.
The sources are available on github and contributions are welcome !