舔狗日记已开源~,传送门:《新作品《舔狗日记》:在爱的剧本里,我们都是自己的主角》
GitHub:https://github.com/jonssonyan/dog-diary
前言
大家好。
今年 3 月份一个朋友和我说他有一个需求,就是不知道每天吃什么,我是不是可以开发一个推荐美食的网站?这样他就不需要每天纠结吃什么了,甚至可以直接生成菜谱,参照菜谱自己动手做饭。
我有时候也有这样的困惑,每次点外卖不知道点什么,而且在此不久前我开发过一个“玩具”作品:《舔狗日记》,积累了一些全栈开发的经验,技术框架也都大同小异,正好可以再熟练一下。
之前开发舔狗日记的时候做的比较简单,很多技术都没有跑通,比如:国际化,Google 登录,日志管理,认证、鉴权、限流等,这次可以全部用上。
吃啥好呢
在线演示:https://eat.jonssonyan.com
GitHub:https://github.com/jonssonyan/what-to-eat
于是我开发了第 2 个全栈作品:吃啥好呢,个性化菜谱推荐与收藏系统,支持多条件定制、国际化、第三方登录,助你轻松解决“今天吃什么”的难题。
登录之后可以看到自己收藏过的菜谱,也可以取消收藏,收藏越多可以解锁更高级的称号。
主要功能
- 个性化菜谱推荐:支持饮食偏好、口味、烹饪时间、难度等多条件定制
- 菜谱收藏夹:一键收藏、管理你的专属菜谱
- 用户称号系统:根据收藏数量自动授予等级称号
- 国际化支持:中英文切换,界面友好
- 第三方登录:支持 Google 登录
- 更新日志与反馈:随时查看历史变更,欢迎提出建议
- 移动端适配:良好的移动端体验
部署
一开始的时候我和大部分人一样部署在 vercel + supabase 上面,后来项目多了限制有点多,cloudflare workers 只支持 edge 运行时,目前看很坑。于是统一切换到自建服务器,使用 Docker 运维。
管理证书使用我自己手搓的 nginx-acme 自动申请和续签的 ssl 证书,使用 Nginx 作为网关+反代,通过域名转发至不同的服务器。
nginx-acme:https://github.com/jonssonyan/nginx-acme
期间也遇到了一些坑,但是都解决了,也就踩一次。这些我会单独写一篇文章给大家分享我部署过程中遇到的问题。
技术栈
《吃啥好呢》本质没有跑通商业闭环,属于自己探索的练手项目,但是项目里面使用到了很多全栈开发的技术,把整个产品开发流程给跑通了,你想找个项目参考练手来学习全栈开发的话,这是一个很好的例子。
- Next.js 14 (React 18):前端框架
- TypeScript:编程语言
- Tailwind CSS:CSS 样式
- next-auth:认证和鉴权
- next-intl:国际化
- rate-limiter-flexible:限流
- Prisma:ORM
- MySQL:数据库
- Docker:部署运维
- Zod:参数校验
- Winston:日志
- winston-daily-rotate-file:日志滚动
总结
这个作品其实我几个月前就已经写好了,期间一直在优化代码,想把代码做到精简,每一行是干什么的,没有行不行,同时也借助了很多 AI 对代码进行重构和 Review,这样我就可以前期将大部分的问题都踩一遍,找出自己用的最顺手的模板,以后开发新产品就更加轻松了。
准备把我开发这些作品过程中总结的全栈开发经验整理成在线文档,欢迎关注