English, Nederlands
Donate with PayPal

Manual

Table of Contents

About Nocterra

Nocterra is a freedom respecting Content Management System that helps you build comprehensive websites with a focus on speed, privacy, security, and accessibility.

History

Nocterra was initially build for the website of the IRADIS Foundation, now ASK-Solutions. The concept of content management systems was new and CMS systems like Drupal, WordPress and Joomla did not exist. About the only mature product was Microsoft Frontpage and the just released Adobe DreamWeaver. But both weren't content management systems, but rather a computer program you could use to design a website, just like a program such as Microsoft Paint or Jasc Paint Shop Pro for creating images which you can print or upload to a server. About the only real CMS at that time was TYPO3, of which development had just started. As FrontPage was propriety, designing our website with FrontPage did not align with our vision and our contributions to the W3C. Besides that, FrontPage was a very cumbersome piece of software if used for websites larger than a handful of pages. This is why the inital name of Nocterra was BackPage.

The next couple of years, BackPage was developed further and updated to match the development going on making HTML into an open internet standard and separating semantics from layout with the development of CSS. BackPage was renamed to Synergos in an effort to integrate online sales into a website. With an online market place for individuals and small businesses. Development on this concept was dropped when Etsy gained popularity.

In 2019, after the Great server crash™, the project was renamed to Nocterra as a complete rewrite of the code. The direct dependency on MySQL was dropped and the focus was on creating a content management system without an integrated GUI, no requirement on a SQL database, a smaller footprint and more flexibility and extendability in mind. Unlike other CMSes who moved towards open source by propriety parties, often a combination of open source and propriety code with pingbacks, telemetry data send back and requiring registration, Nocterra is still and will always remain truly free, libre, software without such non freedom respecting components.

Installation

Installing Nocterra basically comes down to downloading the latest Nocterra release and unpacking the files contained within the archive to the document root directory of your webserver or hosting plan.

Please see the installtion guide.

Storage engine

The builtin storage engines are the locale_prefix_menu, locale_prefix and locale_directory storage engines. The default is locale_prefix.

locale_prefix

The locale_prefix is the most basic storage engine, most suited for smaller websites. The contents of the pages of your website are stored in the data/ directory. Each page is stored in a single file, bearing the name of the URL with slashes converted into underscores _ and prefixed by the language code.

Note: Nocterra is designed to represent special characters like spaces, dollar and pound signs as minus signs -.

data/en_
data/en_about
data/en_menu
data/en_menu_todays-special
data/sp_
data/sp_sobre
data/sp_menu
data/sp_menu_especial-de-hoy
data/nl_
data/nl_over
data/nl_menu
data/nl_menu_specialiteit-van-de-dag

The above could be the pages for a multilingual restaurant website. Containing a home page data/en_, data/sp_ and data/nl_ served at https://www.example.com/, https://www.example.sp/ and https://www.example.nl/ .

An about our restaurant page data/en_about, data/sp_sobre and data/nl_over served at https://www.example.com/about, https://www.example.sp/sobre and https://www.example.nl/over.

A page for the restaurant's menu data/en_menu, data/sp_menu and data/nl_menu served at https://www.example.com/menu, https://www.example.sp/menu and https://www.example.nl/menu.

A page for the restaurant's daily special data/en_menu_todays-special, data/sp_menu_especial-de-hoy and data/nl_menu_specialiteit-van-de-dag served at https://www.example.com/menu/todays-special, https://www.example.sp/menu/especial-de-hoy and https://www.example.nl/menu/specialiteit-van-de-dag.

Content

Each entry in the storage engine, a regular file for the locale_prefix, contains the HTML for the page body. The page body hereby is defined not the HTML <BODY> element, but the actual semantic body of a website i.e. it's textual content as headings, paragraphs and images. Each entry can also contain PHP code fragments to dynamically generate content and/or call Nocterra API functions.

<?php

setTitle('About my website');
addKeywords('john do, bespoke clothing, new york city');

?><H3>Welcome to my website</H3>

<P>I'm a bespoke tailor in New York city. I make clothing especially tailored to you.…

Noctera provides a powerful link generation method. It generates cross domain multi lingual links. It is aware of the entries in the menu configuration to provide human readable SEO optimized URLs to pages with meta data. This way you don't have to track to URLs for each page on your website in each language. Provide SEO information like canonical URLs and noindex. Which you control from a central location.

During the link generation, links to local resources such as images and scripts are detected. To improve user expedience and SEO, URLs to resources are timestamped. Doing this browsers, bots and social media platforms are allowed to cache the resources for a long period of time, without the user not seeing new or updated versions when visiting your website.

<A href=".">Text</A>
Link to the current page in the current language.
<A href=":fr:.">Texte</A>
Link to the current page in French.
<A href="#chapter1">Chapter 1: Foo</A>
Link to the current page instructing the browser to jump to the anchor chapter1.
<A href="/">Text</A>
Link to the home page in the current language.
<A href=":sp:/">Texto</A>
Link to the home page in Spanish.
<A href="/#donate">make a donation</A>
Link to the home page instructing the browser to jump to the anchor donate.
<A href="/foo">Text</A>
Link to the foo page in the current language.
<A href=":nl:/foo">Tekst</A>
Link to the foo page in Dutch.
<A href="/foo#far">Foo Far</A>
Link to the foo page instructing the browser to jump to the anchor far.
<A href="/foo/bar">Text</A>
Link to the bar subpage in the current language.
<A href=":sw:/foo/bar">Text</A>
Link to the bar subpage in Swedish.
<A href="/foo/bar#far">Bar Far</A>
Link to the bar page instructing the browser to jump to the anchor far.
<A href="https://www.grayjay.app/">Grayjay</A>
Link to an external website.
<A href="https://www.gnu.org/licenses/gpl-3.0.txt" download>download the GPL licence</A>
Link to a file on an external website and instruct the browser to download it instead of showing it.
<SCRIPT src="https://www.gnu.org/scripts/ease.js"></SCRIPT>
Embed the GNU ease.js framework into the page from their website.
<IMG src="images/howard-selfie.jpg">
Embed a timestamped photograph of Howard in the page.
<IMG src="Icon{images/british_flag.jpg}">
Embed a timestamped image of British flag from the Icon imageset in the page.
<SCRIPT src="scripts/bouncyball.js"></SCRIPT>
Embed the timestamped bouncy ball javascript in the page.