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