1# roadmap
2
3zat started as a small set of string primitives for AT Protocol - the types everyone reimplements (`Tid`, `Did`, `Handle`, `Nsid`, `Rkey`, `AtUri`). the scope grew based on real usage.
4
5## history
6
7**initial scope** - string primitives with parsing and validation. the philosophy: primitives not frameworks, layered design, zig idioms, minimal scope.
8
9**what grew from usage:**
10- DID resolution was originally "out of scope" - real projects needed it, so `DidResolver` and `DidDocument` got added
11- XRPC client and JSON helpers - same story
12- JWT verification for service auth
13- handle resolution via HTTP well-known
14- handle resolution via DNS-over-HTTP (community contribution)
15- sync types for firehose consumption (`CommitAction`, `EventKind`, `AccountStatus`)
16
17this pattern - start minimal, expand based on real pain - continues.
18
19## now
20
21use zat in real projects. let usage drive what's next.
22
23the primitives are reasonably complete. what's missing will show up when people build things. until then, no speculative features.
24
25## maybe later
26
27these stay out of scope unless real demand emerges:
28
29- lexicon codegen - probably a separate project
30- higher-level clients/frameworks - too opinionated
31- token refresh/session management - app-specific
32- feed generator scaffolding - each feed is unique
33
34## non-goals
35
36zat is not trying to be:
37
38- a "one true SDK" that does everything
39- an opinionated app framework
40- a replacement for understanding the protocol