尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗A comprehensive web platform for the Savry iOS app, featuring intelligent recipe generation, meal planning, and grocery list creation.
npm install
.env.local file with:DATABASE_URL="postgresql://user:password@localhost:5432/savry"
OPENAI_API_KEY="your-openai-api-key"
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="generate-with: openssl rand -base64 32"
NEXT_PUBLIC_APP_URL="http://localhost:3000"
npx prisma generate
npx prisma db push
npm run dev
Visit http://localhost:3000 to see the app.
POST /api/auth/register - User registrationPOST /api/auth/[...nextauth] - AuthenticationPOST /api/recipes/generate - Generate recipe (web)GET /api/recipes/popular - Get popular recipesPOST /api/meal-plans/generate - Generate meal plan (web)GET /api/discounts/[location] - Get supermarket discounts (Pro)All iOS app endpoints use Bearer token authentication and handle recipe generation server-side to keep your API key secure.
POST /api/app/auth - iOS app authenticationPOST /api/app/recipes/generate - Generate recipe (returns cached popular recipes when possible)POST /api/app/meal-plans/generate - Generate meal plan with budget optimizationPOST /api/app/grocery-list/generate - Generate grocery listGET /api/app/sync - Sync user data with iOS appThe iOS app should:
/api/app/auth with email/password to get JWT tokenAuthorization: Bearer <token> header to all subsequent requests/api/app/* endpoints for all recipe generation operations/api/app/sync to sync recipes, meal plans, and grocery listsExample iOS authentication:
// Swift example
let url = URL(string: "https://your-domain.com/api/app/auth")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let body = ["email": email, "password": password]
request.httpBody = try? JSONEncoder().encode(body)
// Store the returned token for subsequent requests
The application uses the following main models:
# Run development server
npm run dev
# Build for production
npm run build
# Start production server
npm start
# Update database schema
npx prisma db push
This app is designed to be deployed on:
Remember to:
NEXTAUTH_URL to your production domainThe supermarket discount scraper (lib/supermarket-scraper.ts) currently uses sample data. To implement real discount scraping:
This is a private project for the Savry iOS app. For questions or issues, contact the development team.
Proprietary - All rights reserved