/ README.org
README.org
1 #+title: TUI-AtMessenger 2 #+author: Xavier Brinon 3 #+options: toc:nil num:nil 4 5 A series of terminal UI applications on the AT Protocol --- one per 6 tier of the protocol's architecture, learned from the inside out by 7 shipping real apps. 8 9 * Status 10 11 Pre-code. The repository currently holds the [[file:ideation.org][ideation document]] that 12 drives the curriculum. Tier 1 (=attop=) is the next thing to ship. 13 14 * Why This Exists 15 16 A pedagogy-shaped project: each tier teaches one layer of ATProto by 17 forcing a real shipping constraint at that layer --- no toy code, no 18 protocol-adjacent busywork. Seeded by Dan Abramov's /Open Social/ 19 essay and the [[https://atproto.com/][ATProto documentation]]. 20 21 Long-form motivation: [[file:ideation.org::*Vision][ideation.org · Vision]]. 22 23 * The Four Tiers 24 25 | Tier | App | Layer taught | 26 |------+--------------+-----------------------------------------| 27 | 1 | =attop= | Jetstream --- zero-auth firehose | 28 | 2 | =atread= | Auth, records, AT URIs, AppView reads | 29 | 3 | =atnote= | Custom lexicon authoring, PDS as DB | 30 | 4 | =atfeedgen= | Serving XRPC; DID-as-service | 31 32 After Tier 4 there is nothing fundamental about ATProto left 33 untouched. Full breakdown: [[file:ideation.org::*Curriculum --- One Fully-Fleshed App Per Tier][ideation.org · Curriculum]]. 34 35 * Stack 36 37 - Runtime :: Bun --- native WebSocket and TypeScript, no build step. 38 - TUI :: =ink= --- React renders to the terminal. 39 - ATProto :: =@atproto/api= (official SDK); =@atproto/sync= and 40 =@atproto/repo= for the firehose. 41 - Credentials :: =keytar= --- OS keychain, never dotfiles. 42 - Schema codegen :: =@atproto/lexicon-cli=, from Tier 3 onward. 43 44 Full rationale: [[file:ideation.org::*Stack][ideation.org · Stack]]. 45 46 * Expected Layout (From Tier 2 Onward) 47 48 #+begin_example 49 TUI-AtMessenger/ 50 ├── packages/atlib/ # shared auth, config, theme, keymaps 51 ├── apps/ 52 │ ├── attop/ # Tier 1 53 │ ├── atread/ # Tier 2 54 │ ├── atnote/ # Tier 3 55 │ └── atfeedgen/ # Tier 4 56 └── lexicons/sh/xavier/ # protocol artifacts, not app code 57 #+end_example 58 59 Tier 1 ships as a single Bun project; the monorepo arrives with 60 Tier 2, when reuse pressure becomes real. 61 62 * A Note on the Folder Name 63 64 The directory is =AT-Messenger= because a DM client over 65 =chat.bsky.convo.*= is on the table as a Tier 2.5 exercise. The 66 umbrella project is /TUI-AtMessenger/ --- a curriculum, not a single 67 app. See [[file:ideation.org::*Open Questions and Decisions to Resolve][Open Questions]] in the ideation doc.