How shalomavi/fridger works
Fridger is a shared household shopping-and-pantry PWA. A signed-in user sets up or joins a household, manages a shared shopping list, moves purchased items into the pantry, and gets meal suggestions or imports recipes; settings cover household preferences and connected apps. The client uses cached, polled server state, while Supabase provides auth and persistence. The README documents the meal-suggestion LLM function; the tree also shows recipe parsing and MCP/OAuth services. Some feature internals were not sampled, so uncertain service wiring is left unasserted.
Main entry points: routes.tsx App routes · shopping Shopping list · pantry Pantry management · supabase.ts Supabase client
Components 18
App and household
- App routes
src/app/routes.tsx - Session and login
src/features/auth - Household setup
src/features/household - Preferences and apps
src/features/settings - OAuth consent
src/features/oauthConsent
Food workflows
- Shopping list
src/features/shopping - Pantry management
src/features/pantry - Meal suggestions
src/features/meals - Recipe import
src/features/recipes
Data and domain
- Food domain rules
src/domain - Supabase client
src/shared/supabase.ts - Supabase Postgres
- Persisted query cache
src/main.tsx
Edge services
- Suggest meals function
supabase/functions/suggest-meals - Parse recipe function
supabase/functions/parse-recipe - MCP and OAuth service
supabase/functions/mcp
Other components
- Household user
- Gemini API
Connections 26
- Household user → App routes: uses
src/app/routes.tsx - App routes → Session and login: gates access
src/app/routes.tsx - App routes → Household setup: sets up
src/app/routes.tsx - App routes → Shopping list: routes to
src/app/routes.tsx - App routes → Pantry management: routes to
src/app/routes.tsx - App routes → Meal suggestions: routes to
src/app/routes.tsx - App routes → Recipe import: routes to
src/app/routes.tsx - App routes → Preferences and apps: routes to
src/app/routes.tsx - App routes → OAuth consent: routes to
src/app/routes.tsx - Shopping list → Pantry management: moves purchased
src/features/shopping/useShoppingList.ts - Pantry management → Shopping list: moves items
src/features/pantry/usePantry.ts - Shopping list → Food domain rules: merges items
src/features/shopping/useAddShoppingItem.ts - Meal suggestions → Pantry management: checks ingredients
src/features/meals/useSuggestions.ts - Meal suggestions → Recipe import: adds missing items
src/features/meals/useSuggestions.ts - Household setup → Preferences and apps: sets preferences
src/features/settings/useMcpTokens.ts - Shopping list → Supabase client: reads and writes
src/features/shopping/api.ts - Pantry management → Supabase client: reads and writes
src/features/pantry/api.ts - Recipe import → Supabase client: reads and writes
src/features/recipes/api.ts - Supabase client → Supabase Postgres: accesses
README.md - Session and login → Supabase client: authenticates
src/features/auth/useSession.ts - App routes → Persisted query cache: renders cached data
src/main.tsx - Meal suggestions → Suggest meals function: requests suggestions
- Suggest meals function → Gemini API: generates meals
README.md - Recipe import → Parse recipe function: requests parsing
- Preferences and apps → MCP and OAuth service: manages connections
- OAuth consent → MCP and OAuth service: authorizes client