Skip to main content

Shio CMS — Architecture Overview

Introduction

Viglet Shio CMS is an open-source headless Content Management System built on Java 21 and Spring Boot 4. It allows organizations to model content with custom Post Types, render websites using server-side JavaScript, and expose content via REST and GraphQL APIs.

The system provides a modern React admin console, a Hazelcast distributed cache for website rendering, and integration with Viglet Turing ES for advanced search capabilities.

This document describes the system's components, internal modules, and the core data flows.


High-Level Component Diagram


API Layer

ComponentDescription
REST APIControllers for posts, folders, sites, post types, users, groups, search, widgets, workflows, and file management (/api/v2/*)
GraphQL APIContent query interface with built-in GraphiQL console
Admin ConsoleReact + TypeScript + Radix UI + TailwindCSS admin interface for content management
Website RenderingServer-side JavaScript engine (Nashorn/Node.js) renders Page Layouts and Regions into HTML

Core Modules

ModulePackageResponsibility
Content Managementapi, persistenceCRUD for Posts, Folders, Sites, Post Types; publishing workflow; change history; references
Website EnginewebsitePage Layout rendering, Region evaluation, component API execution, Hazelcast cache integration
Search IntegrationturingAutomatic content indexing, Turing ES REST API integration, search field mapping
Exchangeexchange, providerImport/export of sites, folders, and posts; provider plugins for Blogger, OTCS, OTMM
Securityspring/securityUser, role, and group management; Spring Security integration; CSRF protection
WebhookwebhookIncoming webhook handling for external integrations

Backends & Storage

BackendPurposeNotes
DatabaseContent, metadata, configuration, usersH2 for dev; MariaDB/MySQL recommended for production
HazelcastDistributed page and object cacheTTL-based expiration (24h default); automatic invalidation on content change
File StorageStatic files and uploadsLocal filesystem with configurable paths; max upload 1 GB

Website Rendering Flow

When a visitor requests a page, the website engine resolves the URL to a content object, loads the associated Page Layout, evaluates each Region with its Component APIs, and assembles the final HTML. Hazelcast caches the rendered output for subsequent requests.


Content API Flow

External applications access content through the REST API or GraphQL endpoint. Both require authentication (except public site endpoints).


Technology Stack

LayerTechnologyNotes
RuntimeJava 21Minimum supported version
FrameworkSpring Boot 4.0.4Application container with auto-configuration
DatabaseH2 / MariaDB / MySQL / PostgreSQL / OracleH2 for development; MariaDB/MySQL recommended for production
CacheHazelcastDistributed cache for website rendering
SearchElasticsearch 9.3.3 via Viglet Turing SDKFull-text search integration
JavaScript EngineNashorn / Node.jsServer-side rendering of Page Layouts and Regions
FrontendReact 19 + TypeScript + Radix UI + TailwindCSS + ViteAdmin console (shio-react)
BuildMaven (backend) + npm (frontend)Multi-module project
CI/CDGitHub ActionsAutomated builds and code quality
ContainerizationDocker / Docker ComposeAvailable in project root and containers/ directory
OrchestrationKubernetesManifests available in k8s/ directory
API ProtocolsREST + GraphQLGraphiQL console available in development mode

Deployment Topologies

Development

Minimal setup for local development and evaluation.

Shio CMS (H2 embedded)

Shio CMS starts with an embedded H2 database. No external services are needed. Not suitable for production.


Simple Production

Recommended baseline for production environments.

Shio CMS + MariaDB / MySQL

MariaDB or MySQL provides durable persistence for content, users, and configuration. Hazelcast runs embedded within Shio CMS.


Docker Compose

Complete environment with all dependencies.

Nginx (reverse proxy, ports 80/443)
└── Shio CMS (port 2710)
└── MariaDB (port 3306)

All services are defined in the project's docker-compose.yaml. Volume mounts provide persistent storage for the database and Shio CMS store directory.


Kubernetes

For cloud deployments requiring horizontal scaling.

Nginx (reverse proxy)
└── Shio CMS (1..N replicas)
MariaDB

Kubernetes manifests are available in the k8s/ directory.


PageDescription
Installation GuideSetup with Docker, JAR, or build from source
Configuration ReferenceAll application.properties settings
Developer GuideTech stack, dev environment, and contribution guide
Website DevelopmentPage Layouts, Regions, and JavaScript API