···2727|--------|------|-------|
2828| `did` | TEXT | Primary key |
2929| `handle` | TEXT | |
3030-| `display_name` | TEXT | Nullable |
3131-| `avatar_url` | TEXT | Nullable |
3230| `session_data` | TEXT | JSON blob — atproto SDK token/DPoP storage |
3331| `created_at` | INTEGER | |
3432| `updated_at` | INTEGER | |
3333+3434+Display name and avatar are resolved the same way as any other profile (via `tracked_profiles` / AppView lookup), not duplicated here.
35353636### New `auth_states` table (SQLite)
3737···7878### Header
79798080- Signed out: "Sign in" link in the top right (alongside search bar and dark mode toggle)
8181-- Signed in: user's avatar + handle linking to their own profile, plus "Sign out" button
8181+- Signed in: "My profile" link (goes to their own profile page) and "Sign out" button
82828383### Landing Page
8484