@reldens/cms
v0.57.0
Published
Reldens - CMS
Maintainers
Readme
Reldens CMS
A powerful, flexible Content Management System built with Node.js, featuring an admin panel, multi-domain frontend support, enhanced templating with reusable content blocks, system variables, internationalization, template reloading, dynamic forms, and automated installation with subprocess handling.
Features
- Quick Setup
- Web-based installer with guided setup process and subprocess management
- Subprocess installation handling for complex operations with progress tracking
- Automatic database schema creation and seeding
- Intelligent dependency management with npm integration
- Environment configuration generation with template validation
- Directory structure initialization with asset copying
- Frontend Engine
- Multi-domain support with domain-specific templates and partials
- Dynamic routing from database-driven routes
- Entity-based URLs (e.g.,
/articles/123) - Template fallback system (domain → default → base)
- Layout system with body content layouts and page wrappers
- Reusable content blocks with
<entity>template functions - Collection rendering with filtering, sorting, pagination, and loop support
- Custom partial tags with HTML-style syntax for complex partials
- Entity access control for public/private content
- Static asset serving with Express integration as default
- Template engine with Mustache integration as default
- System variables for request, route, and domain context
- Enhanced context passing with currentEntity data in child blocks
- Template functions for URLs, assets, dates, and translations
- Event-driven rendering with hooks for customization
- Custom 404 handling
- Advanced search functionality with template data support
- Dynamic forms system with template transformers and security features
- Template reloading for development with configurable reload strategies
- Admin Panel
- Full CRUD operations for all entities including content blocks
- File upload handling with multiple storage buckets
- Role-based authentication and access control
- Advanced filtering and search across entity properties
- Bulk operations (delete multiple records)
- Relationship management with foreign key support
- Template-driven UI with customizable admin themes
-️ Database & Entities
- Multiple database drivers (Prisma by default, others via DriversMap)
- Automatic entity generation from a database schema
- Relationship mapping and foreign key handling
- Custom entity configuration with validation rules
- Translation support for entity labels and properties
- Content blocks management via cms_blocks table
- Entity access control via entities_access table
- Dynamic forms storage via cms_forms and cms_forms_submitted tables
- Configuration & Architecture
- Environment-based configuration (.env file)
- Modular service architecture with specialized classes for better maintainability
- Event-driven system with hooks for customization
- Extensible authentication (database users or custom callbacks)
- Password encryption with PBKDF2 (100k iterations, SHA-512) - automatic on save
- File security with path validation and dangerous key filtering
- Internationalization support with translation files
Architecture
Core Classes
The CMS uses a modular architecture with specialized classes:
Installation & Management:
Installer- Installation orchestrator with subprocess management and progress trackingManager- Main CMS orchestrator with service initialization and configuration managementMySQLInstaller- Database-specific installation with schema migration support
Frontend Orchestrator:
Frontend- Main orchestrator class that coordinates all frontend operations
Template Management:
TemplateResolver- Template discovery and domain resolutionTemplateCache- Template and partial caching managementTemplateReloader- Template reloading with file change detection
Request Processing:
RequestProcessor- HTTP request routing and path handlingSearchRequestHandler- Dedicated search request processingDynamicFormRequestHandler- Form submission processing
Content Management:
ContentRenderer- Content generation and template processingEntityAccessManager- Entity access control and loading
Response Handling:
ResponseManager- HTTP response handling and caching logic
Template Processing:
TemplateEngine- Core template rendering with enhanced contextSystemVariablesProvider- System variables for templatesFormsTransformer- Dynamic forms template transformer
Forms System:
DynamicForm- Form validation and data processingDynamicFormRenderer- Template-based form rendering
This architecture follows SOLID principles, providing better:
- Testability - Individual components can be tested in isolation
- Maintainability - Changes to one area don't affect others
- Reusability - Components can be reused in different contexts
- Readability - Smaller, focused classes are easier to understand
Installation
Install the CMS package and its dependencies:
npm install @reldens/cmsThen use the web installer or create the files manually.
Method 1: Automated Web Installer with Subprocess Handling
npx reldens-cmsNavigate to http://localhost:8080 and follow the installation wizard with:
- Automatic dependency checking and installation
- Subprocess progress tracking for complex operations
- Database connection validation with real-time feedback
- SSL certificate configuration for production
- Post-installation callbacks for custom initialization
Method 2: Manual Setup
const { Manager } = require('@reldens/cms');
const cms = new Manager({
projectRoot: process.cwd(),
entityAccess: {
cmsPages: { public: true, operations: ['read'] },
articles: { public: true, operations: ['read'] },
users: { public: false }
},
// Enhanced manager configuration
authenticationMethod: 'db-users', // or 'custom'
adminRoleId: 99,
cache: true,
reloadTime: 0 // Disable template reloading for production
});
cms.start();Configuration
Environment variables: Database, server, admin, multi-domain settings Template reloading: Configure for development (-1) or production (0) Entity configuration: Custom entity properties, validation, and relationships Manager options: Authentication, caching, domain mapping
Full documentation: See .claude/configuration-guide.md
CLI Commands
Start CMS
npx reldens-cmsRuns the installer if not installed, otherwise starts the CMS server.
Generate Entities
npx reldens-cms-generate-entities
npx reldens-cms-generate-entities --overrideGenerate entity classes from database schema.
Update User Password
npx reldens-cms-update-password [email protected]
npx reldens-cms-update-password --username=adminSecurely update user passwords via CLI. Password will be prompted if not provided.
Password Management
Automatic encryption: PBKDF2 with 100k iterations, SHA-512
CLI password update: npx reldens-cms-update-password [email protected]
Event-driven: Encrypts passwords automatically on save via admin panel
Storage format: salt:hash (192 characters total)
Enabled by default: Set enablePasswordEncryption: false to disable
Full documentation: See .claude/password-management-guide.md
Advanced Installation Features
Subprocess handling for complex operations with progress tracking Enhanced Manager with service validation and automatic initialization Development mode detection with configurable patterns Security configuration with CSP, Helmet headers, and external domain support
Full documentation: See .claude/installation-guide.md
Dynamic Forms System
Create database-driven forms with <cmsForm key="contactForm"/> tags in templates. Features:
- Schema-based validation with multiple field types (text, email, select, etc.)
- Security: Honeypot protection, rate limiting, XSS protection
- Domain-aware template customization
- Event hooks for custom processing
- Database storage in cms_forms and cms_forms_submitted tables
Full documentation: See .claude/forms-system-guide.md
Search Functionality
Multi-entity search with pagination and template data support.
Usage: /search?search=technology&limit=20&templateData[columnsClass]=col-md-4
Full documentation: See .claude/search-guide.md
Enhanced Templating System
Powerful template engine with Mustache integration, system variables, and dynamic content rendering.
Core Features:
- System variables:
{{currentRequest.host}},{{currentRoute.title}},{{systemInfo.environment}} - Template functions:
[url(/path)],[asset(/img.png)],[date(now, Y-m-d)],[translate(key)] - Entity rendering:
<entity name="cmsBlocks" field="name" value="header"/> - Collections with pagination:
<collection name="articles" filters="{}" data="{limit: 10}"> - Custom partials:
<partial name="hero" title="Welcome"/>or{{>hero -{data}-}}
Full documentation: See .claude/templating-system-guide.md
Internationalization & Multi-Domain
Translation files: JSON-based i18n with [translate(key)] and [t(key, fallback)] functions
Multi-domain support: Domain-specific templates, partials, and configurations
Layout system: Two-tier layout (page.html + layouts/) with multiple layout options
Content blocks: Reusable content via cms_blocks table
Entity access control: Configure public/private entities and operations
Full documentation: See .claude/multi-domain-i18n-guide.md
Advanced Usage
Template Reloading: Set reloadTime: -1 for development, 0 for production
Event System: Hook into CMS events for customization
Custom Authentication: Implement custom auth callbacks
File Upload Config: Configure MIME types and allowed extensions
Full documentation: See .claude/advanced-usage-guide.md
Database Schema
Core tables: routes, cms_pages, cms_blocks, entities_access, entities_meta Forms tables: cms_forms, cms_forms_submitted Optional: users, roles
Full documentation: See .claude/database-schema.md
API Reference
Complete class and method reference for all CMS components.
Full documentation: See .claude/api-reference.md
Contributing
- Fork the repository
- Create a feature branch
- Follow the coding standards in the JavaScript rules
- Submit a pull request
Need something specific?
Request a feature here: https://www.reldens.com/features-request
Documentation
https://www.reldens.com/documentation/cms
License
MIT License - see LICENSE file for details.

