Skip to main content

kysera init

Initialize a new Kysera project with interactive or command-line options.

Usage

kysera init [project-name]

Options

-t, --template <name> Project template (default: basic)
Options: basic, api, graphql, monorepo
-d, --database <dialect> Database dialect (default: postgres)
Options: postgres, mysql, sqlite
-p, --plugins <list> Comma-separated plugin names
Default: timestamps,soft-delete
--package-manager <pm> Package manager (npm/pnpm/yarn/bun)
--typescript Use TypeScript (default: true)
--no-typescript Use JavaScript
--git Initialize git repository (default: true)
--no-git Skip git initialization
--install Install dependencies (default: true)
--no-install Skip dependency installation

Templates

basic

Minimal setup with core packages:

my-app/
├── src/
│ ├── index.ts
│ ├── database.ts
│ └── repositories/
├── migrations/
├── tests/
├── package.json
├── tsconfig.json
├── kysera.config.ts
├── .env.example
├── .gitignore
├── README.md
└── SECURITY.md

api

Express.js REST API setup:

my-app/
├── src/
│ ├── index.ts
│ ├── routes/
│ ├── repositories/
│ └── middleware/
├── migrations/
└── ...

graphql

Apollo GraphQL server:

my-app/
├── src/
│ ├── index.ts
│ ├── schema/
│ ├── resolvers/
│ └── repositories/
└── ...

monorepo

Monorepo directory structure:

my-app/
├── apps/
│ ├── api/
│ └── worker/
├── packages/
│ ├── database/
│ ├── repositories/
│ └── schemas/
└── ...

Workspace tooling (e.g. turbo.json, pnpm-workspace.yaml) is not generated — add your preferred workspace manager afterwards.

Available Plugins

Select during initialization:

  • timestamps - Automatic created_at/updated_at
  • soft-delete - Soft delete functionality
  • audit - Audit logging
  • rls - Row-level security

Examples

Interactive Mode

kysera init my-app
# Prompts for all options

Non-Interactive

# API with PostgreSQL
kysera init my-app -d postgres -t api

# GraphQL with MySQL
kysera init my-app -d mysql -t graphql

# With specific plugins
kysera init my-app -p timestamps,audit,rls

# Current directory
kysera init . -d postgres

Generated Files

kysera.config.ts

export default {
database: {
dialect: 'postgres',
host: process.env.DB_HOST || 'localhost',
port: Number(process.env.DB_PORT) || 5432,
database: process.env.DB_NAME || 'myapp',
user: process.env.DB_USER || 'postgres',
password: process.env.DB_PASSWORD || ''
},
migrations: {
directory: './migrations'
},
plugins: {
timestamps: { enabled: true },
softDelete: { enabled: true }
}
}

Migration state is tracked in the default migrations table; set migrations.tableName only if you need a different one.

.env.example

# Database Configuration
DB_HOST=localhost
DB_PORT=5432
DB_NAME=myapp
DB_USER=postgres
DB_PASSWORD=

# Application
NODE_ENV=development
PORT=3000

Copy it to .env and fill in DB_PASSWORD — the CLI loads .env from the working directory automatically (without overriding variables already set in the environment).