Skip to content

Systems

A system is a ready-made functional unit of Nago, such as user management, mail delivery or a file drive. It brings its use cases, its permissions, its persistence and usually its admin pages, which appear as cards in the admin center.

Enable a system

Each system is enabled by a method of the configurator or by an Enable function in its cfg package. Both return a struct with the use cases and the page paths of the system:

users := std.Must(cfg.UserManagement())       // application.UserManagement
drives := std.Must(cfgdrive.Enable(cfg))      // cfgdrive.Management

Keep the returned value to call the use cases of the system later, e.g. users.UseCases.FindByID.

Enabling is idempotent: the first call creates the system, later calls return the same one. A system enables the systems it depends on, so you never have to care about the order.

Standard systems

option.MustZero(cfg.StandardSystems())

StandardSystems enables Image, Admin, User, Backup, Mail, Secret, Template and Session Management. Session Management is mandatory anyway and pulls in most of them, so every application has User, Role, Group, Permission, Settings, Admin, Mail, Secret, Template, Image and Theme Management. StandardSystems additionally enables Backup Management. All other systems must be enabled explicitly.

A user only sees the admin cards of a system if they have the matching permissions. During development, the bootstrap admin has all nago.* permissions.

Available systems

Identity and access

SystemEnableDescription
User Managementcfg.UserManagement()user accounts, registration, profile, passwords, consents
Session Managementcfg.SessionManagement()login, logout and single sign-on (always enabled)
Role Managementcfg.RoleManagement()roles which bundle permissions, system roles
Group Managementcfg.GroupManagement()groups of users for sharing resources
Permission Managementcfg.PermissionManagement()declaring and listing permissions
ReBACcfg.RDB(), cfgrebac.Enablerelations database for all grants, editor for per-resource grants
User Circlescfgusercircle.Enabledelegated administration of subsets of users
Token Managementcfg.TokenManagement()API access tokens

Administration and operations

SystemEnableDescription
Admin Managementcfg.AdminManagement()the admin center (always enabled)
Settings Managementcfg.SettingsManagement()global settings with generated forms
Theme Managementcfg.ThemeManagement()colors, fonts, logos and legal links (always enabled)
Backup Managementcfg.BackupManagement()backup, restore and master key
Secret Managementcfg.SecretManagement()encrypted vault for credentials
Scheduler Managementcfgscheduler.Enablebackground jobs
Migration Managementcfgmigration.Enablestatus of data migrations
Inspector Managementcfginspector.Enablebrowse and edit all stores
Localization Managementcfglocalization.Enabletranslate texts at runtime

Content and communication

SystemEnableDescription
Mail Managementcfg.MailManagement()outgoing mail queue via SMTP
Template Managementcfg.TemplateManagement()editable text, HTML and PDF templates
Image Managementcfg.ImageManagement()image upload and delivery in fitting sizes (always enabled)
Drive Managementcfgdrive.Enablefile storage with folders, versions and access control
Data Import Managementcfgdataimport.Enableimport CSV, JSON and PDF forms with review
Signature Managementcfgsignature.Enableunqualified electronic signatures
SMS Managementcfgsms.Enablesend SMS
Chatbot Managementcfgchatbot.Enablesend chat messages through a bot
REST APIs (HAPI)cfghapi.EnableREST endpoints with OpenAPI
AI Managementcfgai.EnableLLM providers, chat sessions and an assistant
Requirements (Speclink)cfgspeclink.Enablebrowse the requirements compiled into the application

The cfg packages are below go.wdy.de/nago/application/<system>/cfg, for example go.wdy.de/nago/application/drive/cfg.

Experimental

Nago contains further modules which are still under development and not documented here yet: Flow (application/flow/cfg, data modeling and forms), CMS (application/cms/cfg, static pages) and Workflow (application/workflow/cfg, an event-driven workflow engine).