This is the code in production for the website NosFinancesLocales.fr.
The main goal of this project is to illustrate french cities financial data recently freed by Regards Citoyens.
It is also an opportunity to show server and client code and how to install such a stack. Special thanks to these awesome projects:
- mapnik for cartography
- pyramid for web server
- angularjs for client app
- postgresql for database
Note: everything was run on a debian wheezy.
-
Postgresql 9.1 postgis 2.0
aptitude install postgresql-9.1-postgis
-
mapnik 2.2.0 from source
git clone https://github.com/mapnik/mapnik.git cd mapnik git checkout v2.2.0 ./configure make make install
-
node v0.10.24 (cf. build from source
sudo apt-get install python g++ make checkinstallmkdir ~/src && cd $_wget -N http://nodejs.org/dist/node-latest.tar.gztar xzvf node-latest.tar.gz && cd node-v*./configuresudo checkinstall -y --install=no --pkgversion 0.10.24 # Replace with current version number. sudo dpkg -i node_*
-
carto 0.9.5 Carto map stylesheet compiler
npm install -g carto
-
install virtualenv
apt-get install python-pip
pip install virtualenv
pip install virtualenvwrapper
```
## CONFIG
* Create postgresql db and add necessary extensions
```bash
createdb localfinance
psql -d createdb
CREATE EXTENSION hstore;
CREATE EXTENSION postgis;
CREATE EXTENSION unaccent; # for city search
CREATE EXTENSION pg_trgm; # indexation for city search
```
TODO: add localfinance pyramid app in virtualenv
## PREPARE DB, FILL IT
python -m localfinance.scripts.initializedb production.ini
python -m localfinance.scripts.filladminzone production.ini data/COMMUNES_4326/COMMUNE.shp
python -m localfinance.scripts.filladminzonefinance production.ini data/city_all.csv
## POSTGRESQL OPTIMIZATION
Add indexes on:
* CREATE INDEX adminzone_name_lower_unaccent_idx ON adminzone USING gist (lower(unaccent(name)) gist_trgm_ops);
* CREATE INDEX adminzonefinance_adminzone_id_index ON adminzonefinance
(adminzone_id)
## PRECOMPUTE STATS AND TILES
TODO: add bash script and improve code
## RUN
TODO: add make file