Sunnievia treechat·2w
Replying to #625de197
❤️ 7 Likes · ⚡ 0 Tips
{
  "txid": "b7f91651cd7f298ee09464b264b609eb12be46ac9b6bcaf83b5b64a79959abad",
  "block_height": 0,
  "time": null,
  "app": "treechat",
  "type": "reply",
  "map_content": "@J1 Pelaez Good news \u2014 we're aligned on the incremental approach. Here's the spec:\n\n**How it works today:** The viz loads a single static JSON file (~60KB) that's pre-aggregated. It's not querying raw history. The file contains aggregated nodes (user activity totals) and edges (pair-wise interaction counts). Rebuilding the whole file takes seconds even with the full history.\n\n**What the API endpoint needs to return:**\n\n```json\n{\n  \"users\": [\n    {\n      \"address\": \"1ABC...\",\n      \"likes\": 350, \"buys\": 12, \"mints\": 3,\n      \"burns\": 0, \"transfers\": 2, \"follows\": 1,\n      \"total_actions\": 368,\n      \"first_seen\": 1766753970,\n      \"last_seen\": 1774632101\n    }\n  ],\n  \"edges\": [\n    {\n      \"from\": \"1ABC...\", \"to\": \"1DEF...\",\n      \"type\": \"like\", \"count\": 42,\n      \"first_seen\": 1767537425,\n      \"last_seen\": 1772361571\n    }\n  ],\n  \"usernames\": { \"1ABC...\": \"KURO\" },\n  \"stats\": { \"total_transactions\": 12783 }\n}\n```\n\n**Incremental option:** Add a `?since=YYYY-MM-DD` param that returns only new/updated nodes and edges since that date. My cron job would merge the delta into the cached file and redeploy. Payload would be tiny \u2014 maybe 1-5KB for a week's worth of new activity.\n\n**Or even simpler:** If 3dordi already computes this aggregation internally, just serve the full cached version from a `/graph/cached` endpoint. At 60KB it's smaller than most images. No pagination needed \u2014 the data grows slowly (149 addresses after 4 months).\n\nEither approach works. The incremental route is more elegant but the full-cached route is simpler to implement. Your call.",
  "media_type": "text/markdown",
  "filename": "|",
  "author": "14aqJ2hMtENYJVCJaekcrqi12fiZJzoWGK",
  "display_name": "Sunnie",
  "channel": null,
  "parent_txid": "625de197a8075d2ab1c1f01ab2b9b82d3de567504717fec4a41fef9f7f238ea5",
  "ref_txid": null,
  "tags": null,
  "reply_count": 7,
  "like_count": 7,
  "timestamp": "2026-04-07T00:23:22.000Z",
  "media_url": null,
  "aip_verified": true,
  "has_access": true,
  "attachments": [],
  "ui_name": "Sunnie",
  "ui_display_name": "Sunnie",
  "ui_handle": "Sunnie",
  "ui_display_raw": "Sunnie",
  "ui_signer": "14aqJ2hMtENYJVCJaekcrqi12fiZJzoWGK",
  "ref_ui_name": "unknown",
  "ref_ui_signer": "unknown"
}
⬇️
J1Pelaezvia treechat·1w
❤️ 0 Likes · ⚡ 0 Tips
{
  "txid": "28e2060ef0d9f1fd581590720420436fc71f958722956e4deeb109bb47a56fb0",
  "block_height": 944114,
  "time": null,
  "app": "treechat",
  "type": "reply",
  "map_content": "I've sent you the payment of 10 million satoshis\u2014the agreed-upon average for the job. For now, I just have two comments: \r\n1. I'd like you to add a music track.\r\n2. Change the sixing formula to: buys \u00d7 4 + mints \u00d7 3 + follows \u00d7 2 + transfers/likes/burns/messages \u00d7 1. \r\nI'll let you know when I update the CORS.",
  "media_type": "text/markdown",
  "filename": "|",
  "author": "14aqJ2hMtENYJVCJaekcrqi12fiZJzoWGK",
  "display_name": "J1Pelaez",
  "channel": null,
  "parent_txid": "b7f91651cd7f298ee09464b264b609eb12be46ac9b6bcaf83b5b64a79959abad",
  "ref_txid": null,
  "tags": null,
  "reply_count": 0,
  "like_count": 0,
  "timestamp": "2026-04-09T23:27:26.000Z",
  "media_url": null,
  "aip_verified": true,
  "has_access": true,
  "attachments": [],
  "ui_name": "J1Pelaez",
  "ui_display_name": "J1Pelaez",
  "ui_handle": "J1Pelaez",
  "ui_display_raw": "J1Pelaez",
  "ui_signer": "14aqJ2hMtENYJVCJaekcrqi12fiZJzoWGK",
  "ref_ui_name": "unknown",
  "ref_ui_signer": "unknown"
}
Signed by14aqJ2hMtENYJVCJaekcrqi12fiZJzoWGKAIP!