TITIP-002 User and identity

Status Accepted
Version 0.1
Stage 0 — Authority

Purpose

Define the owner account: who may create one, how they sign in for the prototype and the functional MVP, and what the account is not.

Decisions

  1. The owner is the only person who can create vaults, assign recipients, and edit life-check policy. Trusted contacts and recipients have separate portals and separate credentials. They do not share the owner session.
  2. Prototype authentication may be simulated (a named demo user is enough for UC-01), but the contract is the same account the MVP will persist.
  3. Functional MVP authentication must support email, one-time passcode, and server-side sessions. Passkeys may be offered and must not block the MVP if absent.
  4. Account recovery is a threat-model problem, not a convenience feature. Production recovery must be designed in plans/production-readiness.md before it ships. The prototype must not invent a recovery flow that emails vault contents or backup codes stored in Titip.
  5. There is one owner per account in the prototype. Family collaboration (several owners editing one plan) is out of scope until a later spec.

Owner profile

The profile holds the name the product uses in invitations (“Iman menunjuk Anda…”). It must not hold secrets.

Minimum fields are in contracts/schemas/user.schema.json.

Onboarding

The owner-facing order is fixed for the prototype so app and web do not invent different products:

Welcome
  → Create account
  → Security setup
  → Who matters?
  → Trusted contacts
  → Things I want to titipkan
  → Vaults
  → Life check
  → Release rules
  → Review
  → Active

Security setup in the prototype explains what Titip will not store. It does not collect a password vault. Device biometrics, encrypted local cache, and recovery codes are post-prototype.

Session rules

Out of scope

Acceptance