当前位置: 首页 > news >正文

新作品:吃啥好呢 - 个性化美食推荐

舔狗日记已开源~,传送门:《新作品《舔狗日记》:在爱的剧本里,我们都是自己的主角》

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,这样我就可以前期将大部分的问题都踩一遍,找出自己用的最顺手的模板,以后开发新产品就更加轻松了。

准备把我开发这些作品过程中总结的全栈开发经验整理成在线文档,欢迎关注

http://www.lryc.cn/news/585223.html

相关文章:

  • QT跨平台应用程序开发框架(4)—— 常用控件QWidget
  • 【机器学习】保序回归平滑校准算法
  • AI在医疗影像诊断中的应用前景与挑战
  • RabbitMQ 之消息积压
  • Linux进程间通信--命名管道
  • Leaflet面试题及答案(1-20)
  • [面试] 手写题-选择排序
  • 【Springboot】Bean解释
  • 为什么必须掌握Java异常处理机制?——从代码健壮性到面试必考题全解析
  • 结构化数据、非结构化数据区别
  • Web安全 - 基于 SM2/SM4 的前后端国产加解密方案详解
  • 远程登录docker执行shell报错input is not a terminal问题
  • 如何将公式图片转换为公式格式到wps/word里面
  • 红色脉络:一部PLMN在中国的演进史诗 (1G-6G)》第1篇 | 开篇:从蜂窝到星链,PLMN——连接世界的无形之网
  • 线性回归原理推导与应用(十):逻辑回归多分类实战
  • LabVIEW前面板设计--控件/文字遮挡
  • Microsoft Word 中 .doc 和 .docx 的区别
  • 利用BeautifulSoup解析大众点评区域店铺网页
  • LabVIEW远程数电实验平台
  • VIT(视觉Transformer)
  • 【爬虫】- 爬虫原理及其入门
  • 提示工程:突破Transformer极限的计算科学
  • 进程状态 + 进程优先级切换调度-进程概念(5)
  • 需求升级,创新破局!苏州金龙赋能旅游客运新生态
  • 20250711荣品RD-RK3588开发板在Android13下的开机自启动的配置步骤
  • 宝塔命令Composer 更改数据源不生效
  • 动态组件和插槽
  • 基于定制开发开源AI智能名片与S2B2C商城小程序的旅游日志创新应用研究
  • nessus最新安装
  • [Meetily后端框架] Whisper转录服务器 | 后端服务管理脚本