HyperFluxCMS

Fast. Flexible. Free.

HyperFluxCMS

How HyperFluxCMS woks

Technical details about how HyperFluxCMS works

published 01/01/2025 15:00, updated 04/13/2026 22:37

Understand how HyperFluxCMS processes and manages your site's content to show the visitor a complete website without you having to worry about the laborious processes of content management.

This page is intended to give an overview of how HyperFluxCMS handles your site's information.

Your site is ready, installed, and configured. There are templates, themes, and half a dozen posts already published.

You then decide to create a new post.

You log in using your username and password, which has permission to create and edit posts, view the list of posts, and create a new one.

In the new post, you fill in the data: page title, subtitle, cover image, other information, and the content.

You write the content using zero, one, two, or all three of the supported Markup Languages.

You hate HTML, so you write most of the post in HyperLite because it is simple and fast. For one or two elements you use HyperCode, because you want to, for example, insert an embedded YouTube video.

Then you click Submit to create the new post. That's when the magic begins.

Processing post data.

When a post is created or edited, HyperFluxCMS begins processing it.

At this stage, it automatically does some of the "dirty work" that is normally laborious when editing a site directly in HTML.

One of the things it does is process accented letters and symbols, replacing them with the corresponding "HTML Entities"; This way, you can write your text without worries, and it will be displayed correctly in the visitor's browser.

Furthermore, it tries to understand how you separated your text into lines and paragraphs, and creates them correspondingly.

It also creates indexing information so that the post can be found on the search page even if the capitalization and accentuation used as search criteria are different from what appears on the page (for example, the page may contain the word "ação" and the visitor searches for "ACAO").

And the main thing, it compiles/converts the codes written in HyperCode or HyperLite into the corresponding HTML code. For example, "Text in *bold*" written in HyperLite is compiled as "Text in <b>bold</b>".

In this process, it also replaces Compile-time variables, such as the editor's @c:user.name, with the corresponding values.

And it adds references (not the value) for runtime variables such as the site name and also for templates

If everything is correct and there are no errors that prevent compilation, then the compiled code is inserted into the database.

Note that the heavy work is done at this moment, when the editor submits the new page. This ensures that it is free from most predictable errors.

Transforming the page content into HTML at this moment ensures that the page load is extremely fast when it is accessed. After all, the page is edited rarely, and whoever edits it can wait an extra second or two for processing to finish. And when it is accessed by a site visitor, it will have already gone through the entire time-consuming process and can be accessed extremely quickly without overloading the server even with many simultaneous accesses.

Note: the original code, written by you in any of the languages, continues to exist and will be used as the basis when you decide to edit the page.

Accessing a page

After the page has been compiled and saved, what remains in the Database is almost plain HTML code, with the minimum possible processing that inevitably still needs to be done at runtime, when the post is accessed.

When a site visitor accesses the post, HyperFluxCMS prepares it to be sent and displayed in the browser.

  1. First, HyperFluxCMS looks for the most appropriate post for what the visitor is trying to access: a page with that permalink, or a search page, or an image...
  2. If it is a gallery image file, or another physically existing file, it simply sends the file.
  3. If it is an automatic thumbnail image, it obtains or generates the thumbnail according to the specified criteria.
  4. If not, it looks for a page whose permalink is the one requested. If not found, it initiates a search and shows a list of pages that have that word as a category.
  5. If it finds the page, it accesses the database record and reads the page information, such as author, date, etc.
  6. During this access, it also reads the compiled, pre-processed code.
  7. With this code, it looks for references to runtime variables and templates.
  8. If it finds a reference to a template, it inserts the template content at that point and continues processing, including processing the newly inserted code, which in turn may also contain other references to variables and other templates.
  9. If it finds a reference to a runtime variable, it is replaced by the current value of the variable, such as the site name.
  10. After finishing processing all the content, the text is sent to be displayed in the visitor's browser.

For example:

Visitor accesses the page "your-site.com/contact"

  1. HyperFluxCMS looks for a post with permalink equal to "contact". It finds it.
  2. Then it reads the pre-compiled code of the post, which was created when it was submitted by its author.
  3. In the pre-compiled code, it finds a reference to the template called "site-header".
  4. It looks in memory for a template called "site-header". It finds it. It takes its pre-processed code.
  5. It inserts the template content at that point and continues processing from there, including from the first character of the template that was just inserted.
  6. It finds a reference to the site.name variable. It inserts at that location the current value of the "Site Name" property. It continues processing.
  7. In the pre-compiled code, it finds a reference to the template called "site-footer".
  8. It looks in memory for a template called "site-footer". It finds it. It takes its pre-processed code.
  9. It inserts the template content at that point and continues processing from there.
  10. It reaches the end of the code. It sends the code to the visitor's browser, which displays it.

This ensures that:

  1. If some property such as the Site Name is changed in the site settings, automatically all posts and templates that use it will automatically start using the new updated name.
  2. If a template is edited, all posts and templates that use it will automatically start using the new one.

Suppose your site already has 500 published posts. And the posts use the template called "default", which in turn uses the "header" template.

One day you decide to update your site's appearance. The new design has a smaller header, a navigation menu with more options, and social media buttons that weren't there before.

In this case, simply edit the "header" template to use the new design. From then on, all site posts that use the "header" template will start using the updated version. You won't need to touch anything in the 500 already written posts.