Applications
A CAD-as-code app for designing products
A Storybook app
Core modules
Module parameters
Modular part type dispatcher
Modular product type dispatcher
WebGL product renderer
User-facing code-as-CAD modeling interface
Modular part types
Modular product types
Utility libraries
Developer tools
Shared TypeScript configs
To get started, first we need to install nvm (or similar).
Then clone this git repo:
git clone https://github.com/villagekit/gridkitThen move inside, install Node, and install the project dependencies.
cd gridkit
nvm install
pnpm installNote: the engine consumes
@villagekit/ui(the standalone Village Kit component library) as a regular npm dependency. To work on@villagekit/uialongside the engine, install from inside the parentgridbeam.xyzrepo — its top-level pnpm workspace links the local./uicheckout into the engine's packages.
Now you can run any of the scripts below:
Start live development servers
pnpm run devBuild code
pnpm run buildLint code using Biome
pnpm run lintFormat code using Biome
pnpm run formatReleases are tag-driven. From a green main:
pnpm run version:bumpThis bumps every package's version (synced via lerna.json), commits, creates a
vX.Y.Z tag, and pushes both the commit and the tag. The
release-npm workflow then builds and
publishes all public @villagekit/* packages with provenance via npm OIDC
trusted publishing.
To preview what would publish without pushing, run pnpm run release:dry.
For each published @villagekit/* package, configure a Trusted Publisher on
npmjs.com (package page → Settings → Trusted Publishers → Add):
- Owner:
villagekit - Repository:
gridkit - Workflow filename:
release-npm.yml
Published packages:
@villagekit/design@villagekit/math@villagekit/parameters@villagekit/part@villagekit/part-fastener@villagekit/part-gridbeam@villagekit/part-gridpanel@villagekit/plugin-smart-fasteners@villagekit/product@villagekit/product-kit@villagekit/sandbox@villagekit/screenshot@villagekit/units
Until a Trusted Publisher is configured, that package's publish step fails with
an authentication error. Lerna publishes serially in dependency order, so an
unconfigured package leaves the release in a partial state — fix the config and
re-run the workflow (Actions tab → release-npm → Re-run jobs).
- Published JavaScript modules are in Node.js-compatible ESM-only format, due to dual package hazard
- See Pure ESM package