Skip to content
Kona

Starter kits

kona new scaffolds a Gradle app with a local ./grind CLI. The default kit is web. Use --kit (alias --preset) to pick another shape.

Terminal window
kona new my-app
kona new my-app --kit=api
kona new my-app --kit=inertia --lang=java
kona new my-app --kit=brew
Kit Dependencies What you get
web (default) HTTP + grind + extract/redis/session/auth/queue/schedule/mail + crema Welcome view, WelcomeController, / route, JSON /api/health, session/CSRF
crema same as web Alias of web (kept for older docs/scripts)
api without Crema Plain-text / welcome + JSON health (no view engine)
inertia + kona-inertia (external repo) Inertia middleware, root shell, Vite stubs, example page props
brew + kona-brew (external repo) Reactive Todos demo on / plus sample Counter (wire:*, /brew/update)

Every kit registers Cadence, Redis, Session, Auth, Queue, Schedule, and Mail providers; generates APP_KEY in .env; ships config/Session (cookie driver) among the executable config modules; and applies StartSession + CSRF (except /api/* and /brew/*) in bootstrap.Middleware.

Terminal window
cd my-app
./grind serve

Open / for the welcome page and /api/health for JSON.

For Inertia frontends:

Terminal window
npm install
npm run dev # or npm run build
./grind assets:vite

Artifacts resolve from mavenLocal() then Maven Central. The curl / --local installer publishes core org.konaframework jars and, when a sister checkout is available, also publishes kona-brew and kona-inertia (sibling ../kona-brew / ../kona-inertia, KONA_BREW_SRC / KONA_INERTIA_SRC, or a clone under ~/.kona-brew / ~/.kona-inertia). You can still publish by hand: ./gradlew :kona-brew:publishToMavenLocal from kona-brew, and likewise for kona-inertia. Set KONA_HOME / -Pkona.home only for a composite build against a current Kona checkout (not an API-stale ~/.kona that still vendors modules/brew). Full guides: Brew documentation, Inertia documentation.

Every kit has Kotlin and Java skeletons (--lang=kotlin|java). Controllers, providers, and routes match the language you choose; shared assets (views, package.json) are language-neutral.