Official starter templates for ObjectStack β production-shaped scaffolds users adopt via the CLI.
pnpm dlx @objectstack/cli create my-app --template todo| Template | Domain | Status | Port |
|---|---|---|---|
packages/todo/ |
Task & project management β the universal starter | β ready | 4002 |
packages/contracts/ |
Post-signature contract lifecycle (CLM) β AI-extracted metadata, approvals, renewal alerts | β v0 | 4003 |
packages/procurement/ |
Vendors, purchase requests, POs, goods receipt, 3-way-match rollup | β v0 | 4004 |
packages/compliance/ |
SOC 2 / ISO 27001 controls, evidence with expiry, assessments | β v0 | 4005 |
packages/content/ |
Content marketing engine β editorial calendar, competitive signals, channel ROI, 8-state piece lifecycle | β v0 | 4008 |
packages/helpdesk/ |
Ticketing, SLA, knowledge base | π§ planned | 4006 |
packages/sales-pipeline/ |
Lite CRM (leads, opportunities, accounts) | π§ planned | 4007 |
Looking for a full reference app? See hotcrm β the production-grade CRM built on the same engine.
| β Yes | β No |
|---|---|
| One opinionated capability | A generic framework demo |
| < 2500 LOC, readable in one sitting | A reference of every feature |
| Production-shaped (state machines, permissions, i18n, audit) | Throwaway / sample-only |
| Easy to delete what you don't need | Tightly coupled |
Every template:
- depends on published
@objectstack/*packages (no workspace links to the framework) - ships its own
README.md,CHARTER.md, and i18n - boots standalone with
pnpm install && pnpm devin under a minute
templates/
βββ packages/
β βββ <name>/ # one template = one package = @template/<name>
β βββ src/
β βββ CHARTER.md # scope + hard limits (required)
β βββ README.md # for the end user
β βββ objectstack.config.ts
β βββ package.json
βββ .github/
β βββ workflows/ # ci.yml (verify + smoke), publish.yml (marketplace)
β βββ dependabot.yml
βββ CONTRIBUTING.md # conventions for contributors (incl. AI agents)
βββ TEMPLATE_GUIDE.md # how to author a template
βββ CHANGELOG.md
βββ pnpm-workspace.yaml
βββ README.md
Requires Node β₯ 20 and pnpm β₯ 10.
pnpm install
pnpm --filter @template/todo dev # http://localhost:4002
pnpm typecheck
pnpm formatReset a template's local SQLite database:
rm -rf packages/todo/.objectstack- Read
CONTRIBUTING.mdfor the workflow. - Read
TEMPLATE_GUIDE.mdbefore adding a new template β it documents file suffixes, hard limits, schema gotchas, and the build-order playbook.
Push to main. CI must be green.
cp -r packages/todo packages/<your-template>
# edit package.json: name β @template/<your-template>, port β next free
# edit package.json: objectstack.marketplace.{manifestId,displayName,description,iconUrl,β¦}
# edit objectstack.config.ts: namespace, port
# rewrite CHARTER.md with your scope
# build out src/ following the order in TEMPLATE_GUIDE.md
# add row to the table above
pnpm install
pnpm --filter @template/<your-template> devPush to main β .github/workflows/publish.yml rebuilds every template
and POSTs each one to the cloud control plane (POST /api/v1/cloud/packages
POST /api/v1/cloud/packages/:id/versions). Re-running is idempotent β the version endpoint returns 409 when the(package, version)pair already exists and the script reportsskipped.
See docs/PUBLISHING.md for the full contract,
required GitHub Secrets (OS_CLOUD_API_KEY) / Variables (OS_CLOUD_URL),
local dry-run, and failure modes.
| Range | Owner |
|---|---|
| 3000β3002 | framework/ engine + studio |
| 4001 | hotcrm/ production reference |
| 4002+ | templates (one port per template) |