Skip to content

Commands

Sersi exposes a small CLI surface: an interactive wizard, a config-driven generator, and the usual help/version flags.

Global

Show help for every command:

bash
sersi --help

Print the installed version:

bash
sersi --version

Running sersi with no arguments also prints help.

sersi create

Interactive scaffolding. Walks you through project name, type, framework options, then an optional CI/CD step, and finishes with a summary of what was created.

bash
sersi create

Flags

FlagDescription
-n, --name <name>Project name (skips the name step)
-t, --type <type>frontend or backend (skips the type step)

Skip both early prompts:

bash
sersi create -n my-app --type frontend

Flow

  1. Name: validated so the target directory does not already exist
  2. Type: frontend or backend
  3. Framework options:
    • Frontend: React / Vue / Svelte → TypeScript → style
    • Backend: Go / Node / Python → framework (and for Node, TypeScript yes/no)
  4. CI (optional): GitHub, GitLab, or Bitbucket, with optional Docker
  5. Create: writes the project (and CI files if chosen) once, then shows a success summary

sersi generate

Non-interactive scaffolding from a declarative config file. Intended for CI scripts and repeatable setups.

bash
sersi generate

By default, Sersi looks in the current directory for the first match of:

  • sersi.yaml
  • sersi.yml
  • sersi.json

Override the path:

bash
sersi generate --config ./configs/sersi.yaml

Frontend example

yaml
version: 1
type: frontend
name: web
framework: react
typescript: true
style: tailwind
ci:
  provider: github
  docker: false

Backend example (Go)

yaml
version: 1
type: backend
name: api
language: go
framework: gin
ci:
  provider: gitlab
  docker: true

Backend example (Node + TypeScript)

yaml
version: 1
type: backend
name: api
language: node
framework: express
typescript: true
ci:
  provider: github
  docker: false

Config fields

Shared:

FieldDescription
versionMust be 1
typefrontend or backend
nameProject directory name
ciOptional. { provider, docker }: provider is github, gitlab, or bitbucket

Frontend: framework (react | vue | svelte), typescript, style (tailwind | css | bootstrap).

Backend:

FieldDescription
languagego | node | python
frameworkDepends on language: gin/chi (Go), express/fastify (Node), fastapi (Python)
typescriptNode only. Defaults to false. When true, emits .ts under src/ plus tsconfig.json
databaseOptional. Reserved (mongodb | postgresql | none); defaults to none

Editor schema

JSON configs can point at the shipped schema for autocomplete:

json
{
  "$schema": "./node_modules/@sersi-project/cli/sersi.schema.json",
  "version": 1,
  "type": "frontend",
  "name": "web"
}

YAML configs can use the language-server comment:

yaml
# yaml-language-server: $schema=./node_modules/@sersi-project/cli/sersi.schema.json
version: 1
type: backend
name: api
language: go
framework: gin

Runtime validation is still handled by Zod when the CLI runs. The JSON Schema is for the editor experience.