CondationCMS - a flat-file CMS written in Java
Hi,
I’d like to show you a project I’ve been working on for some time: CondationCMS, a Java-based flat-file CMS.
The tech stack is relatively small: embedded Jetty, GraalJS for extensions, and Lucene for fast queries.
A few words about the architecture: All content is stored in Markdown files with frontmatter for metadata. All metadata is indexed in Lucene, allowing fast queries without having to read every file. URLs basically follow the folder structure.
That’s the architecture in a really, really short version.
Some other features I want to mention:
- Manager UI, completely optional, to keep the editorial and production systems separated
- Shortcodes to add more possibilities to Markdown
- Multisite support
Background
Back in 2023, I needed a CMS for some ideas I was working on. As I’m a Java developer, I wanted a Java-based system. And because it should be easy to use, I was looking for a flat-file CMS. Unfortunately, I didn’t find anything that fit my needs.
I worked for one of Germany's largest CMS vendors for many years. I was and am still interested in CMSs and different CMS implementations and ideas. My head was always full of ideas for the CMS of my dreams. So I decided to build the CMS I wanted to use for my own projects.
I wanted it to be feature-rich, easy to use, and open source.
Status
It’s a hobby project and should be treated as such. I’ve been running some websites with CondationCMS since the beginning. There have been some issues along the way, but the current version is stable.
https://github.com/CondationCMS/cms-server
The website is not completely up to date yet, but I'm working on adding more content. If anyone wants to give CondationCMS a try, I'd be happy to hear your feedback!
1
u/agentoutlier 6d ago
Its nice to see this and gives me some personal nostalgia.
I too worked for a CMS company and was one of my first jobs. This was however back in the 2000s but lots of things have not changed. The product even sort of implemented JSR 170 (in the long run I grew to hate JSRs as they are sleazy way for some company to make their implementation reference and or be the experts).
One funny thing about the product was because Java was kind of slow for websites at the time or I should say rather the product was slow we had this thing called "decoupled" delivery. What that meant is we published static HTML files.
In the 2000s and up in till github jekyll pages serving CMS dynamic was the general approach (often with PHP). I assume this one is more on the dynamic side?
Because I had so much experience w/ CMS I often added CMS features to my companies future products so I often wrote mini CMS from time to time including templating systems . I have thought once or twice damn it would be nice if just made it a library instead of a one off so I can see this library being valuable!
2
u/thma_bo 5d ago
Sounds similar. We also used static HTML files, but without a standard content repository, it was a pretty custom implementation.
CondationCMS is fully dynamic. In almost every CMS project I've worked on, there was a need for some kind of dynamic content. The static approach often ended up involving something like JSP in the delivery layer anyway. I hated that, so I decided to make CondationCMS fully dynamic from the start.
1
1
u/revilo-1988 6d ago
Werde ich mir die Tage genauer anschauen klingt interessant