diff --git a/VERCEL-DEPLOYMENT.md b/VERCEL-DEPLOYMENT.md new file mode 100644 index 0000000..22caa87 --- /dev/null +++ b/VERCEL-DEPLOYMENT.md @@ -0,0 +1,185 @@ +# 心願星河 - Vercel 部署指南 + +## 📋 部署前检查清单 + +### 1. 数据库准备 +- ✅ Supabase 项目已创建并配置 +- ✅ 数据库表格已创建(运行过所有 SQL 脚本) +- ✅ Storage 桶已设置 +- ✅ RLS 政策已配置 + +### 2. 代码准备 +- ✅ 代码已推送到 GitHub +- ✅ 项目可以在本地正常运行 +- ✅ 构建命令可以成功执行 + +## 🚀 Vercel 部署步骤 + +### 第一步:连接 GitHub +1. 访问 [Vercel Dashboard](https://vercel.com/dashboard) +2. 点击 "New Project" +3. 从 GitHub 选择 `wish-pool` 仓库 +4. 点击 "Import" + +### 第二步:项目配置 +**Framework Preset**: Next.js +**Root Directory**: `./` +**Build Command**: `npm run build` +**Output Directory**: `.next`(默认,无需修改) + +### 第三步:环境变量设置 ⚠️ 重要 +在 Vercel 项目设置中添加以下环境变量: + +#### 必要的环境变量 +```env +# Supabase 配置 (必需) +NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url +NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key + +# 生产环境 URL (必需修改) +NEXT_PUBLIC_APP_URL=https://your-app-name.vercel.app + +# Supabase Service Role Key (可选,用于管理功能) +SUPABASE_SERVICE_ROLE_KEY=your_service_role_key +``` + +#### 🔧 如何获取 Supabase 配置 +1. 访问 [Supabase Dashboard](https://app.supabase.com/) +2. 选择您的项目 +3. 进入 Settings → API +4. 复制以下值: + - **Project URL** → `NEXT_PUBLIC_SUPABASE_URL` + - **Anon public** → `NEXT_PUBLIC_SUPABASE_ANON_KEY` + - **Service role** → `SUPABASE_SERVICE_ROLE_KEY` + +#### 🌐 设置生产环境 URL +部署完成后,Vercel 会给您一个域名,例如: +- 临时域名:`https://wish-pool-abcd1234.vercel.app` +- 自定义域名:`https://your-custom-domain.com` + +将这个域名设置为 `NEXT_PUBLIC_APP_URL` 的值。 + +### 第四步:执行部署 +1. 确认所有设置正确 +2. 点击 "Deploy" +3. 等待部署完成(通常 2-5 分钟) + +## 🎯 部署后配置 + +### 1. 更新环境变量 +部署成功后,获取 Vercel 分配的域名,然后: +1. 进入 Vercel 项目设置 +2. 找到 Environment Variables +3. 编辑 `NEXT_PUBLIC_APP_URL` +4. 设置为实际的生产域名 +5. 重新部署(可选,如果应用需要这个变量) + +### 2. Supabase 域名配置 +在 Supabase Dashboard 中: +1. 进入 Authentication → Settings +2. 添加您的 Vercel 域名到 Site URL +3. 添加到 Redirect URLs(如果有登录功能) + +## ✅ 部署后验证 + +### 功能测试 +- [ ] 访问主页是否正常加载 +- [ ] 提交困扰案例功能 +- [ ] 查看公开困扰功能 +- [ ] 点赞功能是否正常 +- [ ] 图片上传功能 +- [ ] 背景音乐控制 +- [ ] 响应式设计在不同设备 + +### 性能检查 +- [ ] 页面加载速度 +- [ ] 图片显示正常 +- [ ] API 调用响应时间 +- [ ] SEO 元标签 + +### 数据库连接测试 +```bash +# 可以在本地测试生产环境的连接 +NEXT_PUBLIC_SUPABASE_URL=your_production_url \ +NEXT_PUBLIC_SUPABASE_ANON_KEY=your_production_key \ +npm run dev +``` + +## 🔧 常见问题解决 + +### 1. 构建失败 +**错误**: `Module not found` 或类型错误 +**解决**: 检查所有依赖是否已安装,运行 `npm install` + +### 2. Supabase 连接失败 +**错误**: 401 Unauthorized 或连接超时 +**解决**: +- 检查环境变量是否正确设置 +- 确认 Supabase 项目状态是否正常 +- 验证 API 密钥是否有效 + +### 3. 图片上传失败 +**错误**: Storage 相关错误 +**解决**: +- 检查 Storage 桶是否已创建 +- 确认 RLS 政策是否正确配置 +- 验证 CORS 设置 + +### 4. 环境变量未生效 +**错误**: 环境变量读取为 undefined +**解决**: +- 确保变量名以 `NEXT_PUBLIC_` 开头(客户端变量) +- 重新部署项目 +- 检查变量值中没有多余的空格或引号 + +## 📈 生产环境优化 + +### 1. 自定义域名设置 +1. 在 Vercel 项目设置中点击 "Domains" +2. 添加您的自定义域名 +3. 配置 DNS 记录 +4. 更新 `NEXT_PUBLIC_APP_URL` 环境变量 + +### 2. 分析和监控 +```env +# 可选:添加分析工具 +NEXT_PUBLIC_GOOGLE_ANALYTICS=GA_MEASUREMENT_ID +NEXT_PUBLIC_VERCEL_ANALYTICS=true +``` + +### 3. 安全配置 +- 启用 HTTPS(Vercel 自动配置) +- 配置适当的 CORS 政策 +- 设置合适的 CSP 标头 + +## 🚨 重要提醒 + +1. **环境变量安全**: + - 不要在客户端代码中暴露 Service Role Key + - 只有 `NEXT_PUBLIC_` 开头的变量可以在浏览器中访问 + +2. **数据备份**: + - 部署前确保 Supabase 数据已备份 + - 保存环境变量配置的副本 + +3. **测试环境**: + - 建议先在 Preview 环境测试 + - 确认所有功能正常后再推广到生产环境 + +## 📞 支持 + +如果遇到部署问题,请检查: +1. Vercel 部署日志 +2. Supabase 项目状态 +3. 浏览器控制台错误 +4. 网络连接状况 + +--- + +**快速部署检查表**: +- [ ] GitHub 代码已推送 +- [ ] Supabase 项目已配置 +- [ ] 环境变量已设置 +- [ ] 部署成功 +- [ ] 功能测试通过 +- [ ] 域名已配置 \ No newline at end of file diff --git a/env.template b/env.template new file mode 100644 index 0000000..faa5312 --- /dev/null +++ b/env.template @@ -0,0 +1,48 @@ +# 心願星河 - 環境變數配置模板 +# 複製此文件為 .env.local 並填入實際值 + +# ================================ +# Supabase 配置 (必需) +# ================================ +# 從 Supabase Dashboard → Settings → API 獲取 +NEXT_PUBLIC_SUPABASE_URL=https://your-project-id.supabase.co +NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key-here + +# ================================ +# 應用程式 URL +# ================================ +# 開發環境 +NEXT_PUBLIC_APP_URL=http://localhost:3000 + +# 生產環境(部署到 Vercel 後修改) +# NEXT_PUBLIC_APP_URL=https://your-app-name.vercel.app + +# ================================ +# 管理功能 (可選) +# ================================ +# 用於服務器端操作和管理功能 +# 從 Supabase Dashboard → Settings → API → Service Role 獲取 +SUPABASE_SERVICE_ROLE_KEY=your-service-role-key-here + +# ================================ +# 分析和監控 (可選) +# ================================ +# Google Analytics +# NEXT_PUBLIC_GOOGLE_ANALYTICS=GA_MEASUREMENT_ID + +# Vercel Analytics +# NEXT_PUBLIC_VERCEL_ANALYTICS=true + +# ================================ +# 開發工具 (僅開發環境) +# ================================ +# 啟用詳細日誌 +# NEXT_PUBLIC_DEBUG=true + +# ================================ +# 注意事項 +# ================================ +# 1. 只有以 NEXT_PUBLIC_ 開頭的變數可以在瀏覽器中訪問 +# 2. 不要將 Service Role Key 暴露在客戶端代碼中 +# 3. 部署到生產環境時,請更新 NEXT_PUBLIC_APP_URL +# 4. .env.local 文件已被 .gitignore 忽略,不會被提交到 Git \ No newline at end of file diff --git a/lib/categorization.ts b/lib/categorization.ts index 65e3f63..c8849eb 100644 --- a/lib/categorization.ts +++ b/lib/categorization.ts @@ -212,10 +212,10 @@ export const categories = [ "服務", "處理", ], - color: "#06B6D4", - bgColor: "from-cyan-500/20 to-teal-600/20", - borderColor: "border-cyan-400/30", - textColor: "text-cyan-200", + color: "#0891B2", + bgColor: "from-cyan-600/20 to-teal-700/20", + borderColor: "border-cyan-500/30", + textColor: "text-cyan-300", icon: "💬", }, {