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:
sersi --helpPrint the installed version:
sersi --versionRunning 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.
sersi createFlags
| Flag | Description |
|---|---|
-n, --name <name> | Project name (skips the name step) |
-t, --type <type> | frontend or backend (skips the type step) |
Skip both early prompts:
sersi create -n my-app --type frontendFlow
- Name: validated so the target directory does not already exist
- Type: frontend or backend
- Framework options:
- Frontend: React / Vue / Svelte → TypeScript → style
- Backend: Go / Node / Python → framework (and for Node, TypeScript yes/no)
- CI (optional): GitHub, GitLab, or Bitbucket, with optional Docker
- 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.
sersi generateBy default, Sersi looks in the current directory for the first match of:
sersi.yamlsersi.ymlsersi.json
Override the path:
sersi generate --config ./configs/sersi.yamlFrontend example
version: 1
type: frontend
name: web
framework: react
typescript: true
style: tailwind
ci:
provider: github
docker: falseBackend example (Go)
version: 1
type: backend
name: api
language: go
framework: gin
ci:
provider: gitlab
docker: trueBackend example (Node + TypeScript)
version: 1
type: backend
name: api
language: node
framework: express
typescript: true
ci:
provider: github
docker: falseConfig fields
Shared:
| Field | Description |
|---|---|
version | Must be 1 |
type | frontend or backend |
name | Project directory name |
ci | Optional. { provider, docker }: provider is github, gitlab, or bitbucket |
Frontend: framework (react | vue | svelte), typescript, style (tailwind | css | bootstrap).
Backend:
| Field | Description |
|---|---|
language | go | node | python |
framework | Depends on language: gin/chi (Go), express/fastify (Node), fastapi (Python) |
typescript | Node only. Defaults to false. When true, emits .ts under src/ plus tsconfig.json |
database | Optional. Reserved (mongodb | postgresql | none); defaults to none |
Editor schema
JSON configs can point at the shipped schema for autocomplete:
{
"$schema": "./node_modules/@sersi-project/cli/sersi.schema.json",
"version": 1,
"type": "frontend",
"name": "web"
}YAML configs can use the language-server comment:
# yaml-language-server: $schema=./node_modules/@sersi-project/cli/sersi.schema.json
version: 1
type: backend
name: api
language: go
framework: ginRuntime validation is still handled by Zod when the CLI runs. The JSON Schema is for the editor experience.