HotCRM

June 4, 2026 ยท View on GitHub

HotCRM

HotCRM

AI-Native CRM for the ObjectStack marketplace. The reference implementation every future marketplace app forks from.

License Manifest Version Marketplace

Open in StackBlitz

HotCRM is a complete, opinionated CRM built as the first official application on the ObjectStack marketplace. Install it into any ObjectStack environment in one click and get a working CRM in 30 seconds โ€” or fork it as the canonical example of how to build your own marketplace app.

Try it in your browser (no install): click the StackBlitz badge above. It boots HotCRM in a WebContainer using @objectstack/driver-sqlite-wasm (sql.js) instead of better-sqlite3, which can't compile inside the WebContainer sandbox. .stackblitzrc sets OS_DATABASE_DRIVER=sqlite-wasm so the runtime picks the WASM driver automatically. First load takes ~60s while pnpm installs.


๐Ÿ“ธ Screenshots

Sales pipeline (kanban)All opportunities (table)
Sales pipelineAll opportunities
Accounts (cards)Service cases (kanban)
AccountsService cases
Executive dashboard
Executive dashboard

Screenshots show HotCRM running in zh-CN with seeded data. Bundled translations: en, zh-CN, es-ES, ja-JP.


โœจ What you get

15 business objects spanning the full Lead-to-Cash cycle:

SalesServiceMarketingRevenue
crm_leadcrm_casecrm_campaigncrm_contract
crm_accountcrm_knowledge_articlecrm_campaign_membercrm_quote
crm_contactcrm_taskcrm_quote_line_item
crm_opportunity
crm_opportunity_line_item
crm_product
crm_forecast

Plus 2 AI agents (sales-copilot, service-copilot), 4 dashboards, 10 flows, 10 actions, 6 AI skills, 4 language bundles (en, zh-CN, es-ES, ja-JP), 10 roles, and 5 sharing rules.


  1. Sign in at cloud.objectos.app.
  2. Open Marketplace โ†’ HotCRM and click Install into your environment.
  3. Open your environment URL โ€” HotCRM is wired into the Studio shell. Done.

First-time on ObjectStack? Create an environment from the Starter template first, then install HotCRM on top.


๐Ÿ›  Run locally (development / fork it)

git clone https://github.com/objectstack-ai/hotcrm.git
cd hotcrm
pnpm install
pnpm dev                    # ObjectStack runtime starts at http://localhost:4001
pnpm typecheck              # strict TypeScript
pnpm build                  # produces dist/objectstack.json (the publishable artifact)

The compiled dist/objectstack.json is the package โ€” that's what gets uploaded to the marketplace.


๐Ÿ“ฆ Publish a fork to the marketplace

After you've forked, customized, and renamed the package:

# 1. Authenticate once (writes ~/.objectstack/cloud.json)
objectstack cloud login

# 2. Build the artifact
pnpm build

# 3. Publish a new version
objectstack package publish dist/objectstack.json \
  --manifest-id app.acme.crm \
  --version 1.0.0 \
  --display-name "Acme CRM" \
  --category crm \
  --visibility marketplace \
  --note "Initial release"

The CLI is idempotent: re-running with the same --manifest-id updates the package; new --version values create immutable versioned snapshots.

See docs: Publishing your first marketplace app for the full walkthrough.


๐Ÿ— Repository layout

hotcrm/
โ”œโ”€โ”€ objectstack.config.ts         # manifest + defineStack() โ€” single source of truth
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ objects/                  # *.object.ts โ€” data model (15 objects)
โ”‚   โ”œโ”€โ”€ actions/                  # *.action.ts โ€” server actions + AI tools (10)
โ”‚   โ”œโ”€โ”€ flows/                    # *.flow.ts โ€” visual flows (10): screen, record-change & scheduled
โ”‚   โ”œโ”€โ”€ hooks/                    # hook registry barrel
โ”‚   โ”œโ”€โ”€ agents/                   # *.agent.ts โ€” AI copilots (2)
โ”‚   โ”œโ”€โ”€ skills/                   # *.skill.ts โ€” AI skills (6)
โ”‚   โ”œโ”€โ”€ cubes/                    # *.cube.ts โ€” analytics cubes
โ”‚   โ”œโ”€โ”€ dashboards/, reports/     # analytics UI
โ”‚   โ”œโ”€โ”€ pages/, views/, apps/     # UI definitions
โ”‚   โ”œโ”€โ”€ profiles/, sharing/       # security
โ”‚   โ”œโ”€โ”€ translations/             # en / zh-CN / es-ES / ja-JP
โ”‚   โ””โ”€โ”€ data/                     # seed data
โ”œโ”€โ”€ apps/docs/                    # Fumadocs app
โ””โ”€โ”€ content/docs/                 # Documentation content

Every file follows the <entity>.<kind>.ts convention. The crm_ prefix on object names is explicit in source โ€” no runtime magic. Both rules are required for marketplace acceptance.


๐Ÿ“š Documentation

  • Live docs: start pnpm --filter @hotcrm/docs dev -- -p 3001, then open http://localhost:3001/docs
  • For business users: Sales, Service, Marketing, Revenue, AI Copilot guides
  • For developers: Architecture, Customization, API reference, Testing & CI
  • For publishers: Marketplace publishing guide

๐Ÿค Why fork HotCRM?

Because it's the reference for every ObjectStack convention you'll encounter:

  • โœ… crm_ namespace prefix on every object (explicit, grep-able, marketplace-safe)
  • โœ… Strict *.object.ts / *.hook.ts / *.action.ts separation of concerns
  • โœ… All metadata validated against @objectstack/spec schemas
  • โœ… ObjectQL only โ€” no raw SQL anywhere
  • โœ… AI-Native โ€” every entity has an *.action.ts that's also an AI tool
  • โœ… Four-language i18n out of the box
  • โœ… Production-shaped sharing rules, profiles, and role hierarchy

If you want to ship an HR app, a project tracker, a help-desk โ€” start by reading HotCRM's structure, then change names.


๐Ÿ“„ License

Apache-2.0. See LICENSE.