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.

Canlı web uygulaması

Girişli, veritabanlı, kendi linkinde herkese açık.

Telefonda çalışan uygulama

Web’le aynı verileri gösteren iOS ve Android sürümü.

Mağazaya gönderilmiş paket

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.

KatmanAraçNeden bu araç
Yapay zekâ geliştiriciClaude CodeDoğal dilde komutla dosya oluşturur, kod yazar, komut çalıştırır
Web uygulamasıNext.jsVercel 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ıVercelGitHub’a her gönderimde otomatik yayın
Kod deposuGit + GitHubYedekleme, sürüm geçmişi, Vercel ve EAS bağlantısı
Mobil uygulamaExpo (React Native)Expo Go ile telefonda anında test, Mac gerektirmez
Mobil derleme ve gönderimEAS Build + EAS SubmitBulutta 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
Modül 1, saat 1–4

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ış

ZamanSüreEtkinlikTür
00:0020 dkAçılış: eğitmen yayındaki örnek uygulamayı telefonunda gösterir. Katılımcılar uygulama fikirlerini bir cümleyle paylaşır.Motivasyon
00:2015 dkRestoran benzetmesiyle bir uygulamanın parçalarıKavram
00:3520 dkTerminal: klasörde gezinmek, klasör açmak, listelemek. Alıştırma: Masaüstünde egitim klasörü.Uygulama
00:5530 dkClaude 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:2510 dkMola
01:3530 dkİlk sohbet: soru sormak, izin isteklerini okumak, /init ile proje hafıza dosyası (CLAUDE.md)Uygulama
02:0515 dkClaude 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:2030 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:5010 dkMola
03:0025 dkİyi prompt formülü ve plan modu; katılımcı sayfasına yeni bölüm eklerUygulama
03:2525 dkGit ve GitHub: commit = oyundaki kayıt noktası. Bir değişikliği bilerek bozup geri almak.Uygulama
03:5010 dkMini kontrol, “bugün ne yaptık” turuDeğ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ısayolNe işe yararBenzetme
EscClaude’u o anki işinde durdururFren
Esc Esc veya /rewindSohbeti ve kodu önceki bir noktaya geri sararGeri al
Shift+Tabİzin modunu değiştirir (ör. düzenlemeleri otomatik kabul, plan modu, auto mod); geçerli mod ekranın altında yazarVites
@dosya-adıClaude’a belirli bir dosyayı gösterirParmakla göstermek
Ekran görüntüsü yapıştırmakHatayı ya da istediğiniz tasarımı resimle gösterirFotoğraf çekip göstermek
/clearBoş bir oturumla yeniden başlar; önceki oturum silinmez, /resume ile açılabilirYeni sayfa
/compactUzayan sohbeti özetleyerek yer açarNot özetlemek
/helpTüm komutları listelerKullanım kılavuzu
İzin modları hakkında. Güncel Claude Code sürümlerinde yeni oturumlar varsayılan olarak auto modda başlar; bu modda hangi işlemin izin isteyeceğine bir güvenlik sınıflandırıcısı karar verir. Katılımcının Claude’un ne yapmak istediğini görmeyi öğrenmesi için Modül 1’de --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).

Belirsiz
bana bir site yap
Net
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.

Henüz kutu doldurulmadı
Promptunuz
Kutuları doldurdukça promptunuz burada oluşacak.

Örnek promptlar

İyileştirme turu
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.
Git ve GitHub
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.
Modül sonu çıktısı
  • Bilgisayarda localhost:3000 adresinde 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
BelirtiSebepÇözüm
“claude: command not found”Kurulum sonrası terminal yenilenmediTerminali kapatıp yeniden açın
“npm bulunamadı”Node.js kurulu değilHazı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 çekinmeNe onaylandığı bilinmiyorKural: okumadan onaylama; anlamadığını “bu ne yapacak?” diye sor
Mini kontrol0 / 5 bildiniz

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.

Modül 2, saat 5–8

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ış

ZamanSüreEtkinlikTür
00:0015 dkIsınma: Modül 1 tekrarı, herkesin projesi açık ve GitHub’da mı?Tekrar
00:1520 dkÜrünü planlamak: ekranları kâğıda çizmek, plan modunda Claude Code’dan plan istemek ve düzeltmekUygulama
00:3535 dkArayüz: alışkanlık listesi ve ekleme ekranı, önce sahte verilerleUygulama
01:1010 dkMola
01:2040 dkVeritabanı 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:0030 dkE-postayla giriş ve “herkes yalnızca kendi verisini görür” kuralı (Row Level Security). İki hesapla test.Uygulama
02:3010 dkMola
02:4035 dkCanlıya alma: Vercel’e depoyu bağlamak, ortam değişkenleri, ilk deploy, linki telefondan açmakUygulama
03:1520 dkHata 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:3515 dkGizlilik politikası sayfası (Modül 4’te mağazalar isteyecek) ve otomatik yayın; alan adı bağlama gösterimiUygulama
03:5010 dkHerkes linkini paylaşır, birbirinin uygulamasına kayıt olurDeğ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.

Terminalde (eğitmen gösterir, katılımcı tekrarlar)
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.

Güvenlik kuralı. MCP, Claude’a gerçek sistemlere erişim verir. Supabase, bağlanmadan önce güvenlik önerilerinin okunmasını tavsiye eder. Eğitimde yalnızca deneme projesi bağlanır (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.local dosyası .gitignore iç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 build hatasız
  • Sayfa başlığı ve simgesi uygulamaya ait

Örnek promptlar

Planlama (plan modunda)
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.
Veritabanı (Supabase MCP bağlıyken)
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 MCP ile test
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.
Hata bildirme şablonu
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 politikası
/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.
Modül sonu çıktısı
  • …vercel.app adresinde 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
BelirtiSebepÇözüm
Yerelde çalışıyor, canlıda boş sayfaOrtam değişkenleri Vercel’e eklenmediVercel ayarlarından ekleyip yeniden deploy
Kayıt e-postasındaki link localhost’a gidiyorSupabase Site URL ayarıSite URL ve yönlendirme adresine canlı adres yazılır
Veriler kaydoluyor ama görünmüyorRow Level Security kuralı eksikClaude Code’a tablo kurallarını kontrol ettirin
Vercel derlemesi başarısızYerelde fark edilmeyen hataYerelde npm run build çalıştırıp hatayı Claude’a verin
Anahtar yanlışlıkla GitHub’a gitti.gitignore eksikAnahtar Supabase’den yenilenir, eskisi geçersiz kılınır
Mini kontrol0 / 3 bildiniz

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.

Modül 3, saat 9–12

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ış

ZamanSüreEtkinlikTür
00:0015 dkWeb = herkesin uğradığı vitrin, mobil = cebe giren dükkân. Neden Expo: tek kodla iPhone ve Android, Mac gerekmeden.Kavram
00:1525 dkExpo projesi oluşturmak, QR kodu okutup uygulamayı telefonda açmak, bir yazıyı değiştirip anında görmekUygulama
00:4035 dkEkranlar: giriş, liste, ekleme. Web projesini referans göstermek, alt sekme menüsü.Uygulama
01:1510 dkMola
01:2535 dkAynı Supabase’e bağlanmak, oturumu kalıcı tutmak. Web’de eklenen alışkanlık telefonda belirir.Uygulama
02:0025 dkMobile özgü deneyim: her akşam 21:00 hatırlatma bildirimi, titreşim, çentikli ekran uyumuUygulama
02:2510 dkMola
02:3530 dkUygulama 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:0525 dkHesap silme: App Store uygulama içinden, Google Play ayrıca web bağlantısıyla ister. Web’e /hesap-sil sayfası.Uygulama
03:3020 dkMağaza malzemeleri: ekran görüntüleri, Türkçe ve İngilizce kısa ve uzun açıklamaUygulama
03:5010 dkTelefonlar birbirine gösterilir, Modül 4 için hesap durumları kontrol edilirDeğerlendirme

Örnek promptlar

Proje oluşturma
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.
Bildirim
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.
Mağaza öncesi kontrol
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.
Modül sonu çıktısı
  • 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
BelirtiSebepÇözüm
QR okutuluyor ama uygulama açılmıyorTelefon ve bilgisayar farklı ağdanpx expo start --tunnel ile başlatın
“Incompatible SDK version”Expo Go ile proje sürümü uyuşmuyorExpo Go’yu güncelleyin ya da Claude Code’a sürüm uyumunu sorun
Uygulama kapanınca oturum düşüyorOturum cihazda saklanmıyor“Oturumu cihazda kalıcı sakla” deyin
İçerik çentiğin altına giriyorGüvenli alan ayarlanmadıGüvenli alan (safe area) uyumu yaptırın
Bildirim Expo Go’da gelmiyorBazı özellikler Expo Go’da sınırlıModül 4’teki gerçek derlemede test edilir
Mini kontrol0 / 3 bildiniz

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.

Modül 4, saat 13–16

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ış

ZamanSüreEtkinlikTür
00:0015 dkYayın yolculuğu haritası. Benzetme: kitabı matbaaya göndermek ve dağıtıcının onayı.Kavram
00:1520 dkEAS kurulumu: Expo hesabıyla giriş, derleme ayarı, sürüm numarası ile derleme numarası farkıUygulama
00:3510 dkKendi 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:4525 dkAndroid derlemesini başlatmak; bulutta 15–20 dk sürer, beklerken iOS’a geçilirUygulama
01:1010 dkMola
01:2040 dkiOS: 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:0030 dkTestFlight: dahili test grubuna kendini eklemek, telefona kurmak, bildirimi test etmekUygulama
02:3010 dkMola
02:4035 dkGoogle 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:1520 dkApp Store incelemesine gönderim: gizlilik etiketi, yaş derecelendirmesi, inceleme ekibi için demo hesapUygulama
03:3515 dkGüncelleme döngüsü: sürüm numarasını artırıp yeniden gönderim; küçük düzeltmeler için EAS UpdateUygulama
03:5010 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)
HesapApple Developer Program, yıllık ücretPlay Console, tek seferlik ücret
Test kanalıTestFlightDahili, kapalı ve açık test
Yeni hesaba özel şartYokKişisel hesaplarda üretimden önce kapalı test (son bilinen kural: 12 testçi, 14 gün)
Zorunlu formlarGizlilik etiketi, yaş derecelendirmesiVeri güvenliği, içerik derecelendirmesi, hedef kitle
Hesap silmeUygulama içindenUygulama içinden ve web bağlantısıyla
İnceleme süresiGenellikle 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

Derleme hazırlığı
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.
Veri güvenliği formu
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.
Ret cevabı
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.

.claude/commands/magaza-kontrol.md
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 sebebiMağazaÖnlem
İnceleme ekibi giriş yapamadıApp Storeİnceleme notlarına çalışan demo hesap bilgisi yazılır
Hesap silme yokİkisiModül 3’te eklenen hesap silme gösterilir
Gizlilik politikası eksikİkisiModül 2’deki canlı /gizlilik linki girilir
“Web sitesinden farksız” uygulamaApp StoreBildirim gibi mobile özgü özellikler öne çıkarılır
Çökme veya yer tutucu içerikİkisiGönderimden önce test kanallarında tüm akış denenir
Veri güvenliği formu uygulamayla uyuşmuyorGoogle PlayForm, Claude Code’un koddan çıkardığı listeyle doldurulur
Modül sonu çıktısı
  • 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

KomutNe yaparEğitimde
claudeBulunduğunuz klasörde Claude Code’u başlatırModül 1
/initProjeyi inceler ve proje hafıza dosyası CLAUDE.md’yi oluştururModül 1
/helpKullanılabilir tüm komutları listelerModül 1
/clearBoş bağlamla yeni oturum başlatır; önceki oturum /resume ile açılabilirModül 1
/compactUzun sohbeti özetleyerek bağlamda yer açarModül 1
/rewindKodu ve/veya sohbeti önceki bir noktaya geri yükler (diğer adları /checkpoint, /undo)Modül 1
/memoryCLAUDE.md dosyalarını ve hafıza ayarlarını düzenlerİhtiyaç anında
/mcpMCP sunucularını yönetir; durumları gösterir, girişi başlatırModül 2
/modelKullanılan Claude modelini değiştirirİhtiyaç anında
/permissionsAraç 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
/skillsKullanılabilir skill’leri listelerModül 4
/pluginClaude Code eklentilerini yönetir (diğer adları /plugins, /marketplace)Sonraki adımlar
/hooksAraç olaylarına bağlı hook ayarlarını gösterirSonraki adımlar
/install-github-appBir depo için Claude GitHub Actions kurulumunu yaparSonraki adımlar

Kısayollar

KısayolNe yapar
EscClaude’u durdurur; yön değiştirmek için yeni talimat yazılır
Esc EscGeri 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üklemeEkran 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ı ekler
  • claude mcp list: bağlantıları listeler
  • claude mcp remove: bağlantıyı kaldırır
  • claude 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.

KatmanNe işe yararÖrnekEğitimde
CLAUDE.mdProjenin kalıcı hafızası: kurallar, tercihler, komutlar“Arayüz metinleri Türkçe olsun”Modül 1, uygulamalı
Slash komutuTekrar eden bir promptu tek komuta indirir/magaza-kontrolModül 4, uygulamalı
SkillTalimat, şablon ve betiklerden oluşan, gerektiğinde otomatik devreye giren yetenek paketi (.claude/skills/)Kurumsal yazım kılavuzuModül 4, tanıtım
SubagentKendi görev tanımı ve bağlamı olan uzman yardımcı; Claude’dan istenerek ya da .claude/agents/ klasörüne dosya eklenerek oluşturulurKod inceleyici, test yazıcıSonraki adımlar
HookBelirli anlarda otomatik çalışan komutHer düzenlemeden sonra kodu biçimlendirmekSonraki adımlar
Eklenti (plugin)Komut, subagent, skill, hook ve MCP’leri tek pakette paylaşmakEkibin ortak geliştirme setiSonraki 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.

Doğrulama. Bu bölümdeki komutlar 4 Kasım 2026’da Claude Code 2.1.318 sürümüyle (resmi npm paketi ve resmi CHANGELOG) karşılaştırıldı; MCP kurulum komutları aynı sürümde çalıştırılarak test edildi, Supabase ve Playwright komutları ilgili resmi GitHub depolarıyla doğrulandı. Claude Code sık güncellendiği için liste her eğitimden önce 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

AlanBaşarılı sayılırNasıl ölçülür
Araç kullanımıClaude Code’u açar, prompt verir, değişikliği onaylar veya geri alırModül 1 gözlem ve mini kontrol
Prompt yazımıPromptlarında amaç, bağlam, kısıt ve kabul kriteri varHer modülde 2 prompt incelenir
Web yayınıGirişli, veritabanlı uygulama canlı linkte çalışıyorCanlı link testi
Hata çözmeBir hatayı kayıtlardan bulup şablonla çözdürmüşModül 2 hata atölyesi
MobilUygulama telefonda çalışıyor, web’le aynı veriyi gösteriyorModü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ğiTemel komutları kullanır, en az bir MCP bağlar, kendi slash komutunu yazarModül 1, 2 ve 4 gözlem
Kalıcılık30 gün içinde en az bir mağazada yayındaEğ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. 1–7. günApp Store inceleme sonucunu takip et; ret gelirse “ret cevabı” promptuyla düzelt ve yeniden gönder.
  2. 1–14. günGoogle Play kapalı testini tamamla, testçilerden geri bildirim topla.
  3. 15–30. günGoogle Play’de üretime erişim başvurusu yap ve yayına çık.
  4. 15–30. günEl kitabındaki “sonraki adımlar”dan birini dene: bir subagent, bir hook ya da yeni bir MCP bağlantısı.
  5. SürekliKendi uygulama fikrini aynı yöntemle sıfırdan geliştir, eğitim topluluğunda paylaş.