### ATProto Lexicons ATProto lexicons use JSON with NSID identifiers. The lexicon format includes `lexicon`, `id`, `defs`, and record/query/procedure types. Custom lexicons are stored as JSON and embedded via `include_str!`. Domain: `livtet.app` (user owns this domain). Not a full PDS implementation—just a minimal lexicon server. **`app.livtet.work`** - Work record (literary work like "Frankenstein"): ```json { "lexicon": 1, "id": "app.livtet.work", "defs": { "main": { "type": "record", "description": "A literary work tracked by Livtet.", "key": "tid", "record": { "type": "object", "required": ["name", "language", "datePublished"], "properties": { "name": { "type": "string", "description": "Title of the work" }, "language": { "type": "string", "description": "ISO 639-1 language code" }, "datePublished": { "type": "string", "format": "datetime" }, "description": { "type": "string" }, "series": { "type": "ref", "ref": "app.livtet.defs#seriesRef" }, "identifiers": { "type": "array", "items": { "type": "ref", "ref": "app.livtet.defs#identifier" } } } } } } } ``` **`app.livtet.edition`** - Edition record (specific form of a work): ```json { "lexicon": 1, "id": "app.livtet.edition", "defs": { "main": { "type": "record", "description": "A specific edition of a work.", "key": "tid", "record": { "type": "object", "required": ["work", "format"], "properties": { "work": { "type": "ref", "ref": "com.atproto.repo.strongRef" }, "format": { "type": "union", "refs": ["app.livtet.defs#physicalFormat", "app.livtet.defs#virtualFormat", "app.livtet.defs#audiobookFormat"] }, "datePublished": { "type": "string", "format": "datetime" }, "seriesIndex": { "type": "integer" }, "url": { "type": "string", "format": "uri" }, "identifiers": { "type": "array", "items": { "type": "ref", "ref": "app.livtet.defs#identifier" } } } } } } } ``` **`app.livtet.readProgress`** - Reading progress record: ```json { "lexicon": 1, "id": "app.livtet.readProgress", "defs": { "main": { "type": "record", "description": "Reading progress for a specific edition.", "key": "tid", "record": { "type": "object", "required": ["edition", "progress", "updatedAt"], "properties": { "edition": { "type": "ref", "ref": "com.atproto.repo.strongRef" }, "progress": { "type": "integer", "minimum": 0, "maximum": 100 }, "lastPosition": { "type": "string" }, "updatedAt": { "type": "string", "format": "datetime" }, "highlights": { "type": "array", "items": { "type": "ref", "ref": "#highlight" } } } } }, "highlight": { "type": "object", "properties": { "text": { "type": "string" }, "location": { "type": "string" }, "note": { "type": "string" }, "createdAt": { "type": "string", "format": "datetime" } } } } } ``` Supporting definitions in `app.livtet.defs`: - `seriesRef`: `{ seriesId: string }` - `identifier`: `{ type: string, value: string }` (e.g., `{"type": "isbn", "value": "978-0-123456-78-9"}`) - `physicalFormat`: `{ pages: integer }` - `virtualFormat`: `{ size: integer }` (bytes) - `audiobookFormat`: `{ duration: integer }` (seconds)