4 ms·
Show HN: Urubu – A micro CMS for static websites
- jandecaluwe 11y agoHello: I created this project because I needed a generator for a static website - not just a blog. To accomplish this, the website structure matches the source structure exactly. In a subdirectory, you use the index.md file to specify the content, either explicitly by listing it, or implicitly by specifying the ordering key and direction. A blog would be reverse order by date, but any other scheme is possible. In addition, this structure makes it possible to refer to other pages in the project using a wiki-like syntax. Basically, Urubu resolves the Markdown syntax for reference links over the project, instead of just within a page. This is a unique feature afaik. Furthermore, there is support for tags, search, and templating constructs within pages. And it works well with Bootstrap. It works great for a number of sites that I manage. Interested to hear your feedback!
- stackpush 11y agoThis is very similar to Hugo http://gohugo.io http://gohugo.io, my current website solution. The content organization is virtually identical. The approach of viewing a website as more than a blog is the same. Hugo also benefits from tons of themes, a large community and a ton of additional features.
- fiatjaf 11y agoI like the idea that it is not for blogs, wiki links and focus on navigation. That is great. On the other hand, it seems to require a lot of configuration.
- jandecaluwe 11y agoCompared to others, I believe configuration is minimal. Also, there is a companion site to get started immediately, and update as you go: http://urubu-quickstart.jandecaluwe.com http://urubu-quickstart.jandecaluwe.com
- jordanlev 11y agoHow exactly does one specify / configure which content fields exist on a page? The problem I run into with most static site generators and flat-file CMS's is that even the ones claiming to "not be for blogging" still assume a very blog-like "one main content area per page"... which just doesn't fit the use-case of most sites I've built. Didn't see anything in the docs about defining the content fields per page/template type, so figured I'd ask.
- ensignavenger 11y agoCheck out lektor (getlektor.com). It allows you to define your content fields in ini files- https://www.getlektor.com/docs/models/ https://www.getlektor.com/docs/models/ I have been using it on a side project for the last week and I really like it!
- markdown 11y agoIf that's what you're looking for, try https://getgrav.org/ https://getgrav.org/
- jandecaluwe 11y agoIt is correct that there is "one main content" per page, available in the 'body' attribute. However, to me the distinctive feature of a blog is not that, but the way entries are ordered (i.e. reverse order by date). For a manual, faq, feature requests,... I need a different ordering scheme, but I am happy with the "one main content" concept. That having said, there is of course a need combine content in a single page. A layout (aka template) can combine content as needed. It can use other attributes of the page, specified in the front matter. Or it can use the content from other pages. One could put subpages in a subdirectory, and use some filename convention so that a layout can access them. Urubu has support for pages that are only present for content, and not for being rendered themselves: you can specify a 'null' layout in the front matter.
- Gladdyu 11y agoHow does this compare to Jekyll?
- jandecaluwe 11y agoIt is heavily inspired by some Jekyll features, and I have tried to add recognition for this in the docs. However, it is not blog-oriented and it is in Python ;-). The distinguishing feature is that the the website structure matches the source structure exactly, which enables a number of other features such as flexible ordering and wiki-links.
- m_mueller 11y agoI might have used this if I knew about it 2 months ago. Instead I built this: https://github.com/muellermichel/guetzli https://github.com/muellermichel/guetzli How do you handle multilanguage content? Also, may I suggest implementing autopulling on github webhooks (if you haven't already)? It's a great way to keep a site in sync with what people push to a repository or even edit in the github web interface.
- jandecaluwe 11y agoNo multilanguage support. I do use autopulling for some websites, works great indeed.
- diego_moita 11y ago> Urubu is also the 10th album of Antonio Carlos Jobim, one of my favorite song composers. As a Tom Jobim fan, this warmed my heart. Thank you. But, I still prefer Stone Flower [0] [0] https://en.wikipedia.org/wiki/Stone_Flower_%28album%29 https://en.wikipedia.org/wiki/Stone_Flower_%28album%29
- felipellrocha 11y agoCame here to say the same thing. The name gave me a giggle. Lol.
- ufo 11y agoI came here expecting the name to be a soccer reference. I guess this explanation is much better.
- jandecaluwe 11y agohttp://music.jandecaluwe.com/bossanova/chega-de-saudade.html http://music.jandecaluwe.com/bossanova/chega-de-saudade.html
- diego_moita 11y agoAwesome guitar technique! And you like Bach too? Man, you know something about good taste!
- TsomArp 11y agoWhy Python 2.7?
- jandecaluwe 11y agoUrubu is for Python 3 also, from a single codebase. The regression suite currently tests for 2.7 and 3.4. Update: I see where the question is coming from - the Quickstart site suggest 2.7 only. Thanks - will update.
- mitchtbaum 11y agoPelican is another Python-based static site generator with a large userbase[0]. It has these features plus a few more years worth of development, in many cases adapting from an original author's narrow set of use cases to fit more general needs (that seems like how these pieces of software tend to evolve). It has a kind community, lots more good development plans, and many useful plugins. I believe a lot of people pass it by, simply because it still needs some help putting its best foot forward[1]. 0: https://github.com/getpelican/pelican/ https://github.com/getpelican/pelican/ 1: https://github.com/getpelican/pelican/issues/1065#issuecomment-73397069 https://github.com/getpelican/pelican/issues/1065#issuecomme...
- jandecaluwe 11y agoA showstopper feature for me is that it should be straightforward to use the tool to write its own manual. Surprisingly few static generators, including Pelican, do that however. But Urubu's manual is written using Urubu: http://urubu.jandecaluwe.com/manual/ http://urubu.jandecaluwe.com/manual/
- abhv 11y agoMain question: how is this better than Hugo (really simple one-binary application), and how is this better than jekyll? Just saying that it is not "just for blogs" doesn't really explain how it is better for a use-case. Maybe pinpoint the issue?
- jandecaluwe 11y agoMy main use case are technical-oriented websites. So I need to support content like a manual, a faq, news, feature requests, essays, and yes, also a blog. I also want good navigation support, and an easy way to refer to other project pages. Furthermore, I want programmatorial flexibility, which because of my background means Python and Jinja2 templates. I wrote this because I didn't find an existing solution that met those requirements. I am not claiming it is "better" in a general sense than anything else - I think it all depends on your requirements and background.
- mappu 11y ago> I need to support content like ... feature requests How do you accept feature requests with only a static backend?
- jandecaluwe 11y agoThe sites are typically in a git repo, so content updates are through commits or pull requests. For an example of feature requests that are ordered by status and number, see http://dev.myhdl.org/meps/ http://dev.myhdl.org/meps/
- dmichulke 11y agoUrubu is used in Brazilian Portuguese as synonym for ugly
- luso_brazilian 11y agoYeah, and not only. Urubu is the brazilian name for the black vulture [1], a scavenger bird commonly seen when there are dead animals. Urubu as an insult can also mean two things: first, as they eat corpses people presume they are smelly themselves hence people can be called one as an insult for smelly; then, as they are black, it can also be used as a racially charged insult. But they are also a synonymous for doing something without effort as they fly for hours using as little energy as they can, gliding in circles in the hot air drifts. They are also portrayed in fiction as a street smart hustler, preying on the innocent protagonists, like Buzz Buzzard [2], named in Brazil "Zeca Urubu". A majestic bird, if you ask me, and I doubt naming the CMS after it would carry any negative connotation. [1] https://en.m.wikipedia.org/wiki/Black_vulture https://en.m.wikipedia.org/wiki/Black_vulture [2] https://en.m.wikipedia.org/wiki/Buzz_Buzzard https://en.m.wikipedia.org/wiki/Buzz_Buzzard
- fiatjaf 11y agoMajestic? It's a black chicken that eats garbage in the streets.
- type0 11y agoGreat work, nice documentation!