APP 4 OF 4 — GEL■■T■RME PROMPTLARI
SafeStack
■laç & Takviye Etkile■im Denetleyici — Geli■tirme Promptlar■
Kullan■m Cursor, Claude Code veya GitHub Copilot ile kullan■n
Dil TypeScript (strict mode) — tüm dosyalar .tsx/.ts
Tarih Nisan 2026
■çindekiler
1. Proje Kurulumu
Expo managed workflow, eri■ilebilirlik zorunluluklar■
2. Veritaban■
SQL migration, SQLite yerel cache, TypeScript tipleri
3. ■laç Veritaban■
RxNorm API, OpenFDA API entegrasyonlar■
4. Etkile■im Analizi
Multi-drug analiz Edge Function, GPT-4o sentezi
5. OCR — ■i■e Tarama
Google Vision + GPT-4o etiket tan■ma pipeline
6. Arayüz Ekranlar■
Dashboard, stack yönetimi, zamanlama takvimi
7. PDF Doktor Raporu
Expo Print ile 5 sayfal■k profesyonel rapor
8. Ödeme Sistemi
RevenueCat, caregiver plan■, paywall
9. Master Prompt
Tüm sistemi tek seferde kuran tam prompt
1. Proje Kurulumu
Managed workflow, eri■ilebilirlik gereksinimleri
■ TIBB■ UYARI: Apple App Store sa■l■k uygulamas■ kurallar■ gere■i her ekranda "Bu uygulama t■bbi
tavsiye de■ildir, doktorunuza dan■■■n" uyar■s■ görünür olmal■d■r. Aksi hâlde uygulama reddedilebilir.
PROMPT — Proje ■skelet Kurulumu
Sen k■demli bir React Native + sa■l■k uygulamalar■ geli■tiricisisin.
"SafeStack" adl■ ilaç etkile■im denetleyici için proje iskeleti olu■tur.
TECH STACK:
- React Native + Expo SDK 51 (managed workflow)
- TypeScript strict mode
- NativeWind v4 (min font 16pt ZORUNLU — ya■l■ kullan■c■)
- Expo Router v3
- Supabase JS v2
- expo-sqlite (yerel ilaç cache — offline eri■im)
- Google Cloud Vision API (ilaç ■i■esi OCR)
- OpenAI GPT-4o (etkile■im sentezi + doktor raporu)
- OpenFDA API + RxNorm API (ücretsiz ABD devlet API'leri)
- Expo Print (PDF olu■turma)
- RevenueCat (abonelik)
ER■■■LEB■L■RL■K ZORUNLULUKLAR:
- Minimum font: 16px (hiçbir yerde alt■na dü■me)
- Minimum buton: 48x48px touch target (Apple HIG)
- Renk kontrast■: WCAG AA
- VoiceOver / TalkBack tam destek
- Dynamic Type deste■i (iOS)
KLASÖR YAPISI:
safestack/
■■■ app/
■ ■■■ (auth)/[Link]
■ ■■■ (tabs)/
■ ■ ■■■ _layout.tsx
■ ■ ■■■ [Link] (dashboard — stack'ler)
■ ■ ■■■ [Link] (ilaç ■i■esi tara)
■ ■ ■■■ [Link] (geçmi■ analizler)
■ ■■■ stack/
■ ■ ■■■ [id].tsx (stack detay + etkile■imler)
■ ■ ■■■ [Link] (yeni stack wizard)
■ ■■■ interaction/[id].tsx
■■■ components/
■ ■■■ ui/ (AccessibleButton, LargeText, SafeCard)
■ ■■■ stack/
■ ■ ■■■ [Link]
■ ■ ■■■ [Link]
■ ■ ■■■ [Link]
■ ■■■ interaction/
■ ■ ■■■ [Link]
■ ■ ■■■ [Link]
■ ■ ■■■ [Link]
■ ■■■ report/
■ ■■■ [Link]
■■■ lib/
■ ■■■ [Link]
■ ■■■ [Link]
■ ■■■ [Link]
■ ■■■ [Link]
■ ■■■ [Link]
■ ■■■ [Link]
■■■ hooks/
■ ■■■ [Link]
■ ■■■ [Link]
■ ■■■ [Link]
■■■ types/[Link]
■■■ supabase/
■■■ migrations/001_initial.sql
■■■ functions/analyze-interactions/[Link]
Her dosya eksiksiz içerikle — bo■ dosya b■rakma.
2. Veritaban■
Supabase PostgreSQL ■emas■ + SQLite yerel ilaç cache
PROMPT — SQL Migration (001_initial.sql)
supabase/migrations/001_initial.sql dosyas■n■ yaz.
TABLOLAR:
1. users:
id: uuid PRIMARY KEY
display_name: text NOT NULL
plan: text DEFAULT 'free' CHECK (plan IN ('free','pro','caregiver'))
font_size_preference: text DEFAULT 'normal' CHECK IN ('normal','large','xlarge')
created_at: timestamptz DEFAULT now()
2. stacks:
id: uuid PRIMARY KEY DEFAULT gen_random_uuid()
user_id: uuid REFERENCES users(id) ON DELETE CASCADE
name: text NOT NULL
person_label: text NULL -- bak■m veren: "Annem", "Babam"
color: text DEFAULT '#378ADD'
created_at: timestamptz DEFAULT now()
updated_at: timestamptz DEFAULT now()
3. stack_items:
id: uuid PRIMARY KEY DEFAULT gen_random_uuid()
stack_id: uuid REFERENCES stacks(id) ON DELETE CASCADE
user_id: uuid REFERENCES users(id) ON DELETE CASCADE
drug_name: text NOT NULL -- normalize edilmi■ jenerik isim
brand_name: text NULL
rxnorm_id: text NULL -- RxNorm CUI
dosage: text NULL -- örn: 10mg, 500mg
frequency: text NULL -- örn: günde bir, günde iki
item_type: text NOT NULL CHECK IN ('prescription','otc','supplement','vitamin')
notes: text NULL
added_at: timestamptz DEFAULT now()
4. interaction_results:
id: uuid PRIMARY KEY DEFAULT gen_random_uuid()
stack_id: uuid REFERENCES stacks(id) ON DELETE CASCADE
user_id: uuid REFERENCES users(id) ON DELETE CASCADE
drug_a: text NOT NULL
drug_b: text NOT NULL
severity: text NOT NULL CHECK IN ('none','minor','moderate','major','contraindicated')
mechanism: text NULL
plain_explanation: text NOT NULL
symptoms_to_watch: text NULL
timing_advice: text NULL
food_interaction: text NULL
data_source: text NOT NULL CHECK IN ('openfda','rxnorm','ai_synthesized')
analysed_at: timestamptz DEFAULT now()
UNIQUE(stack_id, drug_a, drug_b)
5. report_exports:
id: uuid PRIMARY KEY DEFAULT gen_random_uuid()
stack_id: uuid REFERENCES stacks(id)
user_id: uuid REFERENCES users(id)
exported_at: timestamptz DEFAULT now()
format: text DEFAULT 'pdf'
RLS: Tüm tablolarda [Link]() = user_id politikas■
INDEX'LER:
- stacks(user_id)
- stack_items(stack_id)
- interaction_results(stack_id, severity)
- stack_items(rxnorm_id)
PROMPT — SQLite Yerel ■laç Cache
lib/[Link] dosyas■n■ yaz. expo-sqlite kullan■r.
AMAÇ: Offline eri■im için 10.000+ yayg■n ilaç ad■ yerel cache'de.
SQLITE TABLO:
drugs_cache:
rxnorm_id TEXT PRIMARY KEY
generic_name TEXT NOT NULL
brand_names TEXT (JSON array string)
drug_class TEXT
item_type TEXT
last_updated INTEGER (unix timestamp)
FONKS■YONLAR:
- initDatabase(): Uygulama aç■l■nca cache tablosunu olu■tur
- searchDrugs(query: string, limit: number): Drug[]
generic_name LIKE %query% OR brand_names LIKE %query%
Önce tam e■le■me, sonra k■smi
- getDrugByRxNorm(rxnormId: string): Drug | null
- upsertDrug(drug: Drug): void
- clearOldCache(olderThanDays: number): void
BA■LANGIÇ VER■S■:
- assets/drugs_seed.json: 500 en yayg■n ilaç/takviye
(Aspirin, Metformin, Lisinopril, Vitamin D, Magnezyum vb.)
- ■lk aç■l■■ta SQLite'a yükle
- Arka planda RxNorm'dan daha fazla veri indir
hooks/[Link]:
- searchQuery: string
- results: DrugSearchResult[]
- isSearching: boolean
- search(query): debounced 300ms
- Önce SQLite → yoksa RxNorm API → sonucu cache'e yaz
3. ■laç Veritaban■ API'leri
RxNorm ve OpenFDA entegrasyonlar■ — ikisi de ücretsiz ABD devlet API'si
PROMPT — RxNorm & OpenFDA API Entegrasyonu
lib/[Link] dosyas■n■ yaz.
BASE URL: [Link]
FONKS■YONLAR:
1. searchByName(name: string): RxNormResult[]
GET /[Link]?name={name}
Response: rxnormId, name, tty, synonyms
Cache'e yaz
2. getRxCUI(drugName: string): string | null
GET /[Link]?name={name}&search=2
En iyi e■le■me döndür, bulamazsa null
3. getInteractions(rxcuiList: string[]): RxNormInteraction[]
GET /interaction/[Link]?rxcuis={rxcui1+rxcui2+...}
Tüm ilaç çiftleri için etkile■im döndür
4. getDrugDetails(rxcui: string): DrugDetail
GET /rxcui/{rxcui}/[Link]
ERROR HANDLING:
- Rate limiting: 20 istek/saniye s■n■r■
- Retry logic: 3 deneme, exponential backoff
- Network hatas■: cache'den geri dön
- Timeout: 10 saniye
T■PLER:
interface RxNormResult { rxcui, name, tty, synonym }
interface RxNormInteraction { drug_a, drug_b, severity, description, source }
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
lib/[Link] dosyas■n■ yaz.
BASE URL: [Link]
FONKS■YONLAR:
1. getDrugInteractions(drugName: string): OpenFDAInteraction[]
GET /[Link]?search=drug_interactions:{drugName}&limit=5
drug_interactions field'■ndan parse et
2. getDrugWarnings(rxcui: string): string[]
GET /[Link]?search=set_id:{rxcui}
warnings + boxed_warnings döndür
3. searchDrugLabel(query: string): DrugLabel[]
Autocomplete için brand/generic isim arama
PARSING:
- OpenFDA response düzensiz düz metin içerir
- Regex ile ilaç isimlerini ç■kar
- AI sentezi için ham metin olarak tut
4. Etkile■im Analiz Sistemi
Multi-drug pipeline: RxNorm → OpenFDA → GPT-4o sentezi
PROMPT — Etkile■im Analiz Edge Function
supabase/functions/analyze-interactions/[Link] Edge Function yaz.
G■R■■: { stackId: string, drugNames: string[], userId: string }
AKI■ (6 ad■m):
ADIM 1 — RxNorm normalize:
- Her ilaç ismi için getRxCUI() ça■■r
- rxcui_map: { drugName → rxcui } olu■tur
ADIM 2 — Tüm çiftler üret:
- n*(n-1)/2 kombinasyon (örn: 5 ilaç → 10 çift)
- 15+ ilaç ise batch'lere böl
ADIM 3 — RxNorm etkile■im sorgusu:
- GET [Link]/REST/interaction/[Link]?rxcuis=...
- Bulunan etkile■imleri kaydet
ADIM 4 — OpenFDA eksik çiftler için:
- RxNorm'da veri olmayan çiftler için label aramas■
- drug_interactions alan■ndan parse et
ADIM 5 — GPT-4o sentezi (veri yetersiz çiftler):
Prompt:
"Sen klinik eczac■s■n. ■u ilaç çifti için analiz yap:
■laç A: {drugA} ({rxcuiA})
■laç B: {drugB} ({rxcuiB})
Bilinen veri: {existingData}
SADECE JSON döndür:
severity: 'none'|'minor'|'moderate'|'major'|'contraindicated',
mechanism: string (max 30 kelime),
plain_explanation: string (jargonsuz, max 50 kelime),
symptoms_to_watch: string (max 30 kelime),
timing_advice: string|null,
food_interaction: string|null
}"
ADIM 6 — Kaydet:
- interaction_results upsert (çift ba■■na tek kay■t)
- data_source: 'rxnorm' | 'openfda' | 'ai_synthesized'
ÇIKTI:
total_pairs: number,
major_count: number, moderate_count: number,
minor_count: number, contraindicated_count: number,
interactions: InteractionResult[]
PROMPT — Etkile■im Sonuç Ekran■ & Bile■enler
hooks/[Link] ve sonuç bile■enlerini yaz.
hooks/[Link]:
- interactions: InteractionResult[]
- isAnalyzing: boolean
- lastAnalyzedAt: Date | null
- analyzeStack(stackId): Edge Function ça■■r
- getInteractionsByStack(stackId): Supabase'den çek (severity DESC)
- getSeveritySummary(): { major, moderate, minor, none, contraindicated }
- needsReanalysis(stackId): bool (son 24 saatte de■i■iklik var m■)
components/interaction/[Link]:
- Renkler (min 32px yükseklik — ya■l■ kullan■c■):
contraindicated → k■rm■z■, "KONTREND■KE" (büyük)
major → turuncu, "MAJÖR"
moderate → sar■, "ORTA"
minor → mavi, "M■NÖR"
none → ye■il, "ETK■LE■■M YOK"
components/interaction/[Link]:
- SeverityBadge üstte
- ■ki ilaç ismi (büyük, bold)
- plain_explanation (16px)
- Geni■letilebilir bölüm:
mechanism, symptoms_to_watch, timing_advice, food_interaction
- "Doktora Sor" önerilen soru butonu
app/stack/[id].tsx:
- Severity özet banner (majör varsa k■rm■z■ uyar■)
- Etkile■im listesi: majörden minöre
- Zamanlama takvimi görünümü
- "Doktor Raporu Olu■tur" büyük buton (min 56px yükseklik)
5. OCR — ■laç ■i■esi Tarama
Google Cloud Vision + GPT-4o ile etiket tan■ma pipeline
PROMPT — OCR ■laç ■i■esi Tarama
app/(tabs)/[Link] ve OCR pipeline'■n■ yaz.
KAMERA EKRANI (ya■l■ kullan■c■ dostu UI):
- Büyük butonlar (min 60px yükseklik)
- "Etiketi tam çerçeve içine al" yard■mc■ görsel
- Flash otomatik aç■l■r (ilaç ■i■eleri küçük yaz■l■)
- "Galeri" ikinci seçenek
- Accessibility: her buton accessibilityLabel + accessibilityHint
lib/[Link] — extractDrugLabel(imageBase64: string): DragLabelData
ADIM 1: Google Vision TEXT_DETECTION
Endpoint: [Link]
Feature: TEXT_DETECTION
ADIM 2: GPT-4o ile yap■land■r:
Prompt: "Bu ilaç etiketi OCR metninden ■unlar■ ç■kar:
{ drug_name, brand_name, dosage, frequency, item_type, rxnorm_suggestion }
Sadece JSON döndür, ba■ka hiçbir ■ey yazma."
ADIM 3: RxNorm ile rxcui bul (getRxCUI ça■r■s■)
ONAY EKRANI (scan sonras■):
- "Bu do■ru mu?" ba■l■■■ (büyük font)
- Bulunan ilaç ad■ (22px bold)
- Dozaj ve s■kl■k
- ■laç tipi seçici (4 büyük buton)
- "Evet, Ekle" + "Hay■r, Düzenle" butonlar■
MANUEL EKLEME ALTERNAT■F■:
- Arama çubu■u (otomatik tamamlama — SQLite + RxNorm)
- "Taramak zor mu? Elle gir" ba■lant■s■
6. Arayüz Ekranlar■
Dashboard, stack yönetimi, zamanlama takvimi — eri■ilebilir tasar■m
PROMPT — Dashboard & Stack Yönetimi
app/(tabs)/[Link] ve stack yönetimi ekranlar■n■ yaz.
TASARIM PRENS■PLER■ (55+ ya■ hedef kitle):
- Her metin min 16px, ba■l■klar min 20px
- Butonlar min 48x48px touch target
- Yüksek kontrast (beyaz arka plan, koyu metin)
- Basit navigasyon, karma■■k jest yok
- Her ekranda t■bbi disclaimer görünür
ANA DASHBOARD:
- "Merhaba {display_name}" selamlama
- Stack listesi (her biri kart):
* Stack ad■ (büyük, bold)
* person_label: "Senin", "Annen" vb.
* ■laç say■s■
* Son analiz tarihi
* Etkile■im uyar■s■ (k■rm■z■ badge: "2 önemli etkile■im")
* "Analiz Et" butonu
- "Yeni Stack Olu■tur" büyük CTA (renkli, göze çarpan)
components/stack/[Link]:
- Renkli sol kenar ([Link])
- person_label büyük ve net
- Etkile■im uyar■s■ k■rm■z■
app/stack/[Link] (wizard):
- Ad■m 1: Kimin için? (büyük radyo butonlar)
- Ad■m 2: ■sim ver
- Ad■m 3: Renk seç (6 seçenek, büyük daireler)
- Ad■m 4: ■lk ilac■ ekle CTA
components/stack/[Link] (bottom sheet):
- "■i■eyi Tara" / "■sim Yaz" büyük seçimler
- Arama sonuçlar■: 50px yükseklik liste ö■eleri
- Seçince: dozaj ve s■kl■k formu
- Tip: 4 büyük buton (Reçete / OTC / Takviye / Vitamin)
lib/[Link] (zamanlama hesab■):
- frequency'yi parse et: "günde iki" → sabah + ak■am
- timing_advice uygula: "2 saat arayla" → slot ayarla
- Çak■■an ilaçlar■ farkl■ slotlara ta■■
- Sabah / Ö■le / Ak■am / Gece görünümü
7. PDF Doktor Raporu
Expo Print ile 5 sayfal■k profesyonel t■bbi rapor
PROMPT — PDF Doktor Raporu Sistemi
lib/[Link] dosyas■n■ yaz.
Expo Print ile doktor ziyareti için PDF olu■turur.
generateDoctorReportHTML(data: ReportData): string
G■R■■ OBJESI:
- personLabel: string
- stackItems: StackItem[]
- interactions: InteractionResult[]
- timingSchedule: TimingSlot[]
- generatedAt: Date
- doctorQuestions: string[] (GPT-4o üretimi)
HTML ÇIKTI (5 bölüm):
■■ SAYFA 1: ÖZET ■■
[SafeStack logosu placeholder] + "■laç Etkile■im Raporu"
Hasta: {personLabel} | Tarih: {generatedAt}
Toplam ilaç: X | Majör: Y | Orta: Z | Minör: W
Renk kodlu önem band■
■■ SAYFA 2: TAM ■LAÇ L■STES■ ■■
Tablo: ■laç Ad■ | Dozaj | S■kl■k | Tür | Eklenme
Stil: border 1px solid #ccc, font serif, bask■ dostu
■■ SAYFA 3: ETK■LE■■M ANAL■Z■ ■■
Önce majör (k■rm■z■ ba■l■k), sonra orta, minör
Her çift için:
■laç A × ■laç B | ■iddet badge
Mekanizma (teknik — doktor okuyacak)
Belirtiler
■■ SAYFA 4: ZAMANLAMA TAKV■M■ ■■
Sabah / Ö■le / Ak■am / Gece tablosu
Her slot: ilaç ad■, dozaj, özel notlar
■■ SAYFA 5: DOKTORA SORULAR ■■
GPT-4o ile üret (lib/[Link]):
generateDoctorQuestions(stackItems, interactions):
Prompt: "Bu ilaç listesi ve etkile■im verisine göre
doktora sorulacak 5 önemli soru üret.
K■sa ve net sorular, JSON array döndür.
Veri: {JSON}"
PRINT ÇA■RISI:
const { uri } = await [Link]({ html: reportHTML })
await [Link](uri)
ST■L:
- Beyaz arka plan, siyah metin (bask■ dostu)
- Tablo: border-collapse, 1px solid #ccc
- Font: Georgia, serif
- Sayfa marjini: 2.5cm
- Her sayfada: "Bu rapor SafeStack ile olu■turulmu■tur. T■bbi tavsiye de■ildir."
footer
8. Ödeme Sistemi
RevenueCat — sa■l■k uygulamalar■ en yüksek ödeme isteklili■ine sahip segment
PROMPT — RevenueCat & Paywall
lib/[Link] ve paywall sistemini yaz.
PLANLAR (RevenueCat Dashboard'da tan■mla):
- safestack_free (ücretsiz)
- safestack_pro_monthly ($6.99/ay)
- safestack_caregiver_monthly ($9.99/ay)
- safestack_annual ($54/y■l)
FREEM■UM KISITLAMALARI:
- Free: 1 stack, max 5 ilaç, temel kontrol, PDF yok
- Pro: S■n■rs■z stack ve ilaç, tam analiz, PDF rapor, zamanlama, yiyecek
- Caregiver: 5 stack (farkl■ ki■iler için), de■i■iklik uyar■lar■, dashboard
- Annual: Pro + %36 indirim
hooks/[Link]:
- canCreateStack(): boolean (free: max 1)
- canAddItem(): boolean (free: max 5)
- canExportPDF(): boolean
- canSeeFoodInteractions(): boolean
- canUseCaregiver(): boolean
- showPaywall(reason: string): void
components/[Link] (ya■l■ kullan■c■ dostu):
- BÜYÜK FONT (min 18px)
- Basit dil: "Tüm ilaçlar■n■ kontrol et"
- 3 plan, her biri neyi kaps■yor net belirt
- Y■ll■k plan■ vurgula
- "Aileni de koru" → Caregiver plan■
- Gizlilik güvencesi: "Verileriniz asla sat■lmaz"
- Restore Purchases butonu (büyük, görünür)
K■s■tlama tetikleyicileri:
- 2. stack olu■turulunca → paywall
- 6. ilaç eklenince → paywall
- PDF rapor butonuna bas■l■nca → paywall
- Caregiver özelli■i kullan■l■nca → paywall
RevenueCat webhook → Supabase Edge Function → [Link] güncelle
9. Master Prompt
Tüm SafeStack sistemini tek seferde kuran tam prompt
Cursor Composer veya Claude Code'da yeni session aç■n, a■a■■daki promptu yap■■t■r■n. Her dosya eksiksiz
teslim edilecektir.
MASTER PROMPT — Tüm SafeStack Sistemi
Sen k■demli bir React Native + sa■l■k uygulamalar■ geli■tiricisisin.
"SafeStack" adl■ ilaç ve takviye etkile■im denetleyici uygulamas■n■ tam in■a et.
■■■ UYGULAMA AMACI ■■■
Birden fazla ilaç/takviye kullanan ki■ilerin (özellikle 55+ ya■)
ilaç etkile■imlerini kontrol edebildi■i, doktor için PDF rapor
olu■turabildi■i mobil uygulama.
■■■ TECH STACK ■■■
• React Native + Expo SDK 51 (managed workflow)
• TypeScript strict mode
• NativeWind v4 (min 16px font ZORUNLU)
• Expo Router v3
• Supabase (auth + PostgreSQL + edge functions)
• expo-sqlite (yerel ilaç cache — offline)
• RxNorm API (ilaç normalize + rxcui) — ücretsiz
• OpenFDA API (ABD ilaç etkile■im veritaban■) — ücretsiz
• Google Cloud Vision API (ilaç ■i■esi etiketi OCR)
• OpenAI GPT-4o (etkile■im sentezi + doktor sorular■)
• Expo Print (PDF olu■turma)
• RevenueCat (abonelik)
■■■ ER■■■LEB■L■RL■K ZORUNLULUKLAR ■■■
- Min font: 16px (istisna yok)
- Min buton: 48x48px touch target
- WCAG AA kontrast
- VoiceOver/TalkBack deste■i
- Her ekranda t■bbi disclaimer
■■■ VER■TABANI TABLOLARI ■■■
users: id, display_name, plan(free/pro/caregiver), font_size_preference
stacks: id, user_id, name, person_label, color
stack_items: id, stack_id, user_id, drug_name, brand_name,
rxnorm_id, dosage, frequency, item_type
interaction_results: id, stack_id, user_id, drug_a, drug_b,
severity, mechanism, plain_explanation, symptoms_to_watch,
timing_advice, food_interaction, data_source
report_exports: id, stack_id, user_id, exported_at, format
Tüm tablolarda RLS.
■■■ ETK■LE■■M ANAL■Z PIPELINE ■■■
Edge Function (analyze-interactions):
1. RxNorm: her ilaç → rxcui bul
2. RxNorm API: tüm ilaç çiftleri için etkile■im sorgula
3. OpenFDA: RxNorm'da eksik kalan çiftler
4. GPT-4o: veri yetersiz çiftler için klinik eczac■ sentezi
5. interaction_results upsert
6. Özet döndür: major/moderate/minor/contraindicated say■lar■
■■■ OCR PIPELINE ■■■
1. Kamera / galeri → görsel
2. Google Vision TEXT_DETECTION
3. GPT-4o → drug_name, dosage, frequency, item_type
4. RxNorm → rxcui e■le■tir
5. Kullan■c■ya onay ekran■
■■■ EKRANLAR ■■■
(auth)/[Link]
(tabs)/[Link] — stack dashboard, etkile■im uyar■lar■
(tabs)/[Link] — kamera + OCR ak■■■
(tabs)/[Link] — geçmi■ analizler
stack/[Link] — wizard: kimin için, isim, renk, ilk ilaç
stack/[id].tsx — detay, etkile■im listesi, zamanlama
interaction/[id].tsx — tek etkile■im detay
■■■ PDF RAPOR (5 SAYFA) ■■■
Sayfa 1: Özet (ki■i, tarih, say■lar)
Sayfa 2: ■laç listesi tablosu
Sayfa 3: Etkile■im analizi (majörden minöre)
Sayfa 4: Günlük zamanlama takvimi
Sayfa 5: AI üretimi "Doktora sorun" sorular■
Footer: "Bu rapor SafeStack ile olu■turulmu■tur. T■bbi tavsiye de■ildir."
■■■ FREEM■UM ■■■
Free ($0): 1 stack, max 5 ilaç, PDF yok
Pro ($6.99/ay): S■n■rs■z, tam analiz, PDF, zamanlama
Caregiver ($9.99): 5 ki■i stack'i, bak■m veren paneli
Annual ($54/y■l): Pro + %36 indirim
■■■ TIBB■ DISCLAIMER (HER EKRANDA) ■■■
"Bu uygulama t■bbi tavsiye de■ildir.
De■i■iklik yapmadan önce doktorunuza veya eczac■n■za dan■■■n."
■■■ ÇIKTI (eksiksiz teslim et) ■■■
1. Tüm klasör yap■s■ ve dosya içerikleri
2. SQL migration (RLS dahil)
3. Supabase Edge Function (analyze-interactions — tam)
4. lib/: [Link], [Link], [Link], [Link], [Link]
5. hooks/: [Link], [Link], [Link]
6. Tüm UI bile■enleri (eri■ilebilir, büyük font)
7. PDF rapor HTML template (5 sayfa)
8. Paywall sistemi
TypeScript strict, production-ready, TODO yok, disclaimer her ekranda.