How nak89/recipe-book-mobile works
Kroueng Psom is a bilingual personal cookbook and meal-planning app. The main journey is to discover or create recipes, keep them in a cookbook, assign them to a week, turn that plan into a market list, and cook from step-by-step instructions. The app is an Expo client: recipe, plan, grocery, and photo operations use its API client, while sign-in uses Supabase directly. The README documents the product branches; sampled source confirms selected screen-to-client and authentication links, so unsampled route wiring is not inferred.
Main entry points: api.ts API client · planner.tsx Weekly planner · AuthForm.tsx Sign-in forms · RecipeForm.tsx Recipe authoring
Components 22
Recipes
- Explore library
src/app/(app)/(tabs)/explore.tsx - Recipe collection
src/app/(app)/(tabs)/index.tsx - Recipe authoring
src/components/RecipeForm.tsx - Recipe detail
src/app/(app)/recipe/[id]/index.tsx - Cook mode
src/components/CookModeScreen.tsx - Localized suggestions
src/data/usePantry.ts
Planning and shopping
- Weekly planner
src/app/(app)/(tabs)/planner.tsx - Dinner-week draft
src/app/(app)/generate-week.tsx - Shared week state
src/context/WeekContext.tsx - Market list
src/app/(app)/(tabs)/grocery.tsx - Grocery logic
src/lib/grocery.ts
Identity and language
- Sign-in forms
src/components/AuthForm.tsx - Authentication state
src/context/AuthContext.tsx - Google sign-in
src/lib/googleAuth.ts - English and Khmer
src/i18n/strings.ts
App services
- Supabase Auth
- API client
src/lib/api.ts - Recipe backend
- Recipe and plan shapes
src/types/recipe.ts
Shared presentation
- App shell
src/app/_layout.tsx - Theme and typography
src/theme/index.ts
Other components
- Home cook
Connections 28
- Home cook → App shell: opens app
README.md - App shell → Sign-in forms: signs in
src/app/_layout.tsx - Sign-in forms → Authentication state: submits credentials
src/components/AuthForm.tsx - Authentication state → Supabase Auth: reads session
src/context/AuthContext.tsx - Sign-in forms → Google sign-in: starts OAuth
src/components/AuthForm.tsx - Google sign-in → Supabase Auth: requests authorization
src/lib/googleAuth.ts - Home cook → Explore library: browses dishes
README.md - Explore library → Recipe collection: saves recipe copy
README.md - Home cook → Recipe collection: searches and favourites
README.md - Home cook → Recipe authoring: creates recipe
README.md - Home cook → Recipe detail: opens recipe
README.md - Recipe detail → Cook mode: starts cooking
README.md - Cook mode → Home cook: shows steps and timers
README.md - Home cook → Weekly planner: plans meals
README.md - Weekly planner → Dinner-week draft: generates dinner draft
README.md - Weekly planner → Shared week state: shares week state
src/context/WeekContext.tsx - Home cook → Market list: shops from plan
README.md - Market list → Grocery logic: builds market list
- Home cook → English and Khmer: switches language
README.md - Recipe authoring → Localized suggestions: uses suggestions
src/data/usePantry.ts - Recipe collection → API client: fetches recipes
src/app/(app)/(tabs)/index.tsx - Weekly planner → API client: loads and saves plan
README.md - Market list → API client: loads and updates groceries
README.md - Recipe authoring → API client: saves recipes and photos
README.md - API client → Recipe backend: sends API requests
README.md - API client → Recipe and plan shapes: uses data shapes
src/lib/api.ts - App shell → Theme and typography: provides shared styling
src/app/_layout.tsx - Sign-in forms → English and Khmer: renders translations
src/components/AuthForm.tsx