Cook with intention, eat well.
Savour is a dark-themed iOS cooking app built with Expo/React Native and a local Express backend that normalizes recipes from MealDB.
- Expo SDK 54
- React Native + expo-router
- Node.js + Express
- MealDB API
- Gemini API (optional endpoint)
app/- Expo Router screens and navigationassets/- fonts and app/splash iconsbackend/server.js- scraper-style backend and recipe endpointsconstants/,context/,data/- app config, state, and recipe logic
- Node.js 22.x
- npm
- Expo Go (for iOS device testing)
Create your local env file:
cp .env.example .envThen fill values in .env:
EXPO_PUBLIC_GEMINI_API_KEYGEMINI_API_KEYEXPO_PUBLIC_API_BASE_URL(example:http://<YOUR_MAC_LAN_IP>:5050)PORT(default5050)
npm ciTerminal 1 (backend):
npm run serverTerminal 2 (app):
npx expo start -cnpx tsc --noEmit
node --check backend/server.jsRuntime health check (with backend running):
curl -i 'http://localhost:5050/recipes/discover?limit=2'GET /recipes/discoverGET /recipes/:idPOST /rewrite(Gemini-dependent)
- Submit this GitHub repository publicly.
- Do not commit
.env. .env.exampleis included for judges.