Skip to content

vk init

Terminal window
vk init [name] [options]
ArgumentDescription
nameProject name (lowercase, hyphens allowed). If omitted, you’ll be prompted.
OptionDescriptionDefault
-t, --template <template>Project templateapi
-y, --yesSkip interactive promptsfalse
--localLink local VentureKit packages (for development)false
TemplateDescriptionIncludes
apiREST API with authRoutes, health check, tasks CRUD
api+dbAPI with Postgres+ Initial SQL migration, @venturekit/data
api+queueAPI with SQS queue+ Queue consumer, src/queues/
api+storageAPI with S3 storage+ Upload endpoint, @venturekit/storage
fullstackEverythingDatabase + Storage + Queue
Terminal window
# Interactive (prompts for name and template)
vk init
# Named project with default template (api)
vk init my-app
# Specific template
vk init my-app --template api+db
# Non-interactive with defaults
vk init my-app --yes
# Use local VentureKit packages (for framework development)
vk init --local my-app
my-app/
├── config/
│ ├── base.ts # Project identity (name, region)
│ ├── security.ts # OAuth scopes and app clients
│ ├── dev.ts # Dev environment (free preset)
│ └── prod.ts # Production environment
├── src/
│ └── routes/
│ ├── health/get.ts # GET /health (public)
│ └── tasks/
│ ├── get.ts # GET /tasks (authenticated)
│ └── post.ts # POST /tasks (authenticated)
├── tests/
├── vk.config.ts
├── package.json
├── tsconfig.json
└── .gitignore
├── db/
│ └── migrations/
│ └── 0001_init.sql # Initial pure-SQL migration
└── src/
└── routes/...

Infrastructure: Postgres database pre-configured as a flat field on defineVenture() in vk.config.ts.

├── src/
│ ├── queues/
│ │ └── notifications.ts # Queue consumer handler
│ └── routes/...

Infrastructure: SQS queue with DLQ pre-configured.

├── src/
│ └── routes/
│ ├── uploads/
│ │ └── post.ts # POST /uploads (signed URL)
│ └── ...

Infrastructure: S3 bucket with CDN pre-configured.

Dependencies are installed automatically after scaffolding.

Project names must:

  • Start with a lowercase letter
  • Contain only lowercase letters, numbers, and hyphens ([a-z][a-z0-9-]*)
  • Be suitable for AWS resource naming

After creating the project:

Terminal window
cd my-app
vk dev