尚未偵測到更新。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