create-elytra
v0.0.85
Published
Project initializer for Elytra CMS.
Readme
create-elytra
Scaffold a new Elytra project — the code-first web CMS with a native visual page builder.
npm create elytra@latest my-site
# or: pnpm create elytra my-siteThis generates a pnpm workspace with a visual studio (Vite + TanStack Start)
and a delivery frontend (Next.js App Router) over one canonical project
graph. It starts in playground mode — in-memory, seeded, no signup — so you
can edit immediately, then connect a Convex deployment when you're ready
(CONNECT.md in the generated project).
Usage
npm create elytra@latest [directory] [options]
Options:
--name <name> Project name (default: derived from the directory)
--mode <mode> playground (default) | connected
--playground Start in in-memory playground mode (no signup)
--connected Scaffold wired for a Convex deployment (you provision it)
--locale <code> Content locale (en, de, en-GB, …). Asked for interactively,
REQUIRED otherwise; "de" also ships German studio labels
-y, --yes Accept defaults, skip prompts (then --locale is required)The locale is a choice, not a default
An interactive run asks for the content locale, and a non-interactive one
requires --locale. Nothing invents one, because it is not a display
setting: defaultLocale is the literal key your content is stored under
(localized: { de: { title: '…' } }). Adding a locale later is additive —
locales: ['de', 'en'], existing content keeps its key — but changing the
default re-keys every localized document, which is a data migration, not a
config edit.
Non-interactive (agents, CI) — the -- is npm's own convention for separating
its flags from the invoked package's; it's required through npm create but
not when running the bin directly (npx, pnpm dlx, a local install) —
either way works, since a leading -- is accepted and ignored:
npm create elytra@latest my-site -- -y --name "My Site" --locale en
# direct bin — no `--` needed (but harmless if you include it):
npx create-elytra@latest my-site -y --name "My Site" --locale enWithout --locale, a run that cannot ask (-y, CI=1, or no terminal) fails
and writes nothing.
What you get
my-site/
├── elytra.config.ts # project config-as-code
├── cms/ # collections, routes, redirects (your content model)
├── components/ # your page-builder components
├── studio/ # the visual builder
└── frontend/ # the delivery siteThen:
cd my-site
pnpm install
pnpm --filter studio dev # edit immediately, no signup
pnpm --filter frontend dev # the delivery site