[🛠] Secret Messenger 开发日志 #1:Flutter Web + Node(Vibe Coding Test)
✨ GPT 摘要
完成了面向中国境内脱北者的安全中心型 Messenger 的技术架构与安全设计,并写下基于 Flutter Web + Node 的 MVP 开发计划的一天。
🧮 Secret Messenger
这是一个为在中国境内没有身份证明、无法正常生活的脱北者用户准备的 Messenger。
- 📱 无需安装,可通过浏览器访问
- 💬 可接收信息、进行秘密对话、分享文件
- 🛡️ 基于 Flutter Web 的安全中心型沟通工具
本项目不是出于政治目的,而是为了保护人权与支持生存所做的技术实验, 不以公开发布或商业使用为前提。 (🔒 仅以 GitHub Private Repo 管理。)
📌 项目概览
| 项目 | 内容 |
|---|---|
| 用户 | 数字素养很低、手机受到公安监控的中国境内脱北者 |
| 目标 | 信息分享、秘密聊天、安全文件分享 |
| 形态 | 无需安装、基于浏览器的 Flutter Web SPA |
| 域名 | https://???.net (伪装成计算器 UI) |
| UI 伪装策略 | 首屏看起来像计算器 → 输入特定运算时向服务器发送进入请求 |
| 进入方式 | Flutter Web 将进入密钥 POST 到服务器,由服务器判断后签发访问 token |
| 代码安全策略 | 敏感条件/逻辑不包含在客户端,全部由服务器侧判断 |
| 功能优先级 | ① 信息接收 → ② 聊天 → ③ 文件分享 |
🧪 Vibe Coding 实验项目
同时,这个项目也是一个用于实验 Vibe Coding 这种开发方式的 实际适用性与局限性的 MVP。
- 通过自然语言推进设计与实现,大部分代码生成由 AI 协助完成。
- 用户不是直接编写实际代码,而是承担“设计者/协调者”的角色。
- 目标是在现实中评估 AI 主导开发的效率与风险因素。
通过这次实验,探索未来的 AI 基础开发方式, 并验证它是否能达到可应用于实际人权项目的水平。
⚙️ 技术栈
🔷 前端(Flutter Web)
-
Flutter 3.x(Web build) -
Material 3(适合伪装成计算器 UI) -
go_router(页面切换与隐藏进入流程) -
Riverpod(状态管理:UUID、session 等) -
http(REST API 通信)
🔍 UI 策略
- 初始画面:计算器形态的
TextField + 按钮网格 - 输入特定运算 → 发送到服务器 → 有效时允许进入内部
- 客户端不包含进入 trigger 或逻辑
🔷 后端(Node.js + Express)
Node.js 18+-
Express.js(REST API 服务器) -
SQLite(基于文件的本地 DB) -
Multer(文件上传) -
node-cron(基于 TTL 的删除调度器) - 配置
CORS、helmet、rate-limit等安全中间件
📁 主要 API
-
POST /check-trigger- 服务器检查输入的字符串
- 如果与预先登记的 trigger 条件一致,就签发 session token
-
GET /session/:id或/inbox/:key- 只有持有服务器签发的 session key 的用户才能访问内部功能
-
POST /message,GET /messages- 保存/查询基于 TTL 的消息
-
POST /upload,GET /file/:id- 支持文件上传与自动删除
🔷 基础设施 / 部署
-
Docker(保证服务器环境一致性与可移植性) -
Ubuntu 22.04 LTS(Vultr VPS) -
Vultr VPS(香港区域)— 保证从中国访问的稳定性 -
Cloudflare(DNS proxy + SSL + IP 隐藏) - 域名:
???.net— 用于计算器伪装的域名
🔐 安全策略
| 项目 | 说明 |
|---|---|
| 代码分离 | 进入逻辑、trigger 等敏感代码仅放在服务器 |
| Flutter Web 角色限制 | 只负责 UI 渲染与输入发送 |
| 强制 HTTPS | Cloudflare + Let’s Encrypt |
| Cloudflare proxy | 隐藏服务器 IP,并防御 DDoS |
| CORS 限制 | 阻止允许域名以外的请求 |
| no-cache 策略 | 对所有响应应用 no-store header |
| 消息 TTL | 基于创建时间自动删除 |
| 文件 TTL | 上传后在规定时间内删除(由 node-cron 处理) |
| 本地存储限制 | 尽量减少或禁止使用 localStorage/cookie |
🗂️ 功能列表
| 功能 | 状态 | 说明 |
|---|---|---|
| 🧊 伪装 UI | 🟢 实现中 | 伪装成计算器 UI,通过服务器应用进入条件 |
| 📥 信息接收 | 🟢 准备中 | 管理员公告(只读) |
| 💬 聊天室 | 🟡 计划开发 | 匿名群聊(基于 TTL) |
| 📁 文件分享 | 🟡 计划开发 | 设置自动删除的文件分享 |
| 🔥 删除系统 | 🟡 计划开发 | 消息/文件 TTL 删除自动化 |
🚀 开发阶段路线图
- ⚙️ 设计系统架构并建立安全模型
- 📌 确定技术栈 + 决定伪装策略
-
🌐 购买域名(
???.net) - 🔨 Flutter Web 计算器 scaffold
- 🔨 Express + SQLite API scaffold
- 🔐 构建进入密钥的服务器处理结构
- 📦 Docker + 部署自动化
- 🌐 VPS 部署 + Cloudflare 集成
- 🧪 MVP 测试
- 🎯 稳定化与内部发布
📄 参考事项
- 绝不向 GitHub commit 敏感代码或信息。
- 部署用 Flutter 代码进入
build/目录,服务器代码只在 Docker container 内运行。 - 所有 API 通信都通过 HTTPS 加密,用户数据会在 TTL 设置之后自动废弃。
- 计算器进入密钥、用户 UUID 等敏感信息绝不包含在前端,只基于服务器内部的非公开验证 key 处理。
- 进入条件确认与用户识别由只在服务器侧执行的单向验证逻辑构成,因此即使 Flutter Web 代码暴露,安全信息也不会向外部泄露。
👤 开发者备忘
这个项目不是一个单纯的 app, 我是怀着它对某些人来说可能会成为与生命相连的生存工具这种心情开始的。
愿技术不是监视的工具, 而能成为通向自由的工具。
💭 日记
我为何而活?财富和名誉?不,那种东西本来就不可能成为目标,只不过是手段而已。
我真正想要的人生是什么?……说实话,还没法定义。但有一点很明确,它属于爱神 / 爱邻舍这个大范畴之内。
无论如何,看这个项目让我心跳加速、让我感到兴奋,现在我最想做的应该就是这种类型的事情。
所以,先从这里开始吧。
留下评论