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.
kona new my-appkona new my-app --kit=apikona new my-app --kit=inertia --lang=javakona 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.
After scaffolding
Section titled “After scaffolding”cd my-app./grind serveOpen / for the welcome page and /api/health for JSON.
For Inertia frontends:
npm installnpm run dev # or npm run build./grind assets:viteArtifacts 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.
Kotlin and Java
Section titled “Kotlin and Java”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.