Admin UI Overview
ActiveQL Admin (activeql-active-admin) is a complete server-side admin UI framework integrated with ActiveQL. It provides automatic CRUD (Create, Read, Update, Delete) management interfaces for all entities defined in an ActiveQL schema.
Key Features
- Automatic CRUD interfaces for all ActiveQL entities
- Server-side rendering with Eta template engine
- Dynamic interactions using HTMX
- Authentication with JWT token support
- Permission handling through Principal objects
- File upload/download support
- Customizable configuration per entity and field
Architecture
The Admin UI uses:
- Express.js for routing
- Eta template engine for server-side rendering
- HTMX for dynamic form submissions
- Bootstrap 5 + Tabler for UI components
Quick Start
import { addActiveAdmin } from 'activeql-active-admin';
import express from 'express';
const app = express();
await addActiveAdmin({
path: '/admin',
title: 'My Admin',
entities: {
// Entity configurations
}
});Core Components
| Component | Description |
|---|---|
| ActiveAdmin | Main orchestrator class |
| EntityUI | Entity representation with fields |
| FieldUI | Field-level abstraction |
| DataAccessor | Data retrieval and mutation |
ActiveAdmin
The main entry point that manages:
- Express middleware setup
- Template engine configuration
- Route registration
- Menu system initialization
- Authentication/token management
EntityUI
Represents a single entity with:
- Field visibility and ordering
- Entity-level permissions
- Path generation
- Content block rendering
- Association handling (AssocTo, AssocToMany, AssocBy)
FieldUI
Abstract base with implementations for:
- IdFieldUI: Primary key field
- AttributeUI: Regular attributes (String, Int, Float, Date, Boolean, File, Enum)
- CustomFieldUI: User-defined fields
- AssocToUI: Single/many associations
- AssocByUI: Reverse associations
DataAccessor
Handles all data operations:
- Query/pagination/search
- Load/save/delete items
- Association handling
- Permission validation
CRUD Operations
Index Page
Paginated list with:
- Sorting
- Searching
- Custom actions
Show Page
Read-only detail view with:
- Associations
- Content blocks
- Custom actions
Edit Page
Form with:
- Validation
- File uploads
- Association selection
Delete
Single item deletion with confirmation
Supported Field Types
| Type | Description |
|---|---|
| ID | Primary key |
| String | Text input |
| Int | Integer input |
| Float | Decimal input |
| Boolean | Checkbox |
| Date | Date picker |
| DateTime | DateTime picker |
| File | File upload |
| Enum | Dropdown select |
| AssocTo | Single association |
| AssocToMany | Multiple associations |
| AssocBy | Reverse association (read-only) |
UI Technologies
- Bootstrap 5.3.3: Layout and components
- Tabler: Extended Bootstrap components and icons
- HTMX 1.9.10: Dynamic form submissions
- Alpine.js 3.x: Lightweight interactivity
Integration with ActiveQL
The Admin UI integrates with:
- Runtime: Entity definitions, attributes, associations
- Entity: CRUD operations, permissions, validation
- DataStore: Entity statistics
- Principal: Permission checks, user context
- FileHandler: Upload/download operations
- Enums: Rendering enum dropdowns