- 角色
- 产品、设计、开发
- 技术栈
- Nuxt 3 · Nitro · MySQL
- 周期
- 6 周上线
- 年份
- 2025

需求
心愿单通常散落在备忘录和聊天记录里:链接找不到了,两位朋友还送来同一件礼物。需要一个服务,让心愿从任意网站一条链接就能加入,朋友也能看到这件礼物已被预订。
方案
心愿通过链接添加:服务器自动抓取名称、描述和图片。Yandex Market、Ozon、Wildberries 和 Gold Apple 不提供可用的 Open Graph 标签,因此为每家单独写了无头浏览器脚本。
心愿按公开和私密两类清单整理,清单通过链接或二维码分享,朋友可以把礼物预订 30 天。“礼物创意”合集一键复制,机器人 @WishItRuBot 接收链接并创建心愿草稿;界面支持两种语言,有深色主题、博客和 PWA——可添加到主屏幕。
开发过程
全部由我一人完成——产品、界面、前端、后端、数据库、DevOps:252 次提交中有 251 次出自我手。仓库于 2024 年 12 月建立,主要开发用了 6 周,从 2025 年 5 月 7 日到 6 月 19 日,约 250 次提交。线上运行的正是这个版本。
用到的技术
Nuxt 3 与 Vue 3,API 基于 Nitro,合在一个 SSR 应用里:52 个 API 路由,MySQL 8 中 15 张表。界面用 Nuxt UI 3 和 Tailwind 4,状态放在 Pinia,支持 i18n 和 PWA。访问基于 JWT 与角色权限;用邮箱或手机号注册,通过邮件(nodemailer)或短信(SMS Aero)确认,也可用 Google OAuth 和 Telegram Login 登录,在 Telegram Mini App 内则自动登录;机器人基于 node-telegram-bot-api。链接由 Playwright 驱动无头 Chromium 解析,错误由 Sentry 捕获,测试用 Vitest 和 Playwright;Docker 与 GitLab CI 把构建部署到 nginx 后面的 VPS。





