CMS database application

A single page Oracle APEX application built and served without the standard Javascript and CSS templates. It comprises about 6000 lines of PL/SQL code, 30 REST handlers, 1500 lines of Javascript and 1000 lines of CSS.

Authentication

Website content is seriously important to its creators, so users have to be authenticated before they can start building their websites. Passwords are a bane of modern digital life, so we use Google's proxy authentication service. In this way, application access is always authenticated through your independent Google account.

An upcoming version of the CMS will additionally offer authentication through Oracle's password-less sign-on feature. Either mechanism results in your email address becoming known to the CMS and it is this by which users are uniquely identified in the database. Users could access the same content through either authentication method as long as their email address is the same in both.

Previous versions of the CMS included Facebook and LinkedIn as alternative social sign-in vehicles but experience over the years has shown that the most reliable and stable is Google. I gave up on Facebook when they demanded I have a valid business account; LinkedIn simply doesn't provide all of the requested profile details and was hardly ever used anyway.

APEX application structure

The application consists of a single dynamic content region with the following PL/SQL source:

BEGIN 
  RETURN pck_core.getPageContent; 
END;

The function returns the page HTML. For first time users this will include a pre-created personalised starter website.

Users can create up to 500 websites with their own Netlify account. This includes TEST sites published as sub-domains of “netlify.app” and LIVE sites linked to custom domains purchased either directly through Netlify or transferred from domain registrars like Namecheap, GoDaddy.

In this way, websites are published independently as TEST and LIVE versions of the same content allowing a form of version control. Typically, users build and deploy content first in TEST, then deploy to their LIVE site.

CKEditor

The heart of the CMS is its editing capability. 

All of the free functionality provided by CKEditor is configured in the CMS - the only missing features are premium features that depend on some kind of external agent - like uploading images or collaborative editing. 

One of the best features of CKEditor is its ability to autosave document changes. Every 2 seconds all document changes are sent to the backend Oracle server. Another useful feature are its word and character counts which are auto-updated as you type.

Of course, all of the “normal” features you would expect are available - headings, code blocks, tables, image insert, lists, block quotes, links, alignment, text formatting, undo / redo etc. For the more technically minded, it is possible to edit the underlying source HTML code if you need HTML elements that aren't yet supported in CKEditor like detail / summary tags, dialog, div, article, section etc.

Media handling

For each page, users can upload digital media to a Cloudinary account to be included in the content. Media files are served to client devices through Cloudinary's CDN network. This has the great benefit of allowing us to create websites that automatically minimise the amount of data that is sent to a website visitor's device, whilst ensuring it gets sent there as fast as possible.

The process of incorporating media into a website page may seem complicated because we can't drag & drop files directly into the freely licensed editor. However, it's not too difficult - 1) you upload your images to Cloudinary which then appear automatically as thumbnails in the left hand panel 2) you click on a thumbnail icon to copy its URL 3) you then click on the “Insert image via Url” button in the editor in order to include it in your page at the cursor location (inline or block).