{"id":"ad3e3fb6a7f0fa29f3e26810fb6ba61056e25df807a2eb76b82dc1040176165d","pubkey":"a16eff15afde83f9265b9fb3e37c80b89e8ccc14127461641eb9b0f408ba4a06","created_at":1783194635,"kind":30817,"tags":[["d","weightline"],["title","WeightLine"],["alt","Nostr Implementation Possibility: WeightLine"],["client","NostrHub"]],"content":"# WeightLine Custom Event Kinds\n\n## Kind 8907 — Weight Measurement Entry\n\nA single weight reading, either recorded manually or synced from a Bluetooth scale.\n\n**Kind**: 8907 (regular — stored permanently, append-only log)\n\n### Tags\n\n| Tag | Description |\n|-----|-------------|\n| `weight` | Weight value in kg (float string) |\n| `unit` | Unit of measurement: `kg` or `lbs` |\n| `category` | Category `d` identifier (e.g. `base`, `overeating`, `fasting`, or user-defined) |\n| `source` | `manual` or `bluetooth` |\n| `device` | Bluetooth device name (optional) |\n| `alt` | Human-readable description (NIP-31) |\n\n### Example\n\n```json\n{\n  \"kind\": 8907,\n  \"content\": \"\",\n  \"tags\": [\n    [\"weight\", \"82.4\"],\n    [\"unit\", \"kg\"],\n    [\"category\", \"base\"],\n    [\"source\", \"bluetooth\"],\n    [\"device\", \"Xiaomi Mi Scale 2\"],\n    [\"alt\", \"Weight measurement: 82.4kg\"]\n  ]\n}\n```\n\n---\n\n## Kind 34897 — Weight Category Definition\n\nDefines a named category for weight tracking lines on the graph. Built-in categories (base, overeating, fasting) are seeded by the app but can be overridden.\n\n**Kind**: 34897 (addressable — identified by `pubkey+kind+d`, only latest per combo stored)\n\n### Tags\n\n| Tag | Description |\n|-----|-------------|\n| `d` | Unique category identifier (slug, e.g. `base`, `overeating`, `fasting`, `custom-1`) |\n| `name` | Display name |\n| `color` | CSS color string (e.g. `#000000`, `#ef4444`, `#22c55e`) |\n| `description` | Short description of what this category means (optional) |\n| `builtin` | `true` if this is a built-in category |\n| `alt` | Human-readable description (NIP-31) |\n\n### Example\n\n```json\n{\n  \"kind\": 34897,\n  \"content\": \"\",\n  \"tags\": [\n    [\"d\", \"overeating\"],\n    [\"name\", \"Overeating Day\"],\n    [\"color\", \"#ef4444\"],\n    [\"description\", \"Days when caloric intake was significantly above normal\"],\n    [\"builtin\", \"true\"],\n    [\"alt\", \"Weight category: Overeating Day\"]\n  ]\n}\n```\n\n---\n\n## Kind 35939 — Timeline Bracket\n\nMarks a date range on the weight graph timeline with a label (e.g. \"Holiday\", \"Keto Diet\", \"Marathon Training\").\n\n**Kind**: 35939 (addressable — identified by `pubkey+kind+d`, only latest per combo stored)\n\n### Tags\n\n| Tag | Description |\n|-----|-------------|\n| `d` | Unique bracket identifier (UUID or slug) |\n| `name` | Display name / label |\n| `color` | CSS color string for the bracket band |\n| `start` | Start date as ISO 8601 date string (YYYY-MM-DD) |\n| `end` | End date as ISO 8601 date string (YYYY-MM-DD), or omitted if ongoing |\n| `icon` | Emoji or icon code (optional) |\n| `alt` | Human-readable description (NIP-31) |\n\n### Example\n\n```json\n{\n  \"kind\": 35939,\n  \"content\": \"\",\n  \"tags\": [\n    [\"d\", \"bracket-christmas-2025\"],\n    [\"name\", \"Christmas Holidays\"],\n    [\"color\", \"#f59e0b\"],\n    [\"start\", \"2025-12-20\"],\n    [\"end\", \"2026-01-05\"],\n    [\"icon\", \"🎄\"],\n    [\"alt\", \"Timeline bracket: Christmas Holidays (2025-12-20 to 2026-01-05)\"]\n  ]\n}\n```","sig":"0a716c523bb8af2630d35a75510ef15d4f9476e54ec379aca5a7d83b714398f0ec54cadc53254b03d90a944def344751b360151544d9782d11dea4a35bbf9dea"}