I have a basic app that does this using GeoServer, it's pretty simple and all open source. See http://beta.democracymap.org
We're using this for our site, http://www.mygovhub.org, which grabs down to the county & local level. (Although we don't have districts at that level, as they'll have to be inputted manually...)