Claude Code ile Web ve Mobil Uygulama Geliştirme
Teknik bilgisi olmayan katılımcıların 16 saat içinde canlı bir web uygulaması geliştirip yayına aldığı ve mobil uygulamasını App Store ile Google Play’e gönderdiği uygulamalı eğitim programı.
- Süre
- 16 saat, 4 modül
- Hedef kitle
- Teknik bilgisi olmayan kullanıcılar
- Yöntem
- %80 uygulama, tek proje üzerinden
- Odak
- Canlıya alma ve mağaza yayını
Program akışı
Temeller ve ilk ürün
Terminal, Claude Code, ilk sayfa, GitHub
Web uygulaması ve canlıya alma
Veritabanı, giriş, Vercel, alan adı
Mobil uygulama
Expo, telefonda test, uygulama kimliği
Mağazalara yayın
EAS Build, TestFlight, Google Play
Saat saat program
Bir saate tıklayın
Kutucuklardan birini seçerek o saatte ne yapıldığını görebilirsiniz.
Girişli, veritabanlı, kendi linkinde herkese açık.
Web’le aynı verileri gösteren iOS ve Android sürümü.
TestFlight ve Google Play testinde kurulu, incelemeye gönderilmiş.
Genel bakış
Eğitim 4 modülden oluşur ve her modül 4 saattir. Sürenin en az %80’i uygulamadır; hiçbir teori bloğu 15 dakikayı geçmez.
Hedef kitle. Bilgisayar ve internet kullanabilen, ancak teknik bilgisi olmayan kişiler: girişimciler, küçük işletme sahipleri, ürün yöneticileri, öğrenciler ve meslek değiştirmek isteyenler.
Yaklaşım. Katılımcı kod yazmayı değil, Claude Code’a ne istediğini net anlatmayı, çıkan sonucu kontrol etmeyi ve ürünü yayına almayı öğrenir. Her kavram ihtiyaç duyulduğu anda, tek cümleyle ve bir benzetmeyle anlatılır.
Eğitim projesi: Alışkanlık Takipçisi. Tüm eğitim boyunca tek bir ürün geliştirilir. Kullanıcı giriş yapar, alışkanlık ekler (örneğin “günde 2 litre su”), her gün işaretler ve kaç gündür üst üste yaptığını görür. Web ve mobil sürüm aynı veritabanını kullanır; katılımcı “tek ürün, iki platform” fikrini yaşayarak öğrenir.
Öğrenme kazanımları
- Claude Code’u kurar, terminalde güvenle açar ve projesini Türkçe komutlarla yönetir.
- Amaç, bağlam, kısıt ve kabul kriteri içeren iyi bir prompt yazar.
- Claude Code’un yaptığı değişiklikleri okur, onaylar veya geri alır.
- Git ve GitHub ile projesini sürümler ve yedekler.
- Veritabanlı, girişli bir web uygulamasını Vercel’de canlıya alır.
- Aynı ürünün mobil sürümünü Expo ile geliştirip telefonunda test eder.
- EAS Build ile iOS ve Android paketlerini derleyip mağazalara gönderir.
- Bir hatayı okuyup Claude Code’a doğru aktararak çözer.
- Claude Code’u MCP ile dış servislere bağlar ve tekrar eden işler için kendi komutunu yazar.
Teknik yığın
Araçlar, yeni başlayan biri için en az kurulum ve en az ücretle ilerlenecek şekilde seçildi.
| Katman | Araç | Neden bu araç |
|---|---|---|
| Yapay zekâ geliştirici | Claude Code | Doğal dilde komutla dosya oluşturur, kod yazar, komut çalıştırır |
| Web uygulaması | Next.js | Vercel ile kolayca canlıya çıkar, sektör standardı |
| Veritabanı ve giriş | Supabase | Ücretsiz katman, hazır kullanıcı girişi, görsel panel |
| Web yayını | Vercel | GitHub’a her gönderimde otomatik yayın |
| Kod deposu | Git + GitHub | Yedekleme, sürüm geçmişi, Vercel ve EAS bağlantısı |
| Mobil uygulama | Expo (React Native) | Expo Go ile telefonda anında test, Mac gerektirmez |
| Mobil derleme ve gönderim | EAS Build + EAS Submit | Bulutta derleme, mağazalara komutla gönderim |
Eğitim öncesi hazırlık
Mağaza hesaplarının onayı günler sürebildiği için hazırlık listesi eğitimden en az 1 hafta önce gönderilir. Eğitmen, eğitimden 2 gün önce herkesle 30 dakikalık çevrim içi bir kurulum kontrolü yapar.
Katılımcı
- Dizüstü bilgisayar (Windows 10/11 veya macOS), en az 8 GB RAM
- Akıllı telefon (iPhone veya Android) ve kablosu
- Ücretli Claude planı (Claude Code erişimi için)
- GitHub, Vercel, Supabase ve Expo hesapları (ücretsiz)
- Telefona Expo Go uygulaması
- Apple Developer Program üyeliği (yıllık ücretli, onayı birkaç gün sürebilir)
- Google Play Console hesabı (tek seferlik ücret, kimlik doğrulaması)
- İsteğe bağlı: kendi alan adı
Mağaza hesabı açmak istemeyen katılımcı Modül 4’te eğitmenin demo hesabındaki gönderimi izler ve kendi derlemesini hazır hale getirir. Hesap açıldığında tek komutla gönderebilir.
Eğitmen
- Örnek projenin her modül sonu hali GitHub’da ayrı dalda:
modul-1-son,modul-2-son… Geride kalan katılımcı buradan devam eder. - Demo Apple ve Google hesaplarında örnek uygulama önceden yayında
- Google Play kapalı test grubu hazır. Yeni kişisel hesaplarda üretime çıkmadan önce kapalı test zorunludur (son bilinen kural: 12 testçi, 14 gün; eğitim öncesi kontrol edilir). Katılımcılar birbirinin testçisi olur.
- Yedek internet, yedek Claude hesabı, ekran paylaşımı testi
- Claude Code güncel sürümde; komut kartı
/helpçıktısıyla, MCP komutları servislerin güncel dokümanıyla karşılaştırıldı - Katılımcı başına prompt kartı ve sözlük kartı
- 12 kişiyi aşan gruplarda bir asistan
Temeller ve ilk ürün
Katılımcı Claude Code ile ilk web sayfasını oluşturur, kendi bilgisayarında açar ve GitHub’a yedekler. Bu modülün asıl hedefi teknik korkuyu kırmaktır.
Restoran benzetmesi. Ön yüz salondur, arka yüz mutfaktır, veritabanı kilerdir, sunucu ve alan adı restoranın adresidir. Claude Code siparişi alıp mutfakta pişiren aşçıdır; restoranın sahibi sizsiniz.
Akış
| Zaman | Süre | Etkinlik | Tür |
|---|---|---|---|
| 00:00 | 20 dk | Açılış: eğitmen yayındaki örnek uygulamayı telefonunda gösterir. Katılımcılar uygulama fikirlerini bir cümleyle paylaşır. | Motivasyon |
| 00:20 | 15 dk | Restoran benzetmesiyle bir uygulamanın parçaları | Kavram |
| 00:35 | 20 dk | Terminal: klasörde gezinmek, klasör açmak, listelemek. Alıştırma: Masaüstünde egitim klasörü. | Uygulama |
| 00:55 | 30 dk | Claude Code kurulumu, hesapla giriş, claude --permission-mode manual komutuyla ilk açılış. İlk gün manuel modda çalışılır ki katılımcı her izin isteğini görsün. | Uygulama |
| 01:25 | 10 dk | Mola | |
| 01:35 | 30 dk | İlk sohbet: soru sormak, izin isteklerini okumak, /init ile proje hafıza dosyası (CLAUDE.md) | Uygulama |
| 02:05 | 15 dk | Claude Code kokpiti: temel komutlar ve kısayollar kartı. Durdurmak, geri sarmak, mod değiştirmek, dosya göstermek, ekran görüntüsüyle hata göstermek. | Uygulama |
| 02:20 | 30 dk | İlk ürün: Alışkanlık Takipçisi’nin tanıtım sayfası. Oluştur, tarayıcıda aç, üç tur iyileştir. | Uygulama |
| 02:50 | 10 dk | Mola | |
| 03:00 | 25 dk | İyi prompt formülü ve plan modu; katılımcı sayfasına yeni bölüm ekler | Uygulama |
| 03:25 | 25 dk | Git ve GitHub: commit = oyundaki kayıt noktası. Bir değişikliği bilerek bozup geri almak. | Uygulama |
| 03:50 | 10 dk | Mini kontrol, “bugün ne yaptık” turu | Değerlendirme |
Claude Code kokpiti
Katılımcıya ilk gün yalnızca bu sekiz şey öğretilir; tamamı masadaki komut kartında da yazılıdır. Diğer komutlar ihtiyaç duyulduğu modülde tanıtılır. Tam liste için Claude Code el kitabı bölümüne bakın.
| Komut ya da kısayol | Ne işe yarar | Benzetme |
|---|---|---|
| Esc | Claude’u o anki işinde durdurur | Fren |
Esc Esc veya /rewind | Sohbeti ve kodu önceki bir noktaya geri sarar | Geri al |
| Shift+Tab | İzin modunu değiştirir (ör. düzenlemeleri otomatik kabul, plan modu, auto mod); geçerli mod ekranın altında yazar | Vites |
@dosya-adı | Claude’a belirli bir dosyayı gösterir | Parmakla göstermek |
| Ekran görüntüsü yapıştırmak | Hatayı ya da istediğiniz tasarımı resimle gösterir | Fotoğraf çekip göstermek |
/clear | Boş bir oturumla yeniden başlar; önceki oturum silinmez, /resume ile açılabilir | Yeni sayfa |
/compact | Uzayan sohbeti özetleyerek yer açar | Not özetlemek |
/help | Tüm komutları listeler | Kullanım kılavuzu |
--permission-mode manual kullanılır. Katılımcı Modül 2’den itibaren Shift+Tab ile modlar arasında bilinçli olarak geçiş yapar.İyi prompt formülü: A-B-K-K
Her prompt dört soruya cevap verir: Amaç (ne istiyorum), Bağlam (proje ne, kim kullanacak), Kısıt (neye dokunmasın, hangi stil) ve Kabul kriteri (bittiğini nasıl anlarım).
bana bir site yap
Bu klasörde Next.js ile “aliskanlik-takipcisi” adında yeni bir proje oluştur. Ana sayfa, uygulamayı tanıtan bir açılış sayfası olsun: başlık, üç maddelik özellik listesi ve “Hemen Başla” butonu. Yeşil tonlarında, sade ve telefonda da düzgün görünen bir tasarım istiyorum. Bitince projeyi bilgisayarımda nasıl açacağımı tek cümleyle söyle.
Kendiniz deneyin: prompt oluşturucu
Dört kutuyu doldurun; Claude Code’a yapıştırmaya hazır promptunuz aşağıda oluşsun. Eğitimde katılımcılar ilk promptlarını bu şablonla yazar.
Tek cümle, net bir istek.
Claude’un bilmediği arka plan.
Sınırlar ve tercihler.
Sonucu nasıl kontrol edeceğiniz.
Kutuları doldurdukça promptunuz burada oluşacak.
Örnek promptlar
Ana sayfadaki başlığı “Her gün biraz daha iyi” yap. Telefonda açtığımda butonlar ekrandan taşıyor, düzelt. Başka hiçbir şeyi değiştirme.
Bu projeyi git ile kaydet ve anlamlı bir commit mesajı yaz. Sonra GitHub’da “aliskanlik-takipcisi” adında gizli (private) bir depo oluşturup gönder. Benim yapmam gereken bir adım varsa (örneğin GitHub’a giriş) dur ve bana söyle.
- Bilgisayarda
localhost:3000adresinde açılan tanıtım sayfası - GitHub’da en az 2 commit içeren gizli depo
- Projede CLAUDE.md dosyası
Sık karşılaşılan sorunlar
| Belirti | Sebep | Çözüm |
|---|---|---|
| “claude: command not found” | Kurulum sonrası terminal yenilenmedi | Terminali kapatıp yeniden açın |
| “npm bulunamadı” | Node.js kurulu değil | Hazırlık rehberindeki Node.js adımı tekrar edilir |
| Windows’ta betik çalıştırma hatası | PowerShell güvenlik ayarı | Eğitmen hazır komutu verir ya da hata metni Claude Code’a yapıştırılır |
| “Port 3000 kullanımda” | Eski sunucu açık kaldı | Claude Code’a “3000 portunu kullanan süreci kapat” denir |
| İzin isteklerinden çekinme | Ne onaylandığı bilinmiyor | Kural: okumadan onaylama; anlamadığını “bu ne yapacak?” diye sor |
Restoran benzetmesinde veritabanı neye karşılık gelir?
Kilere. Malzemeler, yani kullanıcı verileri orada düzenli şekilde saklanır.
A-B-K-K formülünün dört harfi nedir?
Amaç, Bağlam, Kısıt ve Kabul kriteri.
Commit ile push arasındaki fark nedir?
Commit, projenin o anki halini bilgisayarınızda kaydeder. Push, bu kayıtları GitHub’a, yani buluta gönderir.
Claude Code bir dosyayı silmek için izin istediğinde ne yaparsınız?
Ne yapacağını okursunuz. Anlamadıysanız “bu ne yapacak?” diye sorarsınız; emin değilseniz reddedersiniz.
Projeniz bozulursa nasıl geri dönersiniz?
Git geçmişindeki son çalışan kayda dönersiniz. Claude Code’a “son çalışan commit’e geri dön” demeniz yeterli.
Web uygulaması ve canlıya alma
Modül sonunda her katılımcının kullanıcı girişi ve veritabanı olan, kendi linkinde herkese açık bir web uygulaması olur. Linki telefonundan açıp arkadaşına gönderebilir.
Akış
| Zaman | Süre | Etkinlik | Tür |
|---|---|---|---|
| 00:00 | 15 dk | Isınma: Modül 1 tekrarı, herkesin projesi açık ve GitHub’da mı? | Tekrar |
| 00:15 | 20 dk | Ürünü planlamak: ekranları kâğıda çizmek, plan modunda Claude Code’dan plan istemek ve düzeltmek | Uygulama |
| 00:35 | 35 dk | Arayüz: alışkanlık listesi ve ekleme ekranı, önce sahte verilerle | Uygulama |
| 01:10 | 10 dk | Mola | |
| 01:20 | 40 dk | Veritabanı ve ilk MCP: Supabase projesi açılır ve Supabase MCP Claude Code’a bağlanır. Benzetme: MCP, Claude’a takılan bir adaptördür. Claude tabloları kendisi oluşturur; anahtarlar .env.local dosyasına konur. | Uygulama |
| 02:00 | 30 dk | E-postayla giriş ve “herkes yalnızca kendi verisini görür” kuralı (Row Level Security). İki hesapla test. | Uygulama |
| 02:30 | 10 dk | Mola | |
| 02:40 | 35 dk | Canlıya alma: Vercel’e depoyu bağlamak, ortam değişkenleri, ilk deploy, linki telefondan açmak | Uygulama |
| 03:15 | 20 dk | Hata ayıklama atölyesi: eğitmen bilerek bir hata yayına çıkarır, katılımcılar kayıtları okuyup şablonla çözdürür. Gösterim: Playwright MCP ile Claude canlı siteyi kendisi açıp test eder. | Uygulama |
| 03:35 | 15 dk | Gizlilik politikası sayfası (Modül 4’te mağazalar isteyecek) ve otomatik yayın; alan adı bağlama gösterimi | Uygulama |
| 03:50 | 10 dk | Herkes linkini paylaşır, birbirinin uygulamasına kayıt olur | Değerlendirme |
İlk MCP bağlantısı
MCP (Model Context Protocol), Claude Code’un dış servislerle konuşmasını sağlayan ortak bir bağlantı standardıdır. Bu modülde iki MCP kullanılır: veritabanı için Supabase, tarayıcıda test için Playwright. Bağlantılar terminalde tek komutla eklenir, Claude Code içinde /mcp ile kontrol edilir.
claude mcp add --transport http supabase "https://mcp.supabase.com/mcp?project_ref=PROJE_REF" claude mcp add playwright npx @playwright/mcp@latest claude mcp list
İlk kullanımda Claude Code içinde /mcp açılır ve Supabase hesabıyla giriş yapılır. PROJE_REF, Supabase panelindeki proje kimliğidir; bu parametre bağlantıyı yalnızca deneme projesiyle sınırlar.
project_ref); veriye yalnızca bakılacaksa adrese &read_only=true eklenerek salt okunur bağlanılır. Claude’un MCP ile yapmak istediği her değişiklik okunup onaylanır.Canlıya almadan önce kontrol listesi
.env.localdosyası.gitignoreiçinde- Gizli “service role” anahtarı ön yüzde yok
- Tüm tablolarda Row Level Security açık
- Ortam değişkenleri Vercel’e eklendi
- Supabase “Site URL” canlı adrese ayarlı
- Yerelde
npm run buildhatasız - Sayfa başlığı ve simgesi uygulamaya ait
Örnek promptlar
Alışkanlık Takipçisi’ni gerçek bir uygulamaya çevirmek istiyorum. Kullanıcı e-postayla kayıt olsun, alışkanlık eklesin, her gün işaretlesin ve kaç gündür üst üste yaptığını görsün. Veritabanı olarak Supabase kullanacağız. Kod yazmadan önce bana adım adım bir plan çıkar; teknik terimleri bir cümleyle açıkla.
Supabase MCP üzerinden bu projenin veritabanına bağlısın. Alışkanlıklar ve günlük işaretlemeler için tabloları oluştur. Her kullanıcı yalnızca kendi kayıtlarını görebilsin. Değişikliği yapmadan önce ne oluşturacağını bana göster ve onayımı bekle.
Playwright ile canlı sitemi aç. Yeni bir hesapla kayıt ol, bir alışkanlık ekle, işaretle ve sayfayı yenile. Her adımda ne gördüğünü yaz; bir şey bozuksa ekran görüntüsüyle göster ve sebebini açıkla.
1) Ne yapıyordum: Canlı sitede “Hemen Başla”ya bastım. 2) Ne oldu: Boş beyaz sayfa çıktı. Vercel kayıtlarındaki hata şu: [hatayı yapıştır] 3) Ne bekliyordum: Giriş ekranının açılmasını. Sebebini bul, önce bana açıkla, sonra düzelt.
/gizlilik adresinde Türkçe ve İngilizce bir gizlilik politikası sayfası oluştur. Uygulama yalnızca e-posta adresi ve kullanıcının girdiği alışkanlık verilerini tutuyor, üçüncü taraflarla paylaşmıyor. İletişim e-postası olarak [e-posta] yaz. Bu metnin hukuki danışmanlık yerine geçmediğini bana ayrıca hatırlat.
…vercel.appadresinde canlı, girişli, veritabanlı web uygulaması- Canlı gizlilik politikası sayfası
- Kayıtlardan okunup çözülmüş en az bir hata
Sık karşılaşılan sorunlar
| Belirti | Sebep | Çözüm |
|---|---|---|
| Yerelde çalışıyor, canlıda boş sayfa | Ortam değişkenleri Vercel’e eklenmedi | Vercel ayarlarından ekleyip yeniden deploy |
| Kayıt e-postasındaki link localhost’a gidiyor | Supabase Site URL ayarı | Site URL ve yönlendirme adresine canlı adres yazılır |
| Veriler kaydoluyor ama görünmüyor | Row Level Security kuralı eksik | Claude Code’a tablo kurallarını kontrol ettirin |
| Vercel derlemesi başarısız | Yerelde fark edilmeyen hata | Yerelde npm run build çalıştırıp hatayı Claude’a verin |
| Anahtar yanlışlıkla GitHub’a gitti | .gitignore eksik | Anahtar Supabase’den yenilenir, eskisi geçersiz kılınır |
GitHub’a bir değişiklik gönderdiğinizde ne olur?
Vercel değişikliği fark eder, uygulamayı yeniden derler ve genellikle bir-iki dakika içinde yeni sürümü yayına alır.
Uygulama yerelde çalışıyor ama canlıda boş sayfa açılıyor. İlk neye bakarsınız?
Ortam değişkenlerinin Vercel’e eklenip eklenmediğine. Sonra Vercel kayıtlarındaki hatayı Claude Code’a şablonla aktarırsınız.
Row Level Security neyi sağlar?
Her kullanıcının veritabanında yalnızca kendi kayıtlarını görmesini ve değiştirebilmesini.
Eğitimde ayrıca her katılımcı yanındaki kişiye 2 dakikada uygulamasını canlı linkten gösterir.
Mobil uygulama
Alışkanlık Takipçisi katılımcının kendi telefonunda çalışır ve web sürümüyle aynı verileri gösterir. Uygulama ayrıca mağazaların istediği temel şartlara hazır hale gelir: kimlik, ikon ve hesap silme.
Akış
| Zaman | Süre | Etkinlik | Tür |
|---|---|---|---|
| 00:00 | 15 dk | Web = herkesin uğradığı vitrin, mobil = cebe giren dükkân. Neden Expo: tek kodla iPhone ve Android, Mac gerekmeden. | Kavram |
| 00:15 | 25 dk | Expo projesi oluşturmak, QR kodu okutup uygulamayı telefonda açmak, bir yazıyı değiştirip anında görmek | Uygulama |
| 00:40 | 35 dk | Ekranlar: giriş, liste, ekleme. Web projesini referans göstermek, alt sekme menüsü. | Uygulama |
| 01:15 | 10 dk | Mola | |
| 01:25 | 35 dk | Aynı Supabase’e bağlanmak, oturumu kalıcı tutmak. Web’de eklenen alışkanlık telefonda belirir. | Uygulama |
| 02:00 | 25 dk | Mobile özgü deneyim: her akşam 21:00 hatırlatma bildirimi, titreşim, çentikli ekran uyumu | Uygulama |
| 02:25 | 10 dk | Mola | |
| 02:35 | 30 dk | Uygulama kimliği: ad, 1024×1024 ikon, açılış ekranı, paket kimliği (com.adsoyad.aliskanlik). Paket kimliği yayından sonra değişmez. | Uygulama |
| 03:05 | 25 dk | Hesap silme: App Store uygulama içinden, Google Play ayrıca web bağlantısıyla ister. Web’e /hesap-sil sayfası. | Uygulama |
| 03:30 | 20 dk | Mağaza malzemeleri: ekran görüntüleri, Türkçe ve İngilizce kısa ve uzun açıklama | Uygulama |
| 03:50 | 10 dk | Telefonlar birbirine gösterilir, Modül 4 için hesap durumları kontrol edilir | Değerlendirme |
Örnek promptlar
Bu klasörde Expo ile “aliskanlik-mobil” adında yeni bir mobil uygulama oluştur. Yan klasördeki ../aliskanlik-takipcisi web projesine bak; aynı renkleri, aynı ekranları ve aynı Supabase veritabanını kullan. Önce yalnızca ana ekranı yap ve bana telefonumda nasıl açacağımı söyle.
Kullanıcı izin verirse her akşam 21:00’de “Bugünkü alışkanlıklarını işaretledin mi?” diye yerel bir bildirim gönder. İzin vermezse uygulama normal çalışmaya devam etsin. Ayarlar ekranına bildirimi açıp kapatan bir düğme ekle.
Bu uygulamayı App Store ve Google Play’e göndermeye hazırlanıyorum. app.json dosyasını ve uygulamayı kontrol et: ad, ikon, açılış ekranı, paket kimliği, sürüm numarası, izin açıklamaları ve hesap silme özelliği eksiksiz mi? Eksikleri liste halinde göster, sonra benim onayımla tamamla.
- Telefonda çalışan, web’le aynı verileri gösteren uygulama
- İkon, açılış ekranı ve paket kimliği ayarlı
app.json - Uygulama içinde ve web’de hesap silme
- En az 3 ekran görüntüsü, Türkçe ve İngilizce mağaza açıklamaları
Sık karşılaşılan sorunlar
| Belirti | Sebep | Çözüm |
|---|---|---|
| QR okutuluyor ama uygulama açılmıyor | Telefon ve bilgisayar farklı ağda | npx expo start --tunnel ile başlatın |
| “Incompatible SDK version” | Expo Go ile proje sürümü uyuşmuyor | Expo Go’yu güncelleyin ya da Claude Code’a sürüm uyumunu sorun |
| Uygulama kapanınca oturum düşüyor | Oturum cihazda saklanmıyor | “Oturumu cihazda kalıcı sakla” deyin |
| İçerik çentiğin altına giriyor | Güvenli alan ayarlanmadı | Güvenli alan (safe area) uyumu yaptırın |
| Bildirim Expo Go’da gelmiyor | Bazı özellikler Expo Go’da sınırlı | Modül 4’teki gerçek derlemede test edilir |
Paket kimliği neden yayından sonra değiştirilemez?
Mağazalar uygulamayı bu kimlikle tanır. Kimlik değişirse yeni bir uygulama sayılır; kullanıcılar, yorumlar ve güncellemeler eski uygulamada kalır.
Web’de eklenen veri neden telefonda da görünüyor?
Çünkü web ve mobil sürüm aynı Supabase veritabanına bağlı. Tek ürün, iki platform.
Mağazalar hesap silme konusunda ne istiyor?
Hesap açılabilen uygulamalarda hesabın silinebilmesini. App Store bunu uygulama içinden, Google Play ayrıca bir web bağlantısıyla ister.
App Store ve Google Play’e yayın
Uygulama TestFlight ve Google Play dahili test üzerinden katılımcının telefonuna gerçek bir uygulama olarak kurulur ve mağaza incelemesine gönderilir. İnceleme günler sürebildiği için başarı ölçütü “onay” değil, “eksiksiz gönderim”dir.
Akış
| Zaman | Süre | Etkinlik | Tür |
|---|---|---|---|
| 00:00 | 15 dk | Yayın yolculuğu haritası. Benzetme: kitabı matbaaya göndermek ve dağıtıcının onayı. | Kavram |
| 00:15 | 20 dk | EAS kurulumu: Expo hesabıyla giriş, derleme ayarı, sürüm numarası ile derleme numarası farkı | Uygulama |
| 00:35 | 10 dk | Kendi komutunu yazmak: Modül 3’teki mağaza öncesi kontrol promptu /magaza-kontrol komutuna dönüştürülür ve her derlemeden önce çalıştırılır. | Uygulama |
| 00:45 | 25 dk | Android derlemesini başlatmak; bulutta 15–20 dk sürer, beklerken iOS’a geçilir | Uygulama |
| 01:10 | 10 dk | Mola | |
| 01:20 | 40 dk | iOS: App Store Connect kaydı, iOS derlemesi (sertifikaları EAS yönetir), eas submit ile TestFlight. Apple şifresi Claude’a yazılmaz; terminalde katılımcı girer. | Uygulama |
| 02:00 | 30 dk | TestFlight: dahili test grubuna kendini eklemek, telefona kurmak, bildirimi test etmek | Uygulama |
| 02:30 | 10 dk | Mola | |
| 02:40 | 35 dk | Google Play Console: mağaza girişi, içerik derecelendirmesi, veri güvenliği formu, gizlilik linki. İlk paket elle yüklenir, sonrakiler eas submit ile. Katılımcılar kapalı teste birbirini ekler. | Uygulama |
| 03:15 | 20 dk | App Store incelemesine gönderim: gizlilik etiketi, yaş derecelendirmesi, inceleme ekibi için demo hesap | Uygulama |
| 03:35 | 15 dk | Güncelleme döngüsü: sürüm numarasını artırıp yeniden gönderim; küçük düzeltmeler için EAS Update | Uygulama |
| 03:50 | 10 dk | Çıktı kontrolü, eğitim sonrası yol haritası ve destek kanalı | Değerlendirme |
Mağaza karşılaştırması
| App Store (iOS) | Google Play (Android) | |
|---|---|---|
| Hesap | Apple Developer Program, yıllık ücret | Play Console, tek seferlik ücret |
| Test kanalı | TestFlight | Dahili, kapalı ve açık test |
| Yeni hesaba özel şart | Yok | Kişisel hesaplarda üretimden önce kapalı test (son bilinen kural: 12 testçi, 14 gün) |
| Zorunlu formlar | Gizlilik etiketi, yaş derecelendirmesi | Veri güvenliği, içerik derecelendirmesi, hedef kitle |
| Hesap silme | Uygulama içinden | Uygulama içinden ve web bağlantısıyla |
| İnceleme süresi | Genellikle 1–2 gün | İlk incelemede birkaç gün sürebilir |
Ücretler, süreler ve kurallar değişebildiği için eğitimden önce Apple ve Google’ın güncel sayfalarından kontrol edilir.
Örnek promptlar
Bu Expo uygulamasını EAS Build ile App Store ve Google Play için derlemek istiyorum. Gerekli ayar dosyalarını hazırla, sürüm numaralarını ayarla ve çalıştırmam gereken komutları sırayla yaz. Apple veya Google hesabıma giriş gereken adımlarda dur, girişi ben yapacağım.
Google Play veri güvenliği formunu dolduracağım. Bu projenin kodunu incele ve hangi verileri topladığımızı, nerede sakladığımızı, kimseyle paylaşıp paylaşmadığımızı soru soru çıkar. Emin olmadığın yerleri ayrıca belirt.
Apple uygulamamı şu gerekçeyle reddetti: [ret metnini yapıştır]. Bunun ne anlama geldiğini sade Türkçeyle açıkla, uygulamada neyi değiştirmem gerektiğini listele ve Apple’a yazacağım kısa İngilizce cevabı taslak olarak hazırla.
Kendi komutunu yazmak
Projede .claude/commands/ klasörüne bir Markdown dosyası koymak, yeni bir slash komutu oluşturur. Dosyanın adı komutun adı olur. Katılımcı böylece tekrar eden bir işi tek komuta indirmeyi öğrenir; aynı fikir daha kapsamlı haliyle skill olarak da yazılabilir.
Bu uygulamayı App Store ve Google Play’e göndermeye hazırlanıyorum. app.json dosyasını ve uygulamayı kontrol et: ad, ikon, açılış ekranı, paket kimliği, sürüm numarası, izin açıklamaları ve hesap silme özelliği eksiksiz mi? Sürüm numarası bir önceki gönderimden büyük mü? Eksikleri liste halinde göster, benim onayım olmadan hiçbir şeyi değiştirme.
Kullanım: Claude Code içinde /magaza-kontrol yazmak yeterli.
Sık ret sebepleri ve önlemleri
| Ret sebebi | Mağaza | Önlem |
|---|---|---|
| İnceleme ekibi giriş yapamadı | App Store | İnceleme notlarına çalışan demo hesap bilgisi yazılır |
| Hesap silme yok | İkisi | Modül 3’te eklenen hesap silme gösterilir |
| Gizlilik politikası eksik | İkisi | Modül 2’deki canlı /gizlilik linki girilir |
| “Web sitesinden farksız” uygulama | App Store | Bildirim gibi mobile özgü özellikler öne çıkarılır |
| Çökme veya yer tutucu içerik | İkisi | Gönderimden önce test kanallarında tüm akış denenir |
| Veri güvenliği formu uygulamayla uyuşmuyor | Google Play | Form, Claude Code’un koddan çıkardığı listeyle doldurulur |
- TestFlight üzerinden telefona kurulmuş iOS uygulaması
- Dahili test üzerinden telefona kurulmuş Android uygulaması
- App Store incelemesine gönderilmiş uygulama
- Google Play’de başlatılmış kapalı test
- Sürüm numarası artırılmış en az bir güncelleme
Claude Code el kitabı
Eğitimde kullanılan ve eğitimden sonra keşfedilecek tüm Claude Code özelliklerinin tek sayfalık özeti. Her öğenin eğitimde ne zaman tanıtıldığı belirtilmiştir.
Komutlar
| Komut | Ne yapar | Eğitimde |
|---|---|---|
claude | Bulunduğunuz klasörde Claude Code’u başlatır | Modül 1 |
/init | Projeyi inceler ve proje hafıza dosyası CLAUDE.md’yi oluşturur | Modül 1 |
/help | Kullanılabilir tüm komutları listeler | Modül 1 |
/clear | Boş bağlamla yeni oturum başlatır; önceki oturum /resume ile açılabilir | Modül 1 |
/compact | Uzun sohbeti özetleyerek bağlamda yer açar | Modül 1 |
/rewind | Kodu ve/veya sohbeti önceki bir noktaya geri yükler (diğer adları /checkpoint, /undo) | Modül 1 |
/memory | CLAUDE.md dosyalarını ve hafıza ayarlarını düzenler | İhtiyaç anında |
/mcp | MCP sunucularını yönetir; durumları gösterir, girişi başlatır | Modül 2 |
/model | Kullanılan Claude modelini değiştirir | İhtiyaç anında |
/permissions | Araç izni verme ve engelleme kurallarını yönetir | İhtiyaç anında |
/resume, claude --continue | Önceki bir oturumu açar; claude --continue (-c) bu klasördeki son oturuma döner | İhtiyaç anında |
/skills | Kullanılabilir skill’leri listeler | Modül 4 |
/plugin | Claude Code eklentilerini yönetir (diğer adları /plugins, /marketplace) | Sonraki adımlar |
/hooks | Araç olaylarına bağlı hook ayarlarını gösterir | Sonraki adımlar |
/install-github-app | Bir depo için Claude GitHub Actions kurulumunu yapar | Sonraki adımlar |
Kısayollar
| Kısayol | Ne yapar |
|---|---|
| Esc | Claude’u durdurur; yön değiştirmek için yeni talimat yazılır |
| Esc Esc | Geri sarma menüsünü açar (/rewind ile aynı) |
| Shift+Tab | İzin modları arasında geçiş yapar: düzenlemeleri otomatik kabul, plan modu, auto mod vb. |
@ | Dosya ya da klasör adını sohbete ekler |
! | Satırın başına yazılınca kabuk moduna geçer, terminal komutu doğrudan çalışır |
| Görsel yapıştırma / sürükleme | Ekran görüntüsünü sohbete ekler |
MCP: Claude Code’u dış dünyaya bağlamak
MCP, Claude Code’un veritabanları, tarayıcılar, proje yönetim araçları ve benzeri servislerle güvenli şekilde konuşmasını sağlayan açık bir standarttır. Benzetme: her cihaza uyan ortak bir priz.
Eğitimde: Supabase MCP (veritabanı) ve Playwright MCP (tarayıcıda test), Modül 2.
Eğitim sonrası örnekler: GitHub (issue ve pull request), Figma (tasarımdan kod), Sentry (canlı hata kayıtları), Notion veya Linear (görev takibi).
Temel komutlar
claude mcp add: yeni bağlantı eklerclaude mcp list: bağlantıları listelerclaude mcp remove: bağlantıyı kaldırırclaude mcp login: bir MCP sunucusunda oturum açar/mcp: Claude Code içinden yönetim, durum ve oturum açma
Güvenlik: Yalnızca güvenilen MCP sunucuları eklenir, deneme ortamı tercih edilir, her değişiklik onaylanır.
Claude Code’u özelleştirmenin katmanları
Basitten gelişmişe doğru sıralanmıştır. Eğitimde ilk ikisi uygulamalı öğretilir, diğerleri tanıtılır.
| Katman | Ne işe yarar | Örnek | Eğitimde |
|---|---|---|---|
| CLAUDE.md | Projenin kalıcı hafızası: kurallar, tercihler, komutlar | “Arayüz metinleri Türkçe olsun” | Modül 1, uygulamalı |
| Slash komutu | Tekrar eden bir promptu tek komuta indirir | /magaza-kontrol | Modül 4, uygulamalı |
| Skill | Talimat, şablon ve betiklerden oluşan, gerektiğinde otomatik devreye giren yetenek paketi (.claude/skills/) | Kurumsal yazım kılavuzu | Modül 4, tanıtım |
| Subagent | Kendi görev tanımı ve bağlamı olan uzman yardımcı; Claude’dan istenerek ya da .claude/agents/ klasörüne dosya eklenerek oluşturulur | Kod inceleyici, test yazıcı | Sonraki adımlar |
| Hook | Belirli anlarda otomatik çalışan komut | Her düzenlemeden sonra kodu biçimlendirmek | Sonraki adımlar |
| Eklenti (plugin) | Komut, subagent, skill, hook ve MCP’leri tek pakette paylaşmak | Ekibin ortak geliştirme seti | Sonraki adımlar |
Çalışma ortamları
Eğitim terminalde yapılır, çünkü Claude Code’un tüm yetenekleri orada eksiksizdir ve bu bilgi diğer ortamlara doğrudan taşınır. Eğitim sonrası katılımcı aynı işi VS Code veya JetBrains eklentisiyle editör içinden, Claude masaüstü uygulamasıyla ya da mobil uygulamadan uzaktan sürdürebilir. İleri seviyede claude -p (--print) ile etkileşimsiz çalıştırma ve /install-github-app ile kurulan GitHub Actions entegrasyonu otomasyon imkânı sunar.
claude --version ve /help ile yeniden kontrol edilir.Ölçme, eğitmen notları ve sonrası
Eğitim sınavla değil, katılımcının ürettiği çıktılarla değerlendirilir. Başarı ise 30 gün sonra yayında olan uygulama sayısıyla ölçülür.
Değerlendirme ölçütleri
| Alan | Başarılı sayılır | Nasıl ölçülür |
|---|---|---|
| Araç kullanımı | Claude Code’u açar, prompt verir, değişikliği onaylar veya geri alır | Modül 1 gözlem ve mini kontrol |
| Prompt yazımı | Promptlarında amaç, bağlam, kısıt ve kabul kriteri var | Her modülde 2 prompt incelenir |
| Web yayını | Girişli, veritabanlı uygulama canlı linkte çalışıyor | Canlı link testi |
| Hata çözme | Bir hatayı kayıtlardan bulup şablonla çözdürmüş | Modül 2 hata atölyesi |
| Mobil | Uygulama telefonda çalışıyor, web’le aynı veriyi gösteriyor | Modül 3 eşli gösterim |
| Mağaza yayını | Test kanallarında kurulu, App Store’a gönderilmiş | Modül 4 çıktı kontrolü |
| Claude Code yetkinliği | Temel komutları kullanır, en az bir MCP bağlar, kendi slash komutunu yazar | Modül 1, 2 ve 4 gözlem |
| Kalıcılık | 30 gün içinde en az bir mağazada yayında | Eğitim sonrası takip anketi |
Eğitmen notları
Ben yaparım, birlikte yaparız, siz yaparsınız. Her yeni adım önce eğitmen ekranında gösterilir, sonra birlikte yapılır, sonra katılımcı kendi projesinde tekrarlar.
Kimse geride kalmaz. 10 dakikadan uzun takılan katılımcı modülün hazır dalına geçer, sorununu molada asistanla çözer.
Durum sinyali. Masada yeşil (devam ediyorum) ve kırmızı (yardım lazım) kart; çevrim içinde tepki emojileri.
Hızlı bitenlere ek görevler. Karanlık mod, haftalık istatistik grafiği, İngilizce dil desteği; ileri gidenler için bir kod inceleyici subagent ya da biçimlendirme hook’u kurmak.
Hatalar müfredatın parçasıdır. Eğitmen kendi ekranında çıkan hataları saklamaz; her birini hata bildirme şablonuyla canlı çözer.
Claude Code yanılabilir. Katılımcı her değişikliği tarayıcıda veya telefonda kendi gözüyle doğrular.
Güvenlik alışkanlığı. Şifreler ve gizli anahtarlar sohbete yazılmaz, okunmadan izin verilmez, sızan anahtar hemen yenilenir.
Zaman tamponu. Mağaza adımları uzarsa Modül 4’teki güncelleme döngüsü eğitmen gösterimine dönüşür.
Sözlük
- Terminal
- Bilgisayara yazarak komut verdiğimiz pencere
- Prompt
- Claude’a verdiğimiz talimat
- Localhost
- Uygulamanın yalnızca kendi bilgisayarımızda açılan adresi
- Depo
- Projenin dosyalarının ve geçmişinin durduğu klasör
- Commit
- Projenin o anki halini kaydetmek, oyundaki kayıt noktası gibi
- Push
- Kayıtları GitHub’a, yani buluta göndermek
- Deploy
- Uygulamayı internette herkesin açabileceği hale getirmek
- Ortam değişkeni
- Koda yazılmayan, ayrı saklanan gizli ayar ve anahtarlar
- Veritabanı
- Kullanıcı verilerinin düzenli saklandığı yer
- Build (derleme)
- Kodun telefona kurulabilir dosyaya dönüştürülmesi
- Paket kimliği
- Uygulamanın mağazadaki değişmez kimlik numarası
- TestFlight
- Apple’ın yayından önce test ettiren aracı
- Kapalı test
- Google Play’de uygulamayı yalnızca seçilen kişilere açmak
- MCP
- Claude Code’u dış servislere bağlayan ortak bağlantı standardı
- Slash komutu
/ile başlayan, Claude Code’a hazır iş yaptıran komut- Subagent
- Belirli bir işte uzmanlaşmış yardımcı Claude (
.claude/agents/)
Eğitim sonrası 30 gün
- 1–7. günApp Store inceleme sonucunu takip et; ret gelirse “ret cevabı” promptuyla düzelt ve yeniden gönder.
- 1–14. günGoogle Play kapalı testini tamamla, testçilerden geri bildirim topla.
- 15–30. günGoogle Play’de üretime erişim başvurusu yap ve yayına çık.
- 15–30. günEl kitabındaki “sonraki adımlar”dan birini dene: bir subagent, bir hook ya da yeni bir MCP bağlantısı.
- SürekliKendi uygulama fikrini aynı yöntemle sıfırdan geliştir, eğitim topluluğunda paylaş.