WallpaperMachine
The wallpapers you love. A new home on your Mac.
Capture recipes from photos, manage ingredients, and organize your favorite dishes with Nibble.
LifestyleJavaScript · PLpgSQLGitHub @amarks07OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A mobile-first recipe management application with OCR-powered recipe import from screenshots. Built with React Native + Expo, Supabase, and Next.js deployment.
Nibble follows the Barrow monorepo pattern:
Nibble/
├── apps/
│ ├── mobile/ # React Native + Expo app
│ └── web/ # Next.js deployment page
├── packages/
│ └── core/ # Shared hooks, utilities, Supabase client
└── supabase/
├── migrations/ # Database schema
└── functions/ # Edge Functions for OCR, image upload, search
ocr-process: Legacy mobile OCR endpoint (not configured for cloud OCR)recipe-save-from-ocr: Transform OCR output into structured recipesrecipe-image-upload: Generate presigned URLs for S3 uploadsrecipe-search: Full-text search with PostgreSQL trigram indexuseRecipeActions, useRecipeSync, useRecipeSearchClone and install dependencies:
cd Nibble
npm install
Configure Supabase:
.env files:
# apps/mobile/.env
EXPO_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
EXPO_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
# apps/web/.env.local
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
Set up database:
npx supabase link --project-ref your-project-ref
npx supabase db push
Deploy Edge Functions:
npx supabase functions deploy ocr-process
npx supabase functions deploy recipe-save-from-ocr
npx supabase functions deploy recipe-image-upload
npx supabase functions deploy recipe-search
npx supabase functions deploy send-household-invite
Configure household invitation emails:
RESEND_API_KEY, HOUSEHOLD_INVITE_FROM_EMAIL (for example, Nibble <[email protected]>), and APP_URL (the public web app URL) as Supabase function secrets.
npx supabase secrets set RESEND_API_KEY="your-resend-api-key" HOUSEHOLD_INVITE_FROM_EMAIL="Nibble <[email protected]>" APP_URL="https://your-app.example.com"
npx supabase db push so the pending-invite retry behavior is available.Mobile app:
npm run start --workspace=apps/mobile
# or
npm run web --workspace=apps/mobile # web preview
Web app:
npm run dev --workspace=apps/web
Build web deployment:
npm run build:web # Builds mobile app and exports to web
All tables use Row Level Security (RLS) — users can only access their own data.
POST /ocr-process
501 when cloud OCR is unavailablePOST /recipe-save-from-ocr
POST /recipe-image-upload
fileName, contentTypePOST /recipe-search
query, tags, limit, offsetuseRecipeActions(recipes, setRecipes)
createRecipe(recipe): Create recipe with optimistic updateupdateRecipe(recipeId, updates): Update recipedeleteRecipe(recipeId): Delete recipegetRecipeById(recipeId): Fetch recipeuseRecipeSync(setRecipes, session)
syncFromCloud(): Fetch recipes from SupabasedebouncedSync(): Debounced sync (1500ms)useRecipeSearch(recipes)
searchLocal(query): Local filteringsearchCloud(query, tags, limit): Server-side full-text searchfilterByTags(selectedTags): Filter by recipe tagsFollows Barrow's pattern:
apps/webCreate mobile screens (Phase 2):
Add OCR capture flow (Phase 3):
Build web app (Phase 4):
Testing & optimization (Phase 5):
See /CLAUDE.md for development guidelines and project context.
MIT