The project contains the following folders and important files:
data-- Data files, such as those used to generate HTMLjst-- Javascript (Underscore.js) templatesless-- LESS files, will be compiled to CSS and concatenated for deploymenttemplates-- HTML (Jinja2) templates, to be compiled locallywww-- Static and compiled assets to be deployed (a.k.a. "the output")app.py-- A Flask app for rendering the project locally.app_config.py-- Global project configuration for scripts, deployment, etc.fabfile.py-- Fabric commands automating setup and deployment
Node.js is required for the static asset pipeline. If you don't already have it, get it like this:
brew install node
curl https://npmjs.org/install.sh | sh
Then install the project requirements:
cd in-memoriam
npm install less universal-jst
mkvirtualenv in-memoriam
pip install -r requirements.txt
A site can have any number of rendered templates (i.e. pages). Each will need a corresponding view. To create a new one:
- Add a template to the
templatesdirectory. Ensure it extends_base.html. - Add a corresponding view function to
app.py. Decorate it with a route to the page name, i.e.@app.route('/filename.html') - By convention only views that end with
.htmland do not start with_will automatically be rendered when you callfab render.
A flask app is used to run the project locally. It will automatically recompile templates and assets on demand.
workon in-memoriam
python app.py
Visit localhost:8000 in your browser.
Compile LESS to CSS, compile javascript templates to Javascript and minify all assets:
workon in-memoriam
fab render
(This is done automatically whenever you deploy to S3.)
If you want to test the app once you've rendered it out, just use the Python webserver:
cd www
python -m SimpleHTTPServer
fab staging master deploy
The current configuration is for running cron jobs only. Web server configuration is not included.
- In
fabfile.pysetenv.deploy_to_serverstoTrue. - Run
fab staging master setupto configure the server. - Run
fab staging master deployto deploy the app.