Many see the CMS as a publishing tool, or perhaps (at least in the past?) specifically as a blogging tool or a marketing tool. I think of CMSs primarily as a tool for storing and presenting structured knowledge.
I have an CMS in mind that would be ideal for this purpose that no one seems to have made yet.
The CMS would be very wiki-like: that is, it would allow you to organize information into a web of nodes or pages without being opinionated about what goes where.
Creating a new page/node (page, from now on) should be easy, as in a wiki. E.g., following a link to an as-yet non-existent page.
In addition to pages, though, this CMS would provide a concept of types, which you could assign to pages when they are created.
A type have a name, a collection of fields, and optionally a template for new pages of that type.
A type could also have a default symbol for use in diagrams (see below).
There would be facilities for
In addition, every page would be able to specify a parent page.
So that when you follow a link to a page, you can either hit “Back” to return to the previous page, or follow the link to the parent for more relevant context around that page.
If you create a page by following a link to a non-existent node, that page's parent would default to the page containing that original link.
Any page could have a Visio-like diagram in addition to (or instead of) the body text. The body text could also have any number of embedded diagrams.
As with the body text, diagrams are displayed in a non-editable context until the user decides to edit them.
Diagram elements consist of
Any diagram element can be hyperlinked to a page in the CMS and can have its shape, label, or tooltip text determined by the properties of that page.
This CMS would consist of a single binary with no dependencies that could serve web pages itself over a specified port, or run in CGI mode. The way Fossil does it.
The CMS would store its data by default in a single-file SQLite database. That way there would be no RDBMS to configure, and backups would be as simple as copying the file.
The file would contain information about all pages, diagrams, shapes, and types, as well as “theme” info: HTML, CSS and logos/other images.
In short, the entire published content of the CMS is contained in or derived from a single file.