Onboarding Guide (KanbanAI)
Last updated: 2025-11-22Purpose
First‑run flow that captures the user’s preferences and connects GitHub before entering the workspace. The flow only shows when no onboarding record exists in the local database.User experience (client)
Route:/onboarding
Steps:
- Welcome
- General preferences (theme, language, telemetry, notifications, auto-start agent on In Progress)
- Editor + Git defaults (default editor, git name/email, branch template)
- GitHub templates + OAuth app credentials (PR title/body templates, autolink tickets, GitHub client ID + secret)
- Connect GitHub (device flow; shows device code, opens GitHub verification link)
- Finish (summary and link into the app)
AppusesRequireOnboardingCompleteto redirect pending users to/onboarding.- After completion, users land on
/and can revisit settings at/settings.
GithubAppCredentialsFields component for OAuth keys.
Backend
Tables (SQLite):onboarding_state(idsingleton,status,last_step,completed_at, timestamps)github_app_configs(idsingleton,client_id,client_secret, timestamps)
onboardingService(get, record progress, complete)githubReponow handles GitHub app config (upsert/read) in addition to connection tokens.
- Uses stored client ID/secret first; falls back to
GITHUB_CLIENT_ID/GITHUB_CLIENT_SECRETenv vars.
API surface
GET /api/v1/onboarding/status→{status}PATCH /api/v1/onboarding/progressbody{step?: string}POST /api/v1/onboarding/completebody{step?: string}GET /api/v1/auth/github/app→ GitHub app config (sourcedb|env|unset,hasClientSecret)PUT /api/v1/auth/github/appbody{clientId: string, clientSecret?: string|null}- Existing GitHub device endpoints unchanged:
/auth/github/device/start,/auth/github/device/poll,/auth/github/check
Data flow & caching
- React Query keys:
- Onboarding status:
['onboarding','status'] - GitHub app config:
['github','app-config']
- Onboarding status:
- Progress recorded when step changes; completion marks onboarding state as
completed.
Migration
- The onboarding and GitHub App tables are created via the Drizzle migration chain under
server/drizzle/*.sql. - The dev server and binaries auto-run migrations; ensure they have executed before testing the flow.
Developing / testing
- Run server & client:
bun run dev(monorepo) orbun run dev:server+bun run dev:client. - Clear onboarding (optional): delete the
onboarding_staterow from your SQLite file (defaults to~/.local/share/kanbanai/kanban-dev.dbwhen runningbun run dev;bun run prodand binaries still targetkanban.db). If you overrideDATABASE_URLorKANBANAI_DEV_DATABASE_URL, clear the path you configured instead. - Walk through
/onboarding, provide GitHub client ID/secret, connect via device flow, then confirm redirect to projects.
Notes
- Secrets are stored locally; no remote storage.
- GitHub connection can also be initiated later from sidebar GitHub box or Settings.***
- Auto-start agent on In Progress defaults to off; onboarding surfaces the toggle so teams can opt into automatic attempt creation when moving cards from Backlog to In Progress.
Next steps: Mission Control
After onboarding completes, most users land on the projects view and quickly move to the dashboard:- Open Dashboard → Mission Control to see KPIs, live agent activity, Inbox items, project health, and system status for your workspace.
- For a walkthrough of each panel and the global time range selector, see the Mission Control dashboard guide.
- For an overview of the application layout, including the collapsible sidebar and navigation, see the UI layout & navigation guide.