Let's talk about structure first. What happens when you request a URL? Look at the below structure to understand it better. Any domain is a site. In our example, is a site. A site must have a context and domain. Context is nothing but an identifier to use in API. Let’s see a flow in the below image.


Each sites needs at least one language. Default language is English. You can create multiple languages from the admin panel. In below URL “en” is a language.


Each sites needs their own tenants. Such as;

  • Web
  • Android
  • iOS
  • PWA
  • AMP

You can use/create as many as you want from the admin panel. In below URL “web” is a tenant.

Default language and tenant is en and web respectively.


For accessing a link we need a URL. We call it a category. In below URL “home” is category. Each category needs a theme.


Theme is a combination of basic HTML and placeholder for the module. Placeholder is actually a hook. Multiple hook can be added in a theme based on requirement or layout of the page. See below:

    <header class="container-fluid">
    <footer class="footer">
        %{cms.hook.HOOK_FOOTER }%

You must have to create hook before using it. Some hooks are already created. You may explore in admin panel.


Hook is a placeholder to have modules. Hook identifier is like below. HOOK_HEADER is an alias of a hook. You can create hook from the admin panel.



Module is responsible for populate the data. We have following type of modules. You can create frontend module from the admin panel. There are 6 types of frontend modules.

  • Static: Fetch data from CMS table (content) ie. Content Module. View is not required.
  • Query: Execute query from any table and database. (if database is different you need to add jdbc name in desc field.)
  • Service: Fetch data from any URL. Return type will be json or text/html (if you need text/html; append 'resultType=html' in your service url)
  • Custom: Don't do anything special. Just load the module.
  • QueryService: It executes a query and pass those data to service URL. You can also get the data from the both.
  • UrlService: You can invoke any service along with HTTP request dynamic parameters.

Page rendered in - 0.054675102233887 Powered by