Skip to content

greenhands-always/what-to-eat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

吃什么助手 - 智能饮食决策助手

一个基于 AI 的个性化饮食推荐应用,帮助用户快速解决"吃什么"的日常困扰。

✨ 功能特色

  • 🤖 智能推荐:基于用户偏好和历史行为的个性化推荐
  • 🎯 情境感知:根据用餐时间、心情、预算等因素调整推荐
  • 📱 响应式设计:完美适配手机、平板和桌面设备
  • 🔐 安全登录:支持 Google 和 GitHub OAuth 登录
  • 📊 学习优化:根据用户反馈持续优化推荐算法

🚀 快速开始

环境要求

  • Node.js 18.0 或更高版本
  • PostgreSQL 数据库(推荐使用 Supabase)
  • npm 或 yarn 包管理器

本地开发

  1. 克隆项目
git clone <your-repo-url>
cd what-to-eat-mvp
  1. 安装依赖
npm install
  1. 配置环境变量
cp .env.example .env.local

编辑 .env.local 文件,填入以下配置:

# 数据库配置
DATABASE_URL="your-postgresql-database-url"

# NextAuth.js 配置
NEXTAUTH_SECRET="your-secret-key"
NEXTAUTH_URL="http://localhost:3000"

# OAuth 配置(至少配置一个)
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"

GITHUB_ID="your-github-client-id"
GITHUB_SECRET="your-github-client-secret"
  1. 初始化数据库
# 生成 Prisma 客户端
npm run db:generate

# 推送数据库结构
npm run db:push

# 导入示例数据
npm run db:seed
  1. 启动开发服务器
npm run dev

访问 http://localhost:3000 查看应用。

📋 配置指南

1. 数据库配置

使用 Supabase(推荐)

  1. 访问 Supabase 创建免费账户
  2. 创建新项目
  3. 在项目设置中找到数据库连接字符串
  4. 将连接字符串添加到 .env.localDATABASE_URL

使用其他 PostgreSQL

确保你的 PostgreSQL 数据库可访问,并将连接字符串配置到 DATABASE_URL

2. OAuth 配置

Google OAuth

  1. 访问 Google Cloud Console
  2. 创建新项目或选择现有项目
  3. 启用 Google+ API
  4. 创建 OAuth 2.0 客户端 ID
  5. 添加授权重定向 URI:http://localhost:3000/api/auth/callback/google
  6. 将客户端 ID 和密钥添加到环境变量

GitHub OAuth

  1. 访问 GitHub Settings > Developer settings > OAuth Apps
  2. 创建新的 OAuth App
  3. 设置 Authorization callback URL:http://localhost:3000/api/auth/callback/github
  4. 将 Client ID 和 Client Secret 添加到环境变量

3. NextAuth 密钥生成

# 生成随机密钥
openssl rand -base64 32

将生成的密钥设置为 NEXTAUTH_SECRET

🚀 部署指南

Vercel 部署(推荐)

  1. 准备部署
# 确保代码已提交到 Git 仓库
git add .
git commit -m "Ready for deployment"
git push
  1. 连接 Vercel
  • 访问 Vercel
  • 导入你的 Git 仓库
  • Vercel 会自动检测 Next.js 项目
  1. 配置环境变量 在 Vercel 项目设置中添加以下环境变量:
  • DATABASE_URL
  • NEXTAUTH_SECRET
  • NEXTAUTH_URL(设置为你的域名)
  • GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRET
  • GITHUB_IDGITHUB_SECRET
  1. 更新 OAuth 回调 URL 将生产环境的回调 URL 添加到 OAuth 应用配置中:
  • Google: https://your-domain.vercel.app/api/auth/callback/google
  • GitHub: https://your-domain.vercel.app/api/auth/callback/github
  1. 部署 Vercel 会自动构建和部署你的应用。

其他平台部署

Netlify

  1. 连接 Git 仓库
  2. 设置构建命令:npm run build
  3. 设置发布目录:.next
  4. 配置环境变量

Railway

  1. 连接 Git 仓库
  2. Railway 会自动检测并部署
  3. 配置环境变量
  4. 可选:添加 PostgreSQL 数据库服务

📁 项目结构

what-to-eat-mvp/
├── app/                    # Next.js App Router
│   ├── api/               # API 路由
│   ├── globals.css        # 全局样式
│   ├── layout.tsx         # 根布局
│   ├── page.tsx          # 首页
│   └── providers.tsx      # 全局提供者
├── components/            # React 组件
│   └── ui/               # UI 组件库
├── hooks/                # 自定义 Hooks
├── lib/                  # 工具库
│   ├── auth.ts           # 认证配置
│   ├── prisma.ts         # 数据库客户端
│   ├── recommendation.ts  # 推荐算法
│   └── utils.ts          # 工具函数
├── prisma/               # 数据库配置
│   ├── schema.prisma     # 数据库模式
│   └── seed.ts           # 种子数据
├── PRD/                  # 产品需求文档
└── public/               # 静态资源

🛠️ 开发命令

# 开发
npm run dev          # 启动开发服务器
npm run build        # 构建生产版本
npm run start        # 启动生产服务器

# 数据库
npm run db:generate  # 生成 Prisma 客户端
npm run db:push      # 推送数据库结构
npm run db:seed      # 导入种子数据
npm run db:studio    # 打开 Prisma Studio

# 代码质量
npm run lint         # 代码检查
npm run type-check   # 类型检查

🔧 自定义配置

添加新菜品

编辑 prisma/seed.ts 文件,添加新的菜品数据:

{
  name: '菜品名称',
  cuisineType: 'chinese', // 菜系类型
  description: '菜品描述',
  avgPrice: 30,           // 平均价格
  preparationTime: 15,    // 准备时间(分钟)
  spiceLevel: 3,          // 辣度等级 1-5
  healthScore: 4,         // 健康分数 1-5
  tags: ['标签1', '标签2'] // 菜品标签
}

然后运行:

npm run db:seed

调整推荐算法

编辑 lib/recommendation.ts 文件中的 calculateScore 方法来调整推荐权重。

自定义样式

  • 全局样式:编辑 app/globals.css
  • 组件样式:使用 Tailwind CSS 类名
  • 主题色彩:修改 tailwind.config.js 中的颜色配置

📊 监控和分析

错误监控

推荐集成 Sentry 进行错误监控:

npm install @sentry/nextjs

用户分析

可以集成 Google Analytics 或其他分析工具来跟踪用户行为。

🤝 贡献指南

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

🆘 常见问题

Q: 数据库连接失败

A: 检查 DATABASE_URL 是否正确,确保数据库服务正在运行。

Q: OAuth 登录失败

A: 确认 OAuth 应用的回调 URL 配置正确,客户端 ID 和密钥无误。

Q: 推荐结果为空

A: 运行 npm run db:seed 确保数据库中有示例数据。

Q: 构建失败

A: 运行 npm run type-check 检查 TypeScript 错误,确保所有依赖已正确安装。

📞 支持

如果你遇到问题或有建议,请:

  1. 查看 Issues 中是否有类似问题
  2. 创建新的 Issue 描述你的问题
  3. 提供详细的错误信息和复现步骤

享受美食,享受生活! 🍽️

About

纠结吃什么?AI帮你决定。本项目是一个ai coding独立开发测试项目。目前使用腾讯CodeBuddy产品从零独立开发测试中。Commit Message主要使用提示词

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors