Skip to content
Generates a website from a Dropbox (or any other) folder. Uses CherryPy as server.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


This software runs

I wrote this in order to automatically generate a website from a Dropbox folder. It uses CherryPy as the web server and it can be run under wsgi.

The basic idea is that for any particular folder, a webpage can be generated that shows some text, a list of folders and files, and all the images. It is very rudimentary (for example, there are no image captions) but it is also very quick. Just add content into a folder.


  • You need to create folders/settings.cfg and set the following:
site_title=Your Site Title
  • If you create an file, its contents will be the text.
  • Any .md file will be parsed as Markdown.
  • Any image will be served as an image.
  • Other files will be sent for download.
  • You can create your own _template.html file and put it into your content directory to override the included template.
  • Any folders, files, or images that begin with a . or an _ will not appear in listings.
  • Listings will be alphabetical.
  • When listing a folder, the folder title will be used. If there is an file in that folder and there is a heading, then that heading will be used as the title.
  • A subheading will be used for text after the title link.
  • The site is cached in .flattened - you should delete that directory after you've made changes

To install

git clone
cd folders
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt

Figure out where the folder is that you want to make a website from. Make sure the app will have permissions on that directory!

nano folders/settings.cfg (see Guide above)

You can run this in two ways; good for testing:

python folders/

Or, I run this with nginx and uwsgi (emperor). Here is my ini file:

#application's base folder
base = /where/you/installed/this/app
chdir = /where/you/installed/this/app

#python module to import
module = folders.uwsgi

master = True
vacuum = True
processes = 4

venv = %(base)/venv
home = %(base)/venv
pythonpath = %(base)

#socket file's location
socket = /tmp/%n.sock

#permissions for the socket file
chmod-socket    = 666

#location of log files
logto = /var/log/uwsgi/%n.log

And my nginx server config is just this:

server {
    listen      80;
    charset     utf-8;

    location / { try_files $uri @app; }

    location @app {
        include uwsgi_params;
        uwsgi_pass unix:/tmp/;
        uwsgi_read_timeout 300;
You can’t perform that action at this time.