阿甘's avatar
阿甘
npub13zyg...2rce
聽從命運的安排
阿甘's avatar
gan 1 month ago
你是一名资深前端工程师,精通 TypeScript、Vue 3(Composition API)、 IndexedDB、本地缓存设计,以及 nostr 协议(nostr-tools)。 请直接生成一个“普通用户可用的读书 Reader App”, 底层基于 nostr,但所有 nostr 细节必须对用户隐藏。 【技术约束】 - 前端框架:Vue 3 + TypeScript - 使用 nostr-tools 连接公共 relay - 本地存储:IndexedDB(可使用 Dexie.js) - 不允许依赖中心化后端服务 - 不假设存在全网搜索能力 【nostr 数据约定】 - 书籍元信息:kind = 30023(ebook metadata) - tags: ["d", "book:xxx"], ["t", "ebook"] - content 包含:title, author_name?, cover? - 章节索引:kind = 30024 - tags: ["book", "book:xxx"], ["chapter", "1"] - 正文分段:kind = 30025 - 每个 event 约 1000 汉字 - tags: ["book", "book:xxx"], ["chapter", "1"], ["part", "1"] 【功能要求】 1. 首页(Library) - 展示已发现的书籍列表(封面 + 书名 + 作者) - 数据来源:本地 IndexedDB + nostr relay 补充 - 不要求用户登录 2. 搜索功能(新用户友好) - 搜索关键字:书名 / 作者名 - 搜索范围:本地已发现书库 - 使用模糊匹配(可使用 includes 或 fuse.js) 3. 阅读器(Reader) - 进入书籍后加载章节列表 - 阅读章节时按 part 顺序分段加载正文 - 支持滚动加载(infinite scroll) - 缺失段落时显示“内容暂不可用”提示 - 阅读内容自动缓存到 IndexedDB 4. 本地缓存策略(关键) - nostr 只作为同步来源 - 已加载的 Book / Chapter / Part 必须存入 IndexedDB - 下次优先从本地读取 5. 去中心化约束下的 UX - 不出现“加载失败”或错误弹窗 - 所有不确定性用文案提示,而不是报错 - 不暴露 pubkey、relay、event id 等术语 【输出要求】 - 给出项目文件结构 - 给出核心 TypeScript 数据模型 - 给出: - nostr 拉取逻辑示例 - IndexedDB(Dexie)schema 示例 - Reader 页面核心代码(Vue 组件) - 代码应是可运行级别,而不是伪代码 - 所有说明写成代码注释,不要长篇解释 请直接开始生成代码。
阿甘's avatar
gan 1 month ago
连新加坡都变天了😮
阿甘's avatar
gan 1 month ago
應對物價高漲,0歲到高中生一人補貼2萬 #大人當牛馬努力干吧 image
阿甘's avatar
gan 1 month ago
春夏秋冬睏🥱
阿甘's avatar
gan 1 month ago
昭和時代,這都不算性騷?😱
阿甘's avatar
gan 1 month ago
居酒屋很多客人都是老夫妻俩俩一起,有说有笑的聊天,我都好奇都这把年纪了怎么感情这么好😅
阿甘's avatar
gan 1 month ago
nostr还有什么可以发展的吗?我这脑容量的想法感觉就这样了😂