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
├── migrations/
├── package.json
├── tsconfig.json
├── kysera.config.ts
└── .env.example
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
Turborepo monorepo structure:
my-app/
├── apps/
│ └── api/
├── packages/
│ ├── database/
│ └── shared/
├── turbo.json
└── pnpm-workspace.yaml
Available Plugins
Select during initialization:
timestamps- Automatic created_at/updated_atsoft-delete- Soft delete functionalityaudit- Audit loggingrls- 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
import { defineConfig } from '@kysera/cli'
export default defineConfig({
database: {
dialect: 'postgres',
host: process.env.DB_HOST || 'localhost',
port: parseInt(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',
tableName: 'kysera_migrations'
},
plugins: {
'@kysera/timestamps': { enabled: true },
'@kysera/soft-delete': { enabled: true }
}
})
.env.example
DB_HOST=localhost
DB_PORT=5432
DB_NAME=myapp
DB_USER=postgres
DB_PASSWORD=