v0.22 · Paper MVP 5/20 项实现完成 · 2026-09-03

Popper App MVP

中文原生、低门槛的交易社交 App,首阶段重点验证海外华人用户。

Popper 第一版 MVP 架构

Paper-only;行情当前使用 D1 冻结快照;第 3-4 周计划内嵌 MostBox 私聊、群聊与文件附件

flowchart TB
    U["用户"] --> APP["iOS / Android / Web
Expo"] --> BFF["Popper Worker BFF
交易、行情与社交元数据"] BFF --> ACCOUNT["账户"] BFF --> TRADE["模拟交易"] BFF --> DATA["热门 / 曲线中 / 已毕业"] BFF --> SOCIAL["资产与社交"] ACCOUNT --> PRIVY_PAPER["Paper Privy App
Native / Web Client"] PRIVY_PAPER --> LOGIN["Email / Google
Apple 入口禁用"] TRADE --> SIM["Paper 环境
1,000 模拟 USDC · 模拟买卖"] SOCIAL --> FEATURES["计划:持仓 / PnL / Feed
主页 / 模拟跟买 / 好友 / 排行榜"] MARKETDB["Paper D1
冻结快照 · 模拟账本 · 关注 · 会话元数据"] --> BFF MOBULA["Mobula REST
当前无生产 API Key"] -.-> REFRESH["计划:Worker 共享刷新
Pulse 每 60 秒 · 持久化预算门禁"] REFRESH -.-> NORMALIZE["Normalizer + Admission Rules
标准化资产与交易准入"] NORMALIZE -.-> MARKETDB BFF -.->|计划:详情缓存未命中 / 模拟报价| REFRESH BFF -.-> SESSION["计划:MostBox session
HMAC uid · 新 key/nonce · no-store"] APP --> EMBED["Expo 内嵌 MostBox
Native WebView / Web iframe"] SESSION -.-> EMBED EMBED --> JOIN["pre.most.box
品牌化 join"] --> NODE["指定 MostBox 节点
消息与文件直连 · 不进 D1"] classDef entry fill:#eaf2ff,stroke:#3b6ea8,color:#18211b classDef channel fill:#edf4f2,stroke:#48766a,color:#18211b classDef core fill:#e4f3e8,stroke:#26734b,color:#18211b classDef capability fill:#fff2dd,stroke:#a8641e,color:#18211b classDef product fill:#edf4f2,stroke:#48766a,color:#18211b classDef external fill:#f1effa,stroke:#6754a3,color:#18211b class U entry class APP channel class BFF core class ACCOUNT,TRADE,DATA,SOCIAL,REFRESH,PRIVY_PAPER,SESSION capability class SIM,FEATURES,NORMALIZE,MARKETDB,EMBED product class LOGIN,MOBULA,JOIN,NODE external
flowchart TB
    MOBULA["Mobula REST · 当前无生产 API Key"] -.-> REFRESH["计划:60 秒共享快照 · 详情缓存 · 报价刷新 · 预算门禁"] -.-> D1["Paper D1 · 当前冻结快照"]
    D1 --> BFF["Popper Worker REST BFF"]
    BFF --> APP["iOS / Android / Web · Expo"] --> U["用户"]
    BFF --> CAPABILITIES["热门 · 曲线中 · 已毕业
模拟交易 · 资产与社交"] CAPABILITIES --> FEATURES["Paper Privy · Email / Google · DID 唯一账户 · 1,000 模拟 USDC
计划:持仓 / PnL / Feed / 主页 / 好友 / 排行榜"] BFF -.-> SESSION["MostBox session · HMAC uid · no-store"] -.-> EMBED["Expo 内嵌 · WebView / iframe"] APP --> EMBED --> JOIN["pre.most.box"] --> NODE["指定节点 · 消息 / 文件不进 D1"] classDef entry fill:#eaf2ff,stroke:#3b6ea8,color:#18211b classDef channel fill:#edf4f2,stroke:#48766a,color:#18211b classDef core fill:#e4f3e8,stroke:#26734b,color:#18211b classDef capability fill:#fff2dd,stroke:#a8641e,color:#18211b classDef product fill:#f1effa,stroke:#6754a3,color:#18211b classDef external fill:#f1effa,stroke:#6754a3,color:#18211b class U entry class APP channel class BFF core class CAPABILITIES,REFRESH,SESSION capability class FEATURES,D1,EMBED product class MOBULA,JOIN,NODE external

App 第一版 MVP 计划

前置条件

账号与权限

  • GitHub 组织、仓库写入与 CI 权限。
  • Expo Organization、EAS 项目及 Android / iOS 构建权限。
  • Cloudflare Workers、D1、DNS 成员权限及受限 API Token。
  • Paper 独立 Privy 管理主体 A、一个 App 与独立 Native/Web App Client;只开启 Email / Google,Apple 客户端入口禁用,关闭 Login Method Transfer 和钱包自动创建。
  • Apple 等待邓白氏编码和自有 App ID / Service ID / OAuth 凭证,当前控制面与客户端入口保持关闭。
  • Paper API、Web 两个生产 Origin 与本地 Origin 均登记到同一个 Paper App,不允许通配符 Preview 域名。

产品与内容资料

  • Bundle ID / Package 使用 popper.trade,Scheme 使用 popper;第一版业务环境固定为 paper。
  • Mainnet 只登记独立 Privy 管理主体 B 的归属与恢复责任,不创建 App 或运行时资源。
  • Popper Logo、App Icon、品牌色及相关素材使用权。
  • 首版行情固定为 Mobula + BSC 三视图,不维护人工 Token 名单。
  • Mobula 恢复前必须书面确认 REST 端点计费、硬额度和禁止 overage,并完成持久化预算门禁与自动降级;P0 不恢复 WebSocket。
  • MostBox 必须允许 popper.trade 与明确 localhost Origin 嵌入,并提供稳定节点 URL、可轮换 node_invite、附件限制和数据保留说明。
  • 6 个首发模拟交易账号的名称、头像、简介、历史模拟交易和交易理由。

设备环境

  • 已完成:可用的 Mac、Xcode 和 iOS Simulator 环境访问。
  • 已完成:Android 真机或 Pixel 级模拟器,以及稳定测试网络。

第一版包含

  • iOS / Android / Web Expo 客户端,Privy Email / Google 登录与账户绑定。
  • Mobula BSC 三视图、规则准入和实时契约曾实现;上游当前停用,仅保留 D1 最后快照。
  • 批准的 P0 恢复方向是 60 秒 REST 共享快照、详情 60 秒缓存与 15 秒模拟报价,不提供秒级行情。
  • 1,000 模拟 USDC、模拟买卖、模拟提现、持仓与 PnL。
  • 交易 Thesis、Global Feed、公开主页和逐笔模拟跟买。
  • 计划新增关注好友、24h / 7d / 30d 排行榜,以及 MostBox 文本/文件私聊与最多 20 人群聊。
  • 交易资金保持模拟盘;当前不提供交易钱包 UI、充值入口、真实资金、交易 RPC 或链上执行。

行情预算与预期

  • 10 DAU:基准 47,760 credits / 月,两倍容量 95,520;建议批准 US$70 / 月,使用 Start-up。
  • 1,000 DAU:基准 499,200 credits / 月,两倍容量 998,400;建议批准 US$450 / 月,使用 Growth。
  • 产品承诺:发现页约 60 秒更新、详情优先读 60 秒缓存、服务端报价 15 秒过期;不承诺秒级跳价、逐笔成交或订单簿。
  • 自动保护:Growth 累计 50 万告警、75 万停外部搜索、90 万只保留发现与报价、100 万本地硬停、125 万供应商硬停。
  • 实时选项:若业务必须要秒级 WebSocket,另立 P1 并按 US$800-1,000 / 月起重新询价。

口径按 30 天 DAU、2026-09-01 Mobula 公开价格和 Pulse 多视图一次调用 1 credit 的待确认假设计算;创建生产 Key 前必须取得供应商书面确认。

前后端双人四周交付节奏

前端工作 后端工作 前后端联调
第 1 周 · 前端完成 5/5 · 后端完成 5/5 · 联调完成 5/5

工程骨架、身份与 Launchpad 数据

  1. D1 验收完成。D1工程初始化建立 Expo、Worker、共享契约与核心包,跑通 Mobile 到 API 的健康检查。
  2. D2 验收完成。D2数据与认证底座创建干净 D1 Migration、Privy DID 唯一账户映射、Access Token 验证、市场 revision 与统一响应结构。
  3. D3 开发完成,上线验收待办。D3登录与首次开户已实现 Email / Google、会话恢复、凭证管理、唯一 用户名 和一次性 1,000 模拟 USDC;Apple 入口可见但始终禁用。生产控制面配置和三端真实认证验收仍是上线门禁。
  4. D4 验收完成。D4App 基础界面完成五栏导航、热门/曲线中/已毕业视图、状态组件和中文 i18n。
  5. D5 验收完成。D5历史实时行情接入曾完成 Mobula Gateway、Queue、D1 revision、Durable Object WebSocket、标准化资产与规则准入;链路现因成本保护停用,不进入 P0 恢复路径。

当前结论第 1 周在新增后端同事加入前已完成。历史链路曾通过真实 BSC 服务端验收;生产环境目前只展示冻结快照,下一次恢复采用 REST 共享快照与交易前刷新。

第 2 周 · 前端完成 5/5 · 后端完成 0/5 · 联调完成 0/5

行情恢复、模拟交易与 PnL

  1. D6 联合任务未完成,前端完成。D6REST 行情恢复前端已接入刷新、延迟、不可用和交易阻断状态。后端实现 60 秒共享快照、详情缓存、credits 账本和自动保护。联调用真实 Paper 数据核对 revision、准入原因码和降级恢复。
  2. D7 联合任务未完成,前端完成。D7交易领域与界面骨架前端已用会话 fixtures 完成买卖确认、费用和 PnL 面板。后端实现账本、成本、卖出、手续费、PnL 纯函数和契约。联调冻结十进制、舍入、费用和稳定错误码。
  3. D8 联合任务未完成,前端完成。D8报价与模拟成交前端已通过可替换 fixture client 处理 15 秒过期、余额不足和重复提交。后端实现 15 秒报价、幂等、并发控制和 D1 原子写入。联调验证请求 ID、并发提交和同一幂等键只成交一次。
  4. D9 联合任务未完成,前端完成。D9资产、提现与 PnL前端已完成 Portfolio、持仓、历史、模拟提现和 PnL 展示。后端完成持仓投影、账本重放、提现和资产接口。联调跑通买入、卖出、提现、重启后数据一致的完整流程。
  5. D10 联合任务未完成,前端完成。D10第 2 周冻结前端已补齐边界状态、无障碍标签、testID 和端侧回归。后端覆盖预算保护、准入、报价、并发和账本测试。联调三端 smoke 通过并冻结真实 schema 与错误映射。

当前结论前端 5/5 已完成,会话 fixtures 可走通买入、卖出与模拟提现;后端和联调仍为 0/5,每日联合任务均未完成,总体联合进度不增加。

第 3 周 · 前端完成 0/5 · 后端完成 0/5 · 联调完成 0/5

Feed、好友、排行榜与聊天基础

  1. D11 未完成。D11Feed 与公开主页前端完成 Feed、交易卡、Thesis 和公开主页状态。后端建立 6 个官方模拟种子账户、可重放交易和主页 API。联调核对真实种子交易、持仓、PnL 与 Thesis 追踪关系。
  2. D12 未完成。D12逐笔模拟跟买前端接入 Cursor、跟买确认和核心漏斗事件。后端完成 Feed 投影、Cursor 分页、追踪 ID 和事件接收。联调从 Feed 跟买后在 Portfolio 与 Feed 看到一致结果。
  3. D13 未完成。D13好友与排行榜前端实现好友/排行榜分段、三个窗口、关注和持仓图标。后端建立 follows、组合快照及好友/排行榜 schema 和 API。联调验证关注幂等、窗口切换、快照不足和账户隔离。
  4. D14 未完成。D14聊天契约与会话列表前端完成会话列表、聊天路由、私聊入口和 fixtures 状态。后端定义聊天 schema/错误码,建立会话成员 D1 和 API。联调验证重复私聊唯一、非成员拒绝和会话账户隔离。
  5. D15 未完成。D15MostBox 嵌入与私聊前端Native WebView/Web iframe 嵌入,桥只处理 ready、错误和未读。后端实现 HMAC uid、按次邀请、no-store session 和日志脱敏。联调两账户跨端完成私聊文本/文件收发和故障重试。

联合验收Global Feed 跟买、好友/排行榜和两账户 MostBox 私聊均使用真实 Paper 数据完成;交易、社交元数据与聊天内容的存储边界清楚可验证。

第 4 周 · 前端完成 0/5 · 后端完成 0/5 · 联调完成 0/5

群聊、回归、构建与新人验证

  1. D16 未完成。D16群聊与附件前端完成建群、重命名、加成员、退群和文件附件 UI。后端实现群资料、只追加成员、退群、20 人上限和权限校验。联调三账户完成群聊/文件;验证重复成员、非成员和第 21 人。
  2. D17 未完成。D17安全、隔离与降级前端处理账户切换、冷启动、Origin/导航拒绝和 Provider 故障。后端覆盖 session、非成员拒绝、Secret 轮换和敏感日志检查。联调验证三端身份一致、旧账户无泄漏、聊天故障不影响其他页面。
  3. D18 未完成。D18全量回归与三端构建前端完成无障碍、视觉、Maestro 和 Android/iOS/Web 构建配置。后端运行领域/API/契约回归,核对 migration、环境与部署门禁。联调同一提交生成三端构建并完成交易与聊天 smoke。
  4. D19 未完成。D19新人可用性测试前端准备无提示任务卡,观察至少 5 名新人并记录 UI 卡点。后端准备全新账户、稳定数据和可观测性,记录 API/数据错误。联调共同记录耗时、求助、退出位置、模拟盘理解与聊天失败。
  5. D20 未完成。D20验收与收口前端只修复前端 P0 阻塞,重跑三端交互、视觉与构建。后端只修复后端 P0 阻塞,重跑数据、API、安全与环境门禁。联调重跑交易、Feed、社交、聊天和账户切换全链路。

联合验收至少 4/5 用户在 3 分钟内独立完成交易闭环并理解模拟盘;社交/聊天验收全部通过。频道 ID 即权限,退群只停止新 session,不承诺安全撤权。

参考:fomo.family 当前架构

用于解释产品能力与外部依赖的调研参考,不代表 Popper 第一版的建设范围。

用户入口 fomo 产品层 产品能力 资金相关 第三方服务 / 公链 实线:已确认关系 虚线:仅观察到连接,用途未确认
flowchart LR
    U["用户"] --> APP["Web / iOS / Android"] --> FOMO["fomo"]

    FOMO --> ACCOUNT["账户与钱包"]
    FOMO --> TRADE["交易"]
    FOMO --> DATA["行情与图表"]
    FOMO --> SOCIAL["资产与社交"]
    FOMO --> SUPPORT["入金与税务"]

    ACCOUNT --> LOGIN["Apple / Google"]
    ACCOUNT --> PRIVY["Privy 嵌入式钱包"]
    PRIVY --> AA["ERC-4337 智能账户"]

    TRADE --> SPOT["现货 / 跨链"]
    TRADE --> PERPS["永续合约"]
    SPOT --> CHAINS["Solana / Base / BNB / Monad"]
    SPOT -.-> RELAY["Relay"]
    PERPS --> HL["Hyperliquid"]
    PERPS --> XYZ["Trade[XYZ]"]

    DATA --> TV["TradingView"]
    DATA -.-> MOBULA["Mobula"]

    SOCIAL --> FEATURES["持仓 / PnL / Feed
榜单 / 提醒 / 交易社群"] SUPPORT --> SERVICES["Coinbase Onramp / Awaken"] classDef money fill:#fdecea,stroke:#a84b47,color:#521f1d,stroke-width:2px class PRIVY,AA,TRADE,SPOT,PERPS,CHAINS,RELAY,HL,XYZ,SUPPORT,SERVICES money