【More than Coding】一个人 + AI = 一款全栈英语单词学习 App,从 0 到上线只用了 SOLO

1. 摘要

我是一名独立开发者,用 TRAE SOLO 从零开发了一款名为「词韵」的全栈英语单词学习应用——包含 iOS 原生客户端(SwiftUI)、Go 后端服务、Web 管理后台、Docker 部署,以及 iCloud 跨设备同步。整个项目从需求拆解、架构设计、编码实现到 Bug 修复,全程由 SOLO 辅助完成。最终交付了一个拥有 20+ 核心功能模块、80+ Bug 修复、16 张数据库表、完整 CI/CD 部署 的生产级应用。

2. 背景

我是一名 iOS 开发者,一直想做一个属于自己的单词学习工具。市面上的背单词 App 要么广告太多,要么算法不够智能,要么数据不同步。我想要一款:

  • 算法科学:基于 SM-2 间隔重复,真正有效

  • 数据互通:iPhone、iPad 数据实时同步

  • 体验精致:动画流畅、触感反馈、暗色模式

  • 完全可控:自己的词库、自己的数据、自己的服务器

但全栈开发涉及 iOS、后端、数据库、部署……一个人做这些,工作量巨大。直到我遇到了 TRAE SOLO。
3. 实践过程

第一步:架构设计与技术选型

我没有直接让 SOLO 写代码,而是先让它帮我做技术选型和架构设计:

Plain Text

我需要一个英语单词学习 App,支持 iOS、服务端、数据同步,
请帮我设计技术架构和数据库表结构

SOLO 给出了完整的技术方案:

层级 技术选型 理由
iOS 客户端 SwiftUI + Combine 原生体验,声明式 UI
后端服务 Go + Gin 高性能,部署简单
数据库 SQLite + PostgreSQL 开发零配置,生产可扩展
认证 JWT 无状态,多端支持
实时推送 SSE 轻量,兼容性好
跨设备同步 CloudKit + REST API 离线优先,在线同步
部署 Docker Compose 一键部署,环境一致

第二步:分模块迭代开发

我没有一次性让 SOLO 生成所有代码,而是按功能模块逐步迭代

迭代 1 - 核心学习功能

  • 单词卡片展示(音标、释义、例句、词根词缀)

  • SM-2 间隔重复算法实现

  • 四种学习排序(正序/倒序/随机/智能复习)

  • 收藏和已熟标记系统

迭代 2 - 测试与复习

  • 听力测试(听音辨词 + 智能干扰项生成算法)

  • 书面测试(选择题 + 拼写模式)

  • 智能复习模式(卡片翻转 + 三级评分动画)

  • 错题本(自动收录 + 专项复习)

迭代 3 - 社交与激励

  • 每日打卡系统(日历可视化)

  • 精美打卡分享卡片(ImageRenderer 渲染)

  • 成就系统(12 个勋章,铜银金三级)

  • 学习排行榜

迭代 4 - 数据同步与服务端

  • Go 后端 API(用户、词库、进度、通知等)

  • Web 管理后台(词库审批、用户管理、数据统计)

  • iCloud 跨设备同步(时间戳冲突解决 + 集合合并策略)

  • 服务端双向同步(Push/Pull)

迭代 5 - 部署与打磨

  • Docker 多阶段构建 + 安全加固

  • iOS Widget 桌面小组件

  • 中英文国际化

  • 暗色模式 + iPad 适配

第三步:Bug 修复——SOLO 最强的场景

项目开发完成后,我让 SOLO 做了系统性 Bug 扫描和修复,这是我觉得 SOLO 最惊艳的地方:

Plain Text

请全面检查这个项目的所有文件,找出所有 Bug

SOLO 逐文件扫描了 50+ 个源码文件,累计发现并修复了 80+ 个真实 Bug,包括:

  • 数据安全:SQL 类型不匹配(bool Scan INTEGER 导致查询失败)

  • 功能缺陷:导入接口不支持 JSON 格式、词库切换后重启丢失

  • 并发问题:iCloud 同步后 UI 不刷新、非原子性数据库更新

  • 安全漏洞:SSE 端点未检查用户禁用状态、设备令牌注销 404

  • 编译错误:struct 中误用 weak self、方法定义在错误类型中

  • 逻辑错误:多词库同名词误删、设置保存参数类型不匹配

每次修复后 SOLO 都会自动编译验证,确保修复正确。

踩过的坑

  1. Go 的 bool vs SQLite 的 INTEGER:PostgreSQL 的 BOOLEAN 和 SQLite 的 INTEGER 在 Go 的 database/sql 中行为不同,Scanbool 在某些场景下会失败。统一改为 int + 手动转换。

  2. SwiftUI struct 中不能用 weak selfDispatchWorkItem 闭包中 [weak self] 在 struct 中编译报错,改用 @State + playId 计数器方案。

  3. iCloud 同步不等于 UI 刷新NSUbiquitousKeyValueStore 更新了 UserDefaults,但 SwiftUI 的 @Published 属性不会自动响应。需要手动调用刷新方法。

  4. Docker restart ≠ rebuild:修改代码后只 docker compose restart 不会生效,必须 docker compose up --build

4. 成果展示

技术架构

  • iOS 客户端:SwiftUI + 20+ 视图文件

  • Go 后端:Gin + 16 张数据库表 + JWT + SSE

  • Web 管理后台:内嵌式管理界面(14 个功能页面)

  • 部署:Docker Compose 一键部署

核心功能

  • SM-2 间隔重复算法(标准实现,难度自适应)

  • 听力测试(智能干扰项生成)

  • 智能复习(卡片翻转 + 三级评分动画 + 触感反馈)

  • iCloud + 服务端双层同步

  • iOS Widget 桌面小组件

  • 打卡分享卡片

  • 成就系统(12 勋章)

  • 中英文国际化

  • 暗色模式 + iPad 适配

代码规模

  • iOS:30+ Swift 文件

  • 后端:15+ Go 文件

  • 管理后台:1 个完整的单页应用

  • 80+ Bug 修复记录

**5. 效果与总结

效果演示**:

提效数据

  • 传统全栈开发预估:2-3 个月

  • 使用 SOLO 实际耗时:约 2 周

  • 提效约 4-6 倍

SOLO 在我流程中做了什么

  1. 架构师:技术选型、数据库设计、API 设计

  2. 编码伙伴:分模块迭代开发,每次聚焦一个功能

  3. QA 工程师:系统性 Bug 扫描,发现 80+ 个问题并修复

  4. 代码审查员:修复引入的新问题,确保回归正确

可复用的方法论

  • 不要一次性生成所有代码:按模块迭代,每步验证

  • 让 AI 做 Bug 扫描:这是 SOLO 最强的场景之一,远超人工效率

  • 编译验证是底线:每次修改后必须编译通过

  • 描述越具体,结果越好:告诉 SOLO 具体的文件、行号、期望行为

太强了 :+1: