Official starter templates for ObjectStack β production-shaped scaffolds users adopt via the CLI.
pnpm dlx @objectstack/cli create my-app --template todoObjectStack is designed from the ground up to be authored, extended, and operated by AI agents alongside humans. Every primitive β objects, views, flows, formulas, permissions, i18n β is a small, declarative TypeScript file that an LLM can read, diff, and safely modify without breaking the runtime.
- Skill bundle for agents. The companion
objectstack-ai/frameworkships a set of authoring skills (objectstack-data,objectstack-query,objectstack-ui,objectstack-automation,objectstack-formula,objectstack-i18n,objectstack-api,objectstack-platform,objectstack-ai) that teach Copilot CLI / Claude Code / Cursor / Codex exactly how to write*.object.ts,*.view.ts,*.flow.ts, etc. β install once and every ObjectStack project on your machine becomes agent-ready. - Deterministic, diff-friendly metadata. Schema, UI, automation, and permissions all live in versioned source files β no opaque database state β so an agent's change is reviewable in a normal PR.
- First-class AI runtime.
@objectstack/aigives every object built-in embeddings, semantic search, RAG, agent tools, and MCP integration; flows can call LLMs as just another step. - 100% AI-built templates. Every template in this repo (todo, contracts, procurement, compliance, helpdesk, content, hr, project, β¦) was designed, scaffolded, and iterated end-to-end with AI agents driving the ObjectStack skill bundle β they are both useful starters and worked examples of what AI-driven product development on ObjectStack looks like in practice.
Install the skills (see below) and your agent can extend any of these templates β add an object, wire a flow, ship a new view β using the same conventions we used to build them.
| Template | Domain | Status | Port | Try it |
|---|---|---|---|---|
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/helpdesk/ |
AI-first customer support β auto-triage, suggested replies, KB recall, sentiment escalation | β v0 | 4006 | |
packages/content/ |
Content marketing engine β editorial calendar, competitive signals, channel ROI, 8-state piece lifecycle | β v0 | 4008 | |
packages/hr/ |
People Ops β employee directory, org chart, time-off approvals, document expiry alerts | β v0 | 4009 | |
packages/project/ |
AI Project Management β portfolio tracking with AI risk prediction, delay forecasting, resource conflict detection | π§ v0.1-wip | 4010 | |
packages/expense/ |
Employee expense & reimbursement β multi-line reports, category policy, amount-tiered approval, reimbursement tracking | β v0 | 4011 | |
packages/sales-pipeline/ |
Lite CRM (leads, opportunities, accounts) | π§ planned | 4007 | β |
StackBlitz tip: every template runs in the browser via
@objectstack/driver-sqlite-wasm(sql.js). Local dev still usesbetter-sqlite3(listed as an optional dependency) for full native speed.
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 = @objectlab/<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 @objectlab/todo dev # http://localhost:4002
pnpm typecheck
pnpm formatReset a template's local SQLite database:
rm -rf packages/todo/.objectstackIf you're working on this repo with an AI coding agent (Copilot CLI, Claude Code, Cursor, etc.), install the ObjectStack authoring skills globally so the agent picks up the framework conventions automatically:
npx skills add objectstack-ai/frameworkThis installs the objectstack-* skill bundle (data, query, ui, automation,
formula, i18n, api, platform, ai) into your user-level skills directory and
makes them available across every project on your machine.
- 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 β @objectlab/<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 @objectlab/<your-template> devPublishing is explicit β there's no auto-publish on push. Two ways
to trigger .github/workflows/publish.yml:
- Actions β Publish to marketplace β Run workflow (with optional
dry_runto inspect the payload first). - Create a GitHub Release with a tag like
todo-v0.2.0β the workflow narrows the publish to that template via the tag pattern.
Re-running is idempotent β the version endpoint returns 409 for any
(package, version) pair that already exists, so unchanged templates are
reported as skipped rather than failing.
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) |