Customization
Extend HotCRM with ObjectStack metadata, actions, flows, AI skills, and UI definitions.
Customization
This section is for developers and technical implementers extending HotCRM with code. If you are configuring users, profiles, flows, or sharing from the app, start with Administration.
What you can build
| Area | What it covers |
|---|---|
| Extending objects | Fields, objects, hooks, flows, validation, sharing |
| AI skills | Skills for the platform assistant, and the barrel that registers them |
| UI extensions | Pages, views, dashboards, actions |
| Testing and CI | Metadata validation and automated checks |
Current source layout
HotCRM is a single ObjectStack app. Add or modify metadata under src/, then export it from the matching barrel file.
src/
├── objects/ # *.object.ts schemas and *.hook.ts lifecycle logic
├── hooks/ # barrel that hands the object hooks to the stack
├── actions/ # UI actions and executable action bodies
├── flows/ # automation
├── skills/ # AI skills
├── apps/
├── views/
├── pages/
├── dashboards/
├── reports/
├── datasets/ # dimensions and measures the dashboards and reports query
├── mappings/ # import column-to-field projections
├── profiles/
├── sharing/
├── translations/
├── data/ # seed data
├── docs/ # package docs stating the business rules the flows implement
└── interfaces/ # shared types (an empty barrel today)HotCRM authors skills, not agents: the two app-owned copilots and the directory that held them were retired, and AI capability now comes from the platform assistant every ObjectStack environment provides. Exporting a skill from src/skills/index.ts is the whole wiring step. See AI Skills.
File suffix protocol
| Suffix | What it defines |
|---|---|
*.object.ts | Data model |
*.hook.ts | Object lifecycle logic |
*.actions.ts | UI actions and executable actions |
*.flow.ts | Automation |
*.skill.ts | AI Copilot skill |
*.page.ts | UI page |
*.view.ts | List or kanban view |
*.dashboard.ts | Dashboard |
*.report.ts | Report |
*.sharing.ts | Sharing rule |
*.profile.ts | Permission profile |
Golden rules
- Use the
crm_prefix for HotCRM object names. - Use ObjectQL and ObjectStack APIs, not raw SQL.
- Keep metadata exported from the relevant
src/**/index.tsfile. - Update translations when adding user-visible labels.
- Run
pnpm verifybefore publishing.