Specter is a TypeScript framework for vertically sliced event-sourced applications.
This repository is a pnpm workspace:
packages/core/ @specter-ts/core framework/runtime package
packages/create-specter/ create-specter initializer CLI
apps/reference/ Todo Reference application used as the starter template
apps/booking-reference/ Meeting-room booking Reference applicationThe published command is:
npm create specter@latest my-appUse the explicit @latest tag in automation so npm does not reuse a stale cached initializer. The initializer also accepts --install after -- to run npm install:
npm create specter@latest my-app -- --installLocal verification can point generated apps at a packed or workspace core build:
SPECTER_CORE_SPEC=file:/absolute/path/to/packages/core node packages/create-specter/dist/index.js my-apppnpm install
pnpm build
pnpm typecheck
pnpm test
pnpm dev
pnpm dev:bookingThe dev and preview servers use the fixed port 41731.
Workspace apps resolve @specter-ts/core, @specter-ts/core/client, and @specter-ts/core/testing to local source through tsconfig.base.json, so app tests do not require a prebuilt packages/core/dist.
Slices are created with a stable name and a human-readable description:
createCommandSlice("addTodo", "Adds a todo to the list.");Every scenario also has a description. testScenarios uses slice descriptions for suite names and scenario descriptions for test names.
pnpm release:dry-run
pnpm release:publishrelease:publish verifies npm auth, runs typecheck/tests/build, then publishes @specter-ts/core before create-specter.