Setup wizard
The first time someone opens SeeKi, the wizard takes over. No terminal, no config file, no DSN pasted into a hidden field. Four steps, one at a time — connect, pick tables, brand, confirm. When they finish, SeeKi writes a seeki.toml, drops the wizard, and shows the grid.
The four steps
The wizard on step 3. Completed dots are solid; the current step has the accent ring; future steps stay muted.
Step 1 — Connect your database
The user can either paste a URL (postgres://user:pw@host:5432/db) or fill the six fields below: host, port, database, user, password, and an optional SSH tunnel. SSH exposes its own block only when the box is ticked — closed by default so it doesn’t intimidate anyone who doesn’t need it.
Connection fields come from SetupStep1Connection.svelte. “Test & continue” rejects bad credentials in place — the wizard never advances with a connection it can’t actually open.
Step 2 — Choose tables
The backend introspects the schema and returns every table. The user ticks the ones operations should see. This is the whitelist — everything else is invisible, forever. The row count is shown next to each table so people can sanity-check which ones matter.
The operator checks the three tables they actually work with. Migrations tables and raw audit logs stay off — they’d only be noise in the grid.
Step 3 — Brand your app
Two text fields: title and subtitle. This becomes the wordmark in the topbar and the browser tab. It is the only part of SeeKi that looks like the customer’s product — everything else stays neutral, so the data stays the hero. See Branding for where those strings end up.
Step 4 — Confirm & save
A read-only summary of every decision. If anything is wrong, the user clicks a step dot to jump back. Clicking “Save & launch” writes seeki.toml to the platform config dir and reloads the page into the grid.
What it writes
The wizard is a form for one file. Here is the output for the run above:
# seeki.toml — written by the setup wizard
[connection]
url = "postgres://ops:${SEEKI_DB_PASSWORD}@db.internal:5432/fleet"
[branding]
title = "Fleet Ops"
subtitle = "My Database"
[[tables]]
name = "vehicles"
[[tables]]
name = "journeys"
[[tables]]
name = "drivers"
Re-running the wizard
Delete or rename seeki.toml and the wizard appears again on next launch. SeeKi never overwrites an existing config silently.
Related
- Connections — URL vs field mode, SSH tunnel flags.
- Config reference — every key in
seeki.toml. - Branding — what step 3 actually changes.