Skip to content

Developer Guide

apps/api/ API Worker (Hono, D1, R2, Better Auth)
apps/admin/ Admin SPA (React, Vite), deployed as its own Worker
packages/database/ Drizzle schema, migrations
packages/contracts/ Shared Zod API contract (published to npm)
packages/create/ @kenresoft-cms/create CLI and its Astro templates
packages/plugin-sdk/ Internal plugin SDK
packages/plugin-*/ Bundled plugins (ecommerce, hello)
integrations/astro/ @kenresoft-cms/astro
examples/astro-site/ Large reference site (not a starter)
scripts/ setup, update and rename-worker CLIs
docs/ Design documents
wrangler.toml Root config for the API Worker
Terminal window
pnpm install
cp .dev.vars.example .dev.vars # set the local Better Auth secret
cp apps/admin/.env.example apps/admin/.env
pnpm --filter @kenresoft-cms/database migrate:local
pnpm dev
API: http://localhost:8787
Admin: http://localhost:5173

Run either alone with pnpm --filter @kenresoft-cms/api dev or pnpm --filter @kenresoft-cms/admin dev. .dev.vars overrides both [vars] and secrets during wrangler dev, which is where a local CORS_ORIGINS addition (for example a LAN address) belongs, never in the committed wrangler.toml.

A local install has no users. Create the Owner with the bootstrap and read the token from the wrangler dev terminal. With no email provider, verification links print there too.

Feature work goes on feature/* branches off develop. main is reserved for release promotion.

The repository’s docs/ folder (ARCHITECTURE.md, PLUGINS.md, SITE_BUILDER.md, DEPLOYMENT.md, ASTRO.md) holds the deeper design records, including per-phase implementation history. Treat the code as the source of truth where they differ.