Hello, Consider adding this to welcome :
First suggestion (mycss.css to "make sure" that the user know where to put it app specific CSS rules and make easy the update of app web2py specific files) : For application specific CSS to allow user override "all" the other CSS without having to touch the other files. For example : static/mycss.css That will load at last in layout.html : <!-- include stylesheets --> {{ response.files.append(URL('static','css/web2py.css')) response.files.append(URL('static','css/bootstrap.min.css')) response.files.append(URL('static','css/bootstrap-responsive.min.css')) response.files.append(URL('static','css/web2py_bootstrap.css')) * response.files.append(URL('static','css/mycss.css'))* }} Second suggestion (min page height or fixed bottom footer) : This could require that web2py.css load at last... I am not sure if it could break something though... I just try and it not seems to break anything, so I don't see why it was not already the lass CSS loaded into layout to allow overriding of certain bootstrap css rules... Anyway. In order to send the footer at the bottom even if page is "empty" or not full... 1) Add a .fill class to page container... In the actual layout the second div with class container is the page container... 2) Add these rules to web2py.css (make sure that web2py.css load last in the layout.html) : /* -------------------------------------------------------------------------- */ /* In order to allow footer to stick at the bottom even if the page core is empty Help from there : http://stackoverflow.com/questions/11677886/twitter-bootstrap-div-in-container-with-100-height Ex.: http://jsfiddle.net/S3Gvf/ */ html, body { height: 100%; } .fill { min-height: 100%; height: 100%; } #main { height: 52%; min-height: 52%; } /* -------------------------------------------------------------------------- */ 3) Reload "F5" It may be improve, I didn't test to much to make sure that #main height and min-height are correct in every situation (different screen, etc.). Richard --