{"slug": "sample-mvp-plan-prompt", "title": "Sample MVP Plan Prompt", "summary": "A developer created an MVP plan for 'Ne Pişirsem?', an Expo React Native app that helps users find recipes based on ingredients they have at home. The first version includes features like recipe search, ingredient management, shopping list, and step-by-step cooking mode, using local mock data and technologies such as Zustand, Zod, and Expo SQLite.", "body_md": "Bu repository için “Ne Pişirsem?” adlı Expo React Native mobil uygulamasının MVP planını hazırla.\n\nHenüz uygulama kaynak kodu yazma veya mevcut uygulama dosyalarını değiştirme.\n\nÖnce aşağıdaki dosyaları oku:\n\n`CLAUDE.md`\n\n`.claude/agents/architect.md`\n\n`.claude/skills/project-conventions/SKILL.md`\n\n`docs/architecture.md`\n\n`docs/agent-workflow.md`\n\n`tasks/task.schema.json`\n\nRepository’nin gerçek yapısını incele. Paket yöneticisi, Expo sürümü, routing sistemi, lint ve test komutları gibi bilgileri mevcut dosyalardan tespit et. Bilgi uydurma.\n\nUygulamanın adı:\n\n**Ne Pişirsem?**\n\nKullanıcı, evinde bulunan malzemeleri kaydeder. Uygulama bu malzemelerle hazırlanabilecek yemek tariflerini eşleşme oranına göre gösterir.\n\nKullanıcı eksik malzemeleri alışveriş listesine ekleyebilir, tarifleri favorileyebilir ve adım adım pişirme modunu kullanabilir.\n\nİlk sürümde aşağıdaki özellikler bulunmalı:\n\n- Ana sayfada tarif listesi\n- Tarif arama\n- Kategoriye göre filtreleme\n- Tarif detay ekranı\n- Evdeki malzemeleri yönetme\n- Tariflerin malzemelerle eşleşme yüzdesini gösterme\n- Eksik malzemeleri gösterme\n- Eksik malzemeleri alışveriş listesine ekleme\n- Alışveriş listesindeki ürünleri işaretleme ve silme\n- Tarifleri favorilere ekleme\n- Favori tarifleri listeleme\n- Porsiyon sayısını değiştirme\n- Malzeme miktarlarını porsiyona göre hesaplama\n- Adım adım pişirme modu\n- Uygulama verilerini cihazda saklama\n- Temel unit ve component testleri\n\nİlk sürümde aşağıdakileri ekleme:\n\n- Kullanıcı hesabı\n- Authentication\n- Backend\n- Supabase\n- Firebase\n- Harici tarif API’si\n- AI entegrasyonu\n- Kamera\n- Fotoğraftan malzeme algılama\n- Push notification\n- Sosyal özellikler\n- Ödeme\n- Reklam\n- Analytics\n- Cloud synchronization\n- Çoklu dil desteği\n\nTarif verileri repository içinde bulunan yerel, deterministik ve typed mock data üzerinden sağlanmalı.\n\nRepository’nin mevcut yapısı aksini gerektirmiyorsa şu teknolojileri kullan:\n\n- Expo\n- React Native\n- TypeScript\n- Expo Router\n- Zustand\n- Zod\n- Expo SQLite veya uygun bir Expo local storage çözümü\n- React Native Testing Library\n- Jest\n\nYeni dependency eklenmesi gereken her durumda:\n\n- Dependency adını belirt.\n- Neden gerektiğini açıkla.\n- Mevcut dependency ile çözülemeyeceğini doğrula.\n- Plan aşamasında dependency yükleme.\n\nUygulama modern, temiz ve sıcak bir yemek uygulaması görünümünde olmalı.\n\nTemel tasarım yaklaşımı:\n\n- Açık renkli arka plan\n- Sıcak turuncu ve yeşil vurgu renkleri\n- Büyük yemek görselleri\n- Yuvarlatılmış tarif kartları\n- Kolay okunabilir tipografi\n- Belirgin kategori chip’leri\n- Büyük ve erişilebilir dokunma alanları\n- Loading, empty ve error state’leri\n- Küçük ekranlarda taşmayan responsive düzen\n\nHenüz ayrıntılı görsel tasarım üretme. Yalnızca design token ve ortak UI bileşenlerinin planını çıkar.\n\nEn az şu ekranları planla:\n\n```\nHome\nSearch\nRecipe Details\nPantry\nShopping List\nFavorites\nCooking Mode\nSettings\n```\n\nSettings ekranı yalnızca yerel verileri sıfırlama ve uygulama hakkında bilgisi içerebilir.\n\nTab navigation için şu alanları değerlendir:\n\n```\nAna Sayfa\nMalzemelerim\nAlışveriş\nFavoriler\n```\n\nRecipe Details ve Cooking Mode ekranları tab dışında stack ekranı olabilir.\n\nRepository’nin mevcut routing yapısına göre kesin navigation planını oluştur.\n\nEn az aşağıdaki domain modellerini planla:\n\n```\ntype IngredientCategory =\n  | \"vegetable\"\n  | \"fruit\"\n  | \"meat\"\n  | \"dairy\"\n  | \"grain\"\n  | \"legume\"\n  | \"spice\"\n  | \"other\";\n\ntype Ingredient = {\n  id: string;\n  name: string;\n  normalizedName: string;\n  category: IngredientCategory;\n};\n\ntype MeasurementUnit =\n  | \"g\"\n  | \"kg\"\n  | \"ml\"\n  | \"l\"\n  | \"piece\"\n  | \"tbsp\"\n  | \"tsp\"\n  | \"cup\"\n  | \"slice\";\n\ntype RecipeIngredient = {\n  ingredientId: string;\n  amount: number;\n  unit: MeasurementUnit;\n  optional?: boolean;\n  note?: string;\n};\n\ntype RecipeStep = {\n  id: string;\n  order: number;\n  instruction: string;\n  timerSeconds?: number;\n};\n\ntype RecipeCategory =\n  | \"breakfast\"\n  | \"soup\"\n  | \"main\"\n  | \"salad\"\n  | \"dessert\"\n  | \"snack\";\n\ntype Recipe = {\n  id: string;\n  title: string;\n  description: string;\n  category: RecipeCategory;\n  image: string;\n  servings: number;\n  prepMinutes: number;\n  cookMinutes: number;\n  difficulty: \"easy\" | \"medium\" | \"hard\";\n  ingredients: RecipeIngredient[];\n  steps: RecipeStep[];\n};\n\ntype PantryItem = {\n  ingredientId: string;\n  quantity?: number;\n  unit?: MeasurementUnit;\n};\n\ntype ShoppingListItem = {\n  id: string;\n  ingredientId: string;\n  amount?: number;\n  unit?: MeasurementUnit;\n  checked: boolean;\n  sourceRecipeIds: string[];\n};\n\ntype FavoriteRecipe = {\n  recipeId: string;\n  createdAt: string;\n};\n```\n\nModellerde değişiklik yapabilirsin ancak her değişikliğin gerekçesini dokümante et.\n\nMalzeme eşleştirmesi görünen ad üzerinden değil, `ingredientId`\n\nüzerinden yapılmalı.\n\nMock data hazırlanırken:\n\n- Aynı malzemenin farklı yazımları ayrı kayıtlar oluşturmamalı.\n- Türkçe karakterler korunmalı.\n- Görünen ad ile normalize edilmiş ad ayrılmalı.\n- Kullanıcıya gösterilen metinler Türkçe olmalı.\n\nİlk sürümde synonym veya fuzzy matching yapma.\n\nİlk sürüm için basit ve deterministik bir algoritma kullan:\n\n```\neşleşme yüzdesi =\npantry içinde bulunan zorunlu malzeme sayısı\n/\ntarifte bulunan toplam zorunlu malzeme sayısı\n× 100\n```\n\nKurallar:\n\n- Opsiyonel malzemeler skoru etkilememeli.\n- Miktar yeterliliği ilk sürümde hesaplanmamalı.\n- Eşleşme\n`ingredientId`\n\nüzerinden yapılmalı. - Sonuç 0–100 arasında tam sayı olmalı.\n- Tarifin zorunlu malzemesi yoksa bölme hatası oluşmamalı.\n- Eksik malzemeler ayrıca döndürülmeli.\n- Algoritma UI’dan bağımsız pure function olmalı.\n\nÖnerilen çıktı:\n\n```\ntype RecipeMatchResult = {\n  percentage: number;\n  matchedIngredientIds: string[];\n  missingIngredientIds: string[];\n  requiredIngredientCount: number;\n  matchedIngredientCount: number;\n};\n```\n\nTarifin temel porsiyon değeri üzerinden malzeme miktarlarını hesaplayan pure function planla.\n\nÖrnek:\n\n```\ntemel porsiyon: 2\nseçilen porsiyon: 4\ntemel tavuk miktarı: 300 g\nhesaplanan miktar: 600 g\n```\n\nKurallar:\n\n- Sonuçlar negatif veya sıfır olmamalı.\n- Floating point gösterimi kullanıcı dostu olmalı.\n- Domain hesabı ile görsel formatlama ayrılmalı.\n- Orijinal recipe verisi mutate edilmemeli.\n\nState’i en az şu alanlara ayırmayı değerlendir:\n\n```\npantry\nshoppingList\nfavorites\nrecipeFilters\ncookingSession\n```\n\nServer state bulunmadığı için TanStack Query kullanılması zorunlu değil.\n\nKalıcı ve geçici state’i ayır:\n\nKalıcı:\n\n- Pantry\n- Shopping list\n- Favorites\n\nGeçici:\n\n- Search query\n- Category filter\n- Seçili porsiyon\n- Cooking mode aktif adımı\n\nStorage katmanı UI’dan bağımsız olmalı.\n\nŞunları planla:\n\n- Storage adapter interface\n- Typed serialization\n- Başlangıçta hydrate işlemi\n- Bozuk veya eski veride güvenli fallback\n- Storage version alanı\n- Gelecekte migration eklenebilecek yapı\n- Uygulama verilerini sıfırlama\n\nMVP için gereksiz karmaşık migration sistemi oluşturma.\n\nİlk sürüm için 12–20 adet Türkçe tarif planla.\n\nTarifler farklı kategorilerden olmalı:\n\n- Kahvaltı\n- Çorba\n- Ana yemek\n- Salata\n- Tatlı\n- Atıştırmalık\n\nMock data şu senaryoları kapsamalı:\n\n- Pantry ile tamamen eşleşen tarif\n- Tek malzemesi eksik tarif\n- Birden fazla malzemesi eksik tarif\n- Opsiyonel malzemesi bulunan tarif\n- Timer içeren cooking step\n- Timer içermeyen cooking step\n- Farklı porsiyon sayıları\n- Farklı zorluk seviyeleri\n\nPlan aşamasında tüm tarif içeriklerini yazmak zorunda değilsin. Mock data üretimi için ayrı görev oluştur.\n\nPlanı şu prensiplere göre oluştur:\n\n- Feature-based klasörleme\n- Domain logic ile UI ayrımı\n- Küçük ve tekrar kullanılabilir component’ler\n- Pure domain functions\n- Typed navigation\n- UI’dan bağımsız storage\n- Deterministik mock data\n- Test edilebilir state işlemleri\n- Dependency inversion yalnızca gerçekten faydalıysa\n- Gereksiz abstraction oluşturmama\n- Barrel export kullanımını sınırlı tutma\n- Feature’lar arasında kontrolsüz çapraz bağımlılık oluşturmama\n- Mevcut Expo ve React Native standartlarına uyma\n\nÖrnek klasör yapısını repository’ye göre değerlendir:\n\n```\napp/\nsrc/\n  components/\n  features/\n    recipes/\n    pantry/\n    shopping-list/\n    favorites/\n    cooking/\n  domain/\n  storage/\n  theme/\n  test/\n```\n\nBunu doğrudan kabul etme. Repository’nin mevcut yapısını analiz ederek uygun klasör yapısını öner.\n\nEn az şu bileşenlerin gerekip gerekmediğini değerlendir:\n\n```\nScreen\nAppText\nAppButton\nIconButton\nRecipeCard\nIngredientRow\nCategoryChip\nSearchInput\nEmptyState\nErrorState\nLoadingState\nSectionHeader\nQuantityStepper\nMatchBadge\nCheckboxRow\n```\n\nHer bileşen ayrı görev olmak zorunda değil. İlgili ve birbirine yakın bileşenleri aynı görev altında grupla.\n\nEn az şu test alanlarını kapsa:\n\n- Malzeme eşleşme algoritması\n- Eksik malzeme hesaplama\n- Opsiyonel malzeme davranışı\n- Boş zorunlu malzeme listesi\n- Porsiyon hesaplama\n- Storage serialization\n- State action’ları\n\n- Tarif kartı render\n- Arama ve filtreleme\n- Pantry’ye malzeme ekleme\n- Eksik malzemeyi alışveriş listesine ekleme\n- Favori butonu\n- Porsiyon stepper\n- Cooking mode adım geçişi\n- Empty state\n\nTest komutlarını repository’de mevcut olan gerçek script’lere göre belirle. Bulunmayan komutları gerçekmiş gibi yazma.\n\nGörevlerin acceptance criteria alanlarına uygun yerlerde şunları ekle:\n\n- Dokunulabilir alanlar için accessibility label\n- Butonlar için uygun role\n- Salt renge dayalı durum anlatımından kaçınma\n- Dinamik metin boyutunda kullanılabilir layout\n- Görsellere uygun accessibility açıklaması\n- Form ve arama alanlarında erişilebilir etiketler\n\nArchitect olarak işi küçük ve uygulanabilir görevlere böl.\n\nHer görev:\n\n`tasks/task.schema.json`\n\nile uyumlu olmalı.- Tek bir ana sorumluluğa sahip olmalı.\n- Mümkünse 1–5 dosyalık değişiklik içermeli.\n- Açık ve test edilebilir acceptance criteria içermeli.\n- İzin verilen dosya veya glob sınırlarını belirtmeli.\n- Yasaklanan dosya veya glob sınırlarını belirtmeli.\n- Gerçek doğrulama komutlarını belirtmeli.\n- Bağımlılıklarını açıkça tanımlamalı.\n- Uygun agent’a atanmalı.\n- Aynı dosyayı değiştirecek paralel görevler üretmemeli.\n- Gereksiz refactor içermemeli.\n- Yeni dependency gerekiyorsa riski belirtmeli.\n- En fazla 2 otomatik denemeye izin vermeli.\n\nVarsayılan eş zamanlı implementation worker sayısı en fazla 3 olsun.\n\nEn az şu alanları kapsayan görevler üret:\n\n- Proje klasör yapısı ve temel mimari\n- Tema ve design token’ları\n- Ortak UI bileşenleri\n- Ingredient ve Recipe domain modelleri\n- Mock ingredient ve recipe verileri\n- Recipe repository\n- Tarif listeleme\n- Tarif arama\n- Kategori filtresi\n- Tarif detay ekranı\n- Pantry state ve ekranı\n- Malzeme eşleşme algoritması\n- Eşleşme oranlarının tarif listesine entegrasyonu\n- Alışveriş listesi state ve ekranı\n- Eksik malzemeleri alışveriş listesine ekleme\n- Favoriler state ve ekranı\n- Porsiyon hesaplama\n- Cooking mode\n- Local persistence\n- Settings ve local data reset\n- Unit testleri\n- Component testleri\n- Accessibility review\n- Final integration ve review\n\nGörev sayısını yapay biçimde artırma. Birbirine çok yakın küçük işleri tek görevde birleştirebilirsin.\n\n- Aynı dosyayı değiştiren görevler paralel olamaz.\n- Ortak type dosyaları tamamlanmadan ilgili feature görevleri başlamamalı.\n- Ortak UI altyapısı tamamlanmadan ekran görevleri başlamamalı.\n- State ve domain görevleri mümkün olduğunda UI görevlerinden önce tamamlanmalı.\n- Test worker, ilgili implementation tamamlanmadan implementation dosyasını değiştirmemeli.\n- Final integration bütün feature görevlerinden sonra çalışmalı.\n- Reviewer production kodu değiştirmemeli.\n\nYalnızca aşağıdaki plan ve dokümantasyon dosyalarını oluştur:\n\n```\ndocs/product-spec.md\ndocs/mvp-architecture.md\ndocs/task-dependency-graph.md\ndocs/testing-strategy.md\ntasks/task-index.json\ntasks/TASK-001.json\ntasks/TASK-002.json\ntasks/TASK-003.json\n...\n```\n\nUygulama kaynak kodunu değiştirme.\n\nŞunları içersin:\n\n- Ürün amacı\n- Hedef kullanıcı\n- Problem tanımı\n- MVP özellikleri\n- Kapsam dışı özellikler\n- Ana kullanıcı akışları\n- Ekranlar\n- Domain kuralları\n- Başarı kriterleri\n- Bilinen sınırlamalar\n\nŞunları içersin:\n\n- Repository analizi\n- Önerilen klasör yapısı\n- Navigation\n- Domain katmanı\n- State yönetimi\n- Storage katmanı\n- Mock repository\n- UI bileşenleri\n- Veri akışları\n- Error ve empty state yaklaşımı\n- Dependency değerlendirmesi\n- Mimari riskler\n\nŞunları içersin:\n\n- Mermaid dependency graph\n- Kritik bağımlılık zinciri\n- Paralel çalışabilecek görev grupları\n- Conflict riski taşıyan görevler\n- Önerilen execution dalgaları\n\nÖrnek dalgalar:\n\n```\nWave 1\n- Foundation\n- Domain models\n- Theme\n\nWave 2\n- Mock data\n- UI components\n- Storage adapter\n\nWave 3\n- Recipe list\n- Pantry\n- Favorites\n```\n\nGerçek dalgaları oluşturulan görevlere göre belirle.\n\nŞunları içersin:\n\n- Unit test kapsamı\n- Component test kapsamı\n- Mock yaklaşımı\n- Storage test yaklaşımı\n- Navigation test yaklaşımı\n- Accessibility kontrolü\n- Test komutları\n- MVP için kapsam dışı test türleri\n\nŞunları içersin:\n\n- Tüm görevlerin sırası\n- Başlıkları\n- Atanan agent\n- Bağımlılıkları\n- Paralel çalışma grubu\n- Risk seviyesi\n- Tahmini değişiklik alanları\n- Durum\n- Önerilen execution wave\n\nDosyaları oluşturduktan sonra:\n\n- Bütün task JSON dosyalarını parse et.\n- Her task dosyasını\n`tasks/task.schema.json`\n\nile doğrula. - Her dependency ID’sinin gerçekten var olduğunu kontrol et.\n- Circular dependency olmadığını kontrol et.\n- Paralel görevlerin\n`filesAllowed`\n\nalanlarının çakışmadığını kontrol et. - Aynı görevin hem dependency hem paralel grup içinde yanlış tanımlanmadığını kontrol et.\n- Task index ile task dosyalarının tutarlı olduğunu doğrula.\n`git diff --stat`\n\nçalıştır.- Uygulama kaynak kodunun değişmediğini doğrula.\n\nSorun varsa düzelt ve doğrulamaları yeniden çalıştır.\n\nİşlem sonunda şunları raporla:\n\n- Önerilen mimari\n- Toplam görev sayısı\n- Kritik bağımlılık zinciri\n- Execution wave’leri\n- İlk paralel çalışabilecek görevler\n- En riskli görevler\n- Yeni dependency önerileri\n- Repository’de doğrulanamayan varsayımlar\n- İlk uygulanması önerilen üç görev\n- Çalıştırılan doğrulamalar\n\nKod yazma. Yalnızca ürün specification’ı, mimari plan, test stratejisi ve görev dosyalarını oluştur.", "url": "https://wpnews.pro/news/sample-mvp-plan-prompt", "canonical_source": "https://gist.github.com/zaferayan/8bc328cdba7004d3d0d9ee82b145b120", "published_at": "2026-07-21 14:17:00+00:00", "updated_at": "2026-07-21 15:19:39.118261+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["Ne Pişirsem?", "Expo", "React Native", "Zustand", "Zod", "Expo SQLite"], "alternates": {"html": "https://wpnews.pro/news/sample-mvp-plan-prompt", "markdown": "https://wpnews.pro/news/sample-mvp-plan-prompt.md", "text": "https://wpnews.pro/news/sample-mvp-plan-prompt.txt", "jsonld": "https://wpnews.pro/news/sample-mvp-plan-prompt.jsonld"}}