How slaxxer/xentium works
Xentium is a TypeScript community platform and CMS, deployed as a modular monolith with an API, browser client, and background worker. The principal workflow is a visitor using the web application to access community and CMS features through the API, which persists state in PostgreSQL and uses Redis-backed jobs for background work. Major branches include installation, authentication, articles and search, moderation, appearance and Theme Studio, plugins, and migration from other platforms. Relationships below rely on the README and supplied source excerpts/index; unsampled modules are represented by their existing directories.
Main entry points: app.ts HTTP application · db.ts PostgreSQL · articles Articles and comments · installer Browser installer
Components 26
Web client
- React application
apps/web/src/app/App.tsx - API client
apps/web/src/lib/api.ts - Admin console
apps/web/src/features/admin
API and domain
- HTTP application
apps/api/src/app/app.ts - Sign-in and sessions
apps/api/src/modules/auth - Profiles and groups
apps/api/src/modules/users - Articles and comments
apps/api/src/modules/articles - Full-text search
apps/api/src/modules/search/search.service.ts - Moderation cases
apps/api/src/modules/moderation/moderation.service.ts - Notifications
apps/api/src/modules/notifications/notification.service.ts - Progression and badges
apps/api/src/modules/progression - Appearance and layouts
apps/api/src/modules/appearance/appearance.service.ts
Platform services
- Background worker
apps/api/src/worker.ts - Scheduled and queued jobs
apps/api/src/jobs - PostgreSQL
apps/api/src/infrastructure/db.ts - Redis and queue
apps/api/src/infrastructure/redis.ts - Upload storage
apps/api/src/infrastructure/storage/LocalStorageProvider.ts
Extensions and themes
- Theme Studio
apps/api/src/modules/themes/themeStudio.ts - Plugin lifecycle
apps/api/src/core/plugin-engine/plugin-engine.ts - Typed plugin API
packages/plugin-sdk/src/index.ts - Marketplace service
Setup and migration
- Browser installer
apps/api/src/modules/installer - Install steps
apps/api/src/core/installer-engine - Platform importers
packages/migrate-core/src/loader.ts
Other components
- Community user
- Site administrator
Connections 29
- Community user → React application: uses
README.md - Site administrator → React application: administers
README.md - React application → API client: requests data
apps/web/src/app/App.tsx - API client → HTTP application: calls API
apps/web/src/lib/api.ts - HTTP application → Sign-in and sessions: routes requests
- HTTP application → Articles and comments: routes requests
- HTTP application → Moderation cases: routes requests
- HTTP application → Profiles and groups: routes requests
- HTTP application → Full-text search: routes requests
- HTTP application → Notifications: routes requests
- HTTP application → Appearance and layouts: routes requests
- HTTP application → Browser installer: routes requests
- Admin console → API client: calls API
apps/web/src/features/admin/useAcpNav.ts - Articles and comments → Full-text search: indexed for search
- Sign-in and sessions → PostgreSQL: persists sessions
apps/api/src/modules/auth/auth.service.ts - Articles and comments → PostgreSQL: stores content
- Moderation cases → PostgreSQL: records cases
apps/api/src/modules/moderation/moderation.service.ts - Profiles and groups → PostgreSQL: stores profiles
apps/api/src/modules/users/users.controller.ts - Browser installer → Install steps: runs setup
README.md - Install steps → PostgreSQL: applies schema
README.md - Browser installer → Site administrator: creates account
README.md - Theme Studio → Appearance and layouts: edits layouts
apps/api/src/modules/themes/theme.routes.ts - Plugin lifecycle → Marketplace service: checks entitlements
apps/api/src/core/plugin-engine/plugin-engine.ts - Plugin lifecycle → PostgreSQL: records installs
apps/api/src/core/plugin-engine/plugin-engine.ts - Typed plugin API → Plugin lifecycle: extends platform
README.md - Background worker → Scheduled and queued jobs: runs jobs
- Scheduled and queued jobs → Redis and queue: queues work
- Platform importers → PostgreSQL: imports content
- Articles and comments → Upload storage: stores uploads