/ 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.