aplayford / django-improv

Fingerpaint with your data.
18 stars 1 forks source link

h1. django-improv

An experimental Django project to deploy data onto the internet. By news app developers, for news app developers.

h2. Here's the pitch

Improv aims at the gray area between what a programmer can do and what a web producer can do. You shouldn't need to learn to program to put a csv online. On the other hand, if every beautiful way to show off your data requires starting from the scratch, even newsrooms that have programmers will find their ambition limited by the hours in the day.

Enter django-improv, a framework for data. Uploading data is point and click, as is putting it online. Visualizations are flexible -- defined in code, but usable by non-programmers. Quick and easy shouldn't mean bad; with improv, it doesn't.

h3. Under the hood

Django models are usually written into models.py files by programmers. But because Django's just Python, it's actually possible to generate models on-the-fly in memory, based on information stored in a database. Once a Model object exists in memory, "South":http://south.aeracode.org/, the popular migrations library, can create a database table to match[1]. That's how Improv's core ModelFactory library works, giving you the power of a real database and Django's pretty API without the mess of writing a thicket of models files for even the smallest projects.

Improv's second half is called DisplayFactory: A library that nests neatly alongside ModelFactory, making it easy to dream up new reusable visualizations. DisplayFactories are encapsulated in a slim reusable Django apps, and the main DisplayFactory library handles the messy bits for you, like formatting dollar figures differently from percents. You can start with an open-source DisplayFactory -- several are bundled with improv -- then move up to building your own, to show your newsroom's data the way your newsroom likes it.

h3. What's up next

At this point, improv is basically a proof of concept, but we're hoping it can be rapidly developed into a more stable product. Here's what's up next:

h3. Want to help?

Send a note to Adam, grab a ticket and dig in!

fn1. In this case, South is basically just a thin wrapper around syncdb. But it's a much prettier API, and the library provides other features we'll use down the road.

fn2. This is also a clever, insidious scheme to trick web producers into dipping their toes into Django templating.