SQLite is used only on the client side (desktop app). It prioritizes local usability, soft deletes, and storing server linkage material (uid and full API key) alongside logbook metadata.
Key differences vs Postgres (server)
Deletes
SQLite: soft deletes are supported via deleted_at on both logbook and qso.
Postgres: hard deletes with cascading from logbook to QSOs and API keys.
API keys
SQLite: the full API key (prefix.secretHex) may be stored on the logbook row for local use; there is no separate api_keys table client-side.
Postgres: only a hash (or HMAC) of the secretHex is stored in api_keys; full keys are never persisted.
Identifiers
Both use a sequential internal id per table.
uid is a server-issued opaque identifier on the logbook. In SQLite this field is optional (NULL until registration), with a unique index when present.