Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Urubu – A micro CMS for static websites (jandecaluwe.com)
80 points by jandecaluwe on Feb 16, 2016 | hide | past | favorite | 31 comments



Hello:

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!


This is very similar to Hugo 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.


Or nanoc and yekyll if you look into the Ruby world. I think everyone chooses a static site generator in their favorite language anyway.


Hugo is still very much minded on blogs.

It doesn't even support a proper static frontpage.


How 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.


Check out lektor (getlektor.com). It allows you to define your content fields in ini files- https://www.getlektor.com/docs/models/

I have been using it on a side project for the last week and I really like it!


It 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.


If that's what you're looking for, try https://getgrav.org/


I might have used this if I knew about it 2 months ago. Instead I built this: 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.


No multilanguage support.

I do use autopulling for some websites, works great indeed.


I 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.


Compared 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


Pelican 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/

1: https://github.com/getpelican/pelican/issues/1065#issuecomme...


A 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/


> 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



Awesome guitar technique!

And you like Bach too? Man, you know something about good taste!


Came here to say the same thing. The name gave me a giggle. Lol.


I came here expecting the name to be a soccer reference. I guess this explanation is much better.


Main 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?


My 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.


> I need to support content like ... feature requests

How do you accept feature requests with only a static backend?


The 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/


How does this compare to Jekyll?


It 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.


Urubu is used in Brazilian Portuguese as synonym for ugly


Yeah, 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

[2] https://en.m.wikipedia.org/wiki/Buzz_Buzzard


Majestic? It's a black chicken that eats garbage in the streets.


Why Python 2.7?


Urubu 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.


Great work, nice documentation!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: