Umono
Umono is an open-source, self-hosted CMS that keeps your content apart from the theme that styles it.
- One Go binary and a SQLite file. Runs on Linux and macOS.
- Pages are written in Compono, Markdown with components, and you see the preview as you type.
- A theme is only CSS, fonts and images. Switching themes changes how your pages look, never what they say.
- Public pages set no cookies and make no third-party requests.
Umono is under active development, and this site runs on it.
Quick Start
Run Umono from the command line:
curl -fsSL https://umono.io/install.sh | sh
umono create my-website
cd my-website
umono up
The Problem with Traditional CMSs
To understand the motivation behind Umono, it is necessary to look at common structural problems in traditional content management systems.
Content management systems are useful for non-programmer people who want to build their blog, e-commerce etc. website themselves. It is necessary for content management systems to be ready to use out of the box and to run correctly, but that alone is not enough. They also must keep the rights, responsibilities, and boundaries of website owners, users, plugin developers, and theme developers separate from each other. Otherwise:
- A plugin developer may knowingly or unknowingly write a bloatware plugin. The plugin can make the website slow or break it.
- When a site owner uses a third party theme, if the theme developer stopped developing the theme project the website becomes defenseless from undiscovered security vulnerabilities.
- Users' personal data can be stolen by a plugin that must not have authority to reach database table containing sensitive data.
- A site owner can encounter theme or plugin updates that change his website functionality or appearance.
In the ideal scenario plugins, themes and contents of a website should be separated from each other with clear boundaries. The method provides site owners freedom to change current theme, plugins or contents. The method also provides developers flexible and free development environments. When developers have completed their stable projects, they expect it to run correctly for each instance. In an environment that is tightly coupled, developers cannot be sure what their projects run correctly or not for each instance.
Actually, the main problem is the tight coupling between themes, plugins, and content.
Separation by Design
Umono approaches this problem by strictly separating content, themes, and plugins into loosely-coupled layers.
Content is defined in a component-based manner to reduce duplication and keep content independent from themes and plugins.
Philosophy
Umono prioritizes clarity, predictability, and long-term maintainability over hidden magic or aggressive abstraction.
Support
You can support me in developing Umono Project, which I'm currently working on alone, by starring my GitHub project and providing feedback.
-Yunus Emre Bulut