Create

The create command initializes a new Vela project. Signed in to velastack.dev, it also creates a project there and links the two, so vela deploy reports to it and a CMS-ready template reads from the project’s hosted CMS from the first build.

Syntax

$ vela create [path]
$ vela create my-project

This will create a directory called my-project with the new SvelteKit project. Anything not passed as an option is prompted for, so the command can be run bare and answered interactively.

Options

  • --template <type> - Template to scaffold, defaults to minimal
  • --name <name> - App name, written to src/lib/site.ts. A project with a backend also gets it as PocketBase’s application name, which its emails use.
  • --email <email> - Email of the PocketBase superuser
  • --password <password> - Password of the PocketBase superuser
  • --install <package-manager> - Install dependencies with the given package manager. One of npm, yarn, pnpm, pnpm-rush, bun, deno, nub or aube. Pass --no-install to skip installing.
  • --link <new|none|project-id> - Link the new project to velastack.dev: create a project there, skip, or use an existing project id. Defaults to creating one when you are logged in at a terminal.
  • --team <id> - The team a new velastack.dev project goes into, with --link new. Defaults to your personal team.
  • --cms <url> - Read content from a CMS at this URL instead of the linked project’s. Only for CMS-ready templates.

The velastack.dev project

Logged in at a terminal, vela create creates a project on velastack.dev named after the app, links the new directory to it in .vela/project.json and prints the project’s page. That is the same link vela link makes for an existing project: vela deploy reports to it, and a CMS-ready template gets the project’s hosted CMS written into src/lib/site.ts. Pass --link none to keep the project local, or --link <project-id> to attach it to a project you already have.

Logged out, a CMS-ready template asks where its content should come from: log in and create a project on the spot, paste the URL of a CMS you already have, or skip for now. Other templates ask nothing and note how to link later.

Off a terminal, such as in CI, nothing is created on velastack.dev unless a flag says so. Set VELA_API_KEY and pass --link new or --link <project-id>; a CMS-ready template scaffolded with neither prints a warning and runs on its fallback copy until cmsEndpoint is filled in.

$ vela create my-site --template hearth                # linked, CMS endpoint written into src/lib/site.ts
$ vela create my-site --template hearth --link none    # keep it local
$ VELA_API_KEY=… vela create my-site --template hearth --link new --no-install

Templates

Two starters ship with the CLI:

  • minimal - SvelteKit with a PocketBase backend, wired up and migrated. The default.
  • static - SvelteKit frontend only, prerendered with adapter-static. See Static Site Generator.

Themed templates are downloaded from the template registry on first use and cached under ~/.vela/templates. Each is a complete site built on one of the two starters. Blog templates are built on minimal, so everything below still applies (posts are Markdown files under src/lib/content/blog/):

  • broadsheet - Editorial newspaper blog: serif display type, kickers, ruled columns and a dated masthead.
  • confetti - Playful blog with rounded pill navigation, doodles and a raspberry-and-lemon palette.
  • folio - Typography-first blog set in one serif family, with hairline rules and a narrow reading column.
  • loudspeaker - Neobrutalist zine blog: thick borders, hard-offset shadows and one loud accent per mode.
  • penumbra - Dark-first cinematic blog with deep slate surfaces and a warm ember accent.
  • rebar - Raw monochrome blog with exposed structure: hairline borders, zero radius, zero shadow.
  • stdout - Developer log blog styled like a terminal: monospace display type and one green accent.

Business and restaurant templates are built on static and read their copy from a hosted CMS, so every page is editable in place from the admin bar:

  • blueline - Four-page engineering practice site drawn like a blueprint sheet: title block masthead, graph-paper grid and dimension lines.
  • letterhead - Four-page consultancy site with engraved serif headings and generous margins.
  • outpost - Four-page infrastructure monitoring site built like a live control room: status-bar masthead, uptime counter and a scrolling console log.
  • signet - Four-page private wealth and trust advisory site set like a sealed dossier: wax-seal emblem, ledger rules and referenced mandates.
  • waybill - Four-page freight forwarding site stamped like a loading dock: bill-of-lading masthead, hazard-stripe rules and manifest tables.
  • hearth - Three-page restaurant site built around the fire: hours, directions and a menu link, all editable from the CMS.

A CMS-ready template needs nothing beyond the link. Its src/lib/site.ts carries the cmsEndpoint vela create filled in; open any page with ?edit on the URL and sign in from the admin bar. Editors are managed on velastack.dev, under the project’s CMS. With no endpoint the site builds offline and shows the fallback copy written into its pages, and VELA_CMS_OFFLINE=1 builds that way on purpose when the CMS is out of reach. See vela enable cms for how the pieces fit.

Passing a name that is not available lists every template, grouped by category. When the registry cannot be reached, the built-in starters still work. Set VELA_TEMPLATE_INDEX_URL to point the CLI at a local checkout of the registry while developing a template.

--email and --password only apply to templates with a backend; passing them to the static template is an error.

Included Features

Out of the box, before enabling any modules, all Vela templates include these minimum features, which are deemed essential for a production-ready application:

  • Database connection
  • App metadata (app name, public URL) in src/lib/site.ts
  • Tailwind CSS full height grid layout
  • Error fallback page
  • Light/dark mode support
  • Server tests
  • Flash messages
  • Toast notifications