# Review Scope

This pack is designed to make two things easy to inspect:

- how the current Hasher client works end to end
- how the messaging trust model keeps readable message content on the client side

## Core questions

- How does the client boot, configure itself, and route into the main app flows?
- How are credentials prepared before sign-in and how is protected local state managed after authentication?
- Where are device keys, signed prekeys, one-time prekeys, ratchet state, and sender keys created or rotated?
- How do chats, groups, calls, recovery, privacy tools, subscriptions, media, and profile customization connect back into the same client package?
- Which server reference files show what the relay receives and stores for encrypted messaging?

## Review areas inside this pack

- Flutter app startup, routing, screens, widgets, services, and data models
- local encrypted storage, key handling, prekeys, ratchets, sender keys, and message ingest
- direct messages, groups, calls, notifications, stickers, avatars, stylized cards, recovery, privacy tools, and store-connected flows
- developer and VIP-related client capabilities that ship in the current app package
- server reference models and routers that show device public keys, prekeys, direct-message ciphertext, per-device message keys, and encrypted group payloads

## Suggested reading lens

Start with the docs, then follow the app from `client_app/lib/main.dart` into `app_config.dart`, `api_service.dart`, the auth and crypto services, the main chat surfaces, and finally the server reference files that store or relay the encrypted payloads.
