Uriel is a minimalistic, stable, feature complete static site generator, written in Python.
Named for the archangel Uriel in the novel Unsong, whose job was to perform the fantastic and mundane work necessary to keep the world functioning.
Built to last for years without requiring any maintenance. It is feature complete, and only depends on Python and rsync, with no third-party module dependencies. That means that it won't break unexpectedly years from now, after you've built a site around it.
As long as you can still get a working copy of python3 and rsync, your site will still build the same way in the future.
The example project is intentionally simplistic and ugly, so that you won‘t be tempted to use it directly as a template for your own site.
Appreciate its raw simplicity, free from extraneous distractions. Figure out how it works. Then build your own web site from scratch, with your own superior and fashionable HTML, CSS, and refined sense of style.
- Generates a static website you can host on pretty much any web server
- Minimalistic philosophy and approach
- Useful error messages
- Built-in tag index system
- Built-in breadcrumb navigation support
- Flat URL support to make some or all content nodes top-level URLs
- Inheritance and override system for content node settings and values
- RSS feed generator, with ability to include or exclude content nodes from feed
- sitemap.xml generator, with ability to include or exclude content nodes from sitemap
- Minimalistic robots.txt generator
- Ability to include unmodified static files
- Ability to selectively override dynamically generated files with static files when necessary
- Simple but flexible templating system
- Supports a variety of useful built-in node/template replacement parameters
- Supports arbitrary user-defined Python code in node/template replacement parameters
- Supports arbitrary user-defined Python code in lifecycle handlers during generation
- Ability to generate static pages dynamically from user-defined Python code
- Implemented in pure Python 3, with no module dependencies
- Stable platform to build on
- Feature complete
- Minimal dependencies (python3, rsync)
- GPL version 3 license
Why another static site generator? Why this one? Because I wanted an extremely stable platform to build my own web sites on, that I would be able to maintain and understand many years into the future. For this project, simplicity and stability is prioritized over new features.
If you prefer something with a maximal feature set, and all the latest features, this probably won‘t be for you.
On the other hand, this system is so simple that it will pretty much keep working indefinitely, without any ongoing maintenance. For me, this is the main appeal.
Download and install Uriel
(You can also use it from a different path without root privileges.)
wget https://nathanrosenquist.com/uriel/uriel-1.0.0.tar.gz tar -xzvf uriel-1.0.0.tar.gz cd uriel-1.0.0/ sudo cp uriel /usr/local/bin/uriel sudo chown root:root /usr/local/bin/uriel sudo chmod 755 /usr/local/bin/uriel
Create a Uriel project directory for your new web site
You just created the beginning of your new web site. In the “my-first-website” directory you just created, go look around at your new web site project directory.
The “public” directory is the generated web site, which is completely regenerated every time. Everything else in the directory outside of “public” is part of the project files. See the Uriel README and Uriel Cheat Sheet for more details.
A Makefile was generated in the root of your new website project directory. Type `make` after you make any changes to the project files to regenerate everything in the “public” directory.
cd my-first-website make
When you're happy with your new masterpiece, copy all of the files under the “public” directory to the document root of your web server, e.g.:
rsync -av --delete public/ example.com:/path/to/my-first-website/public/