Almost all data of the world can be organized in the form of tables, - a list of datasets, just like in a spreadsheet application. I'd like to edit all kinds of datasets with a CMS, an inventory list for example, entries in a contact form like below, or even the text of pages in this webseite, membership data of an association or company.
Every dataset of any table is formatted as a certain combination of data fields: Shorter or longer texts, variations of numbers or time or calendar information, choice lists, checkboxes, email addresses and telephone numbers, URLs, location information, or lists of options in other tables that may be assigned to this dataset. The configuration data defining the names, formats of any data field, what you can do with it, its upper and lower limits, characters sets etc. are again organized in a list, let's call that list or table "fields".
Certainly data of different tables have different purposes, they "behave" differently - thus entering data may send a welcoming email after adding a new user or after submitting an new contact form entry. This information - and code - is to be organized in another table called "tables". Even this table consists of a set of data fields, like described above - you may add, delete or modify them only according to the permissions assigned to you.
Certainly a CMS must take care of permissons, too: Who is granted access, modification or deletion rights: An anonymous user may make an entry into the list of contact form messages but must not be allowed to see what others wrote. This is why every user may be member in an arbitrary set of groups. Any user will be able to see and manipulate different parts of the website, of a subset of tables he or she has access to. For each group, it is defined who is able to see the group membership and / or to assign it to whichever other group. Even inside a dataset, some fields may only be viewed or edit by certain group members.
Even pages of a website are - you guessed it - just a list of datasets, I call this table "nodes". NowCMS organizes alls "pages" exactly as you know it from the files and folders on your harddisk. - internet addresses (URLs) are organized in the same way - just have a look on the adress field of your browser. Drawn from this hierarchical view with arbitrary levels of "depth" are the menus that are dispalyed in the navigation of the website. Sure, you may keep it simple, too.
NowCMS does not distinguish between "frontend" (the pages anonymous users see) and the "backend" (the pages only administrators are allowed to use). According to their respective group memberships, different users have - if configured - totally different views on the same or a different set of pages. CMS's like Drupal or processwire do it the same way. Administrators just see more elements of the same website..
Many of the "nodes" just contain static text, just as this page you're reading now. The page may also contain images, uploaded by an administrator just for this page. However, there are "nodes" containing much more than static text: And inventory list for example. Given the right group memberships, authenticated users may edit, delete or add inventory items.
One "node" may even contain more than one "datanode": A datanode defines how the dataset of a given table may be formatted on the page: You may edit, delete and add datasets in a list, you may as well see a zoomable map where location information of the datasets are displayed, just what you would expect for a list of local shops. or a calendar with day, weeks, months and year views - bookings of a concert venue. Or maybe you will see a diagram of a weather station instead of a boring list of values.
Right from the start, NowCMS comes in four languages (german, english, french and italian) - including all configuration vocabulary in the "backend". Just choose your language in the upper right corner, every article might be presented in each language or a subset of thereof.
NowCMS has a very small codebase in comparison (120 kByte) : This accelerates debugging and raises the probability to ever have the code security audited, a thing Wordpress with its 1.8 million codelines can only dream of. NowCMS has reduced its dependencies from other libraries stringly: This "deviation from the industry standard" is equally a condition to have the code audited, - would you change only a library, you'd have to restart the auditing process. These changes are necessary when security breaches occur and the maintainer of NowCMS will take care of the problem.
On the other hand, NowCMS is not vulnerable to OpenSource code contributions that might break functionality over night or - worse - add backdoors.
Typically, a page rendered by NowCMS takes about 17 milliseconds on the server, 150 ms when rendering a fairly long page with a list of datasets.
Obviously NowCMS uses various state-of-the art defense strategies against all known attacks on web applications.
Cross-Side-Scripting (XSS), excessive spidering, Brute-Force password guessing, CRSF, Codeinjection and many more attcka should be a thing of the past.
|└ Welcome||67||English welcome page|
|│ └ Contact form||6274||Our contact form|
|│ └ Sitemap||1629||Alle Pages existing for the current language|
|│ └ Data Privacy Statement||1544||Our Data Privacy Statement|
|│ └ Imprint||1899||Our imprint|
|└ About NowCMS||1939|
|└ My login||1669||For staff only|