Soho lets you build a web site from a set of reStructuredText source files (the content) and a template file (the layout).
Soho comes from a simple need that I have: I need to easily build static (or mostly static) web sites. There are lots of ways this can be done, but I want:
- to use a template: I want the content to be separated from the appearance. I also want to have an homogeneous site, with an unique layout. I use and like TAL (a.k.a. ZPT, Zope Page Template) a lot, so this seems to be a good choice. To me, at least. ;)
- to avoid writing HTML. reStructuredText is great. It lets you easily write any text in a readable fashion and can be processed to produce files in HTML, LaTeX and other formats. Moreover, this format is used to document a lot of Python code (Python itself but also Python programs and libraries). I hence use it for my own code, and can therefore re-use the documentation to produce a web site, without changing anything;
- a static web site that can be served by a standard web server (Apache, Lighttpd, Nginx, etc.) or even without any web server.
In a nutshell, here is the process:
- I write the content of my website as reStructuredText files in multiple folders and sub-folders if needed.
- I write a template in TAL.
- I run Soho, with specific options if needed. For example, I can set a list of filters that will be run on each file before or after the reStructuredText->HTML conversion.
- I configure Apache or any other web server to serve my HTML files or write them on a CD-ROM, or send them to my low-price hosting provider.
If you do not know reStructuredText or TAL, do not run away. Well, not yet. ;) Take a look at the tutorial first. You might see that it is quite easy to grasp and that you do not need to master all their inner mysteries to build a simple web site, hopefully.
If you do not like TAL and/or reStructuredText, it should be quite easy to hack Soho so that it uses another template engine and/or another format for its source files. I am not currently interested in developing a generic solution: this is left as an exercise to the reader.
An example is worth tons of explanation. Take a look at these:
You need the following programs and libraries to run Soho:
If you have easy_install, then the following should do the trick:
$ easy_install soho
For further details, see the Installation chapter.
Soho source code lives in a Subversion repository. To checkout the trunk:
$ svn co https://svn.noherring.com/code/soho/trunk
You can also browse the sources with the same URL.
Soho is copyright 2008 by Damien Baty.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.