Klasik portfolyo siteleri statik ve sınırlı kalır. Bu platform; admin CRUD paneli, devlog sistemi ile gerçek bir SaaS ürünü gibi tasarlandı.
%99 uygulama ilerlemesi
Repodaki commit'ler otomatik sürümlenip geliştirme günlüğüne dönüşüyor; portfolyo kendi kendini güncelliyor.
DeepL ve veritabanı önbelleğiyle tüm içerik iki dilde; sonradan eklenen içerik de otomatik çevriliyor.
Edge Runtime'da her sayfa için sosyal medya önizleme görseli anlık üretiliyor.
Medya
Cloudinary
Deploy
Vercel + Supabase
Arka Uç
Server Actions + API Routes
Ön Yüz
Next.js 15 App Router
Veritabanı
PostgreSQL + Prisma ORM
proje detayinda "One Cikan Ozellikler" bolumu
feat: proje detayinda "One Cikan Ozellikler" bolumu - Project.highlights (Json?) — proje basina zengin ozellik vitrini ([{title, description, icon}]); admin formunda JSON alani - Detay sayfasinda Problem/Cozum sonrasi, ikonlu cyan-vurgulu kartlar - 8 ikon secenegi: automation/data/security/speed/calendar/code/ai/template - Highlight title/description DeepL ile cevriliyor (localizeProject) - Ornek highlights: Diyet Takip (sablon ogun, JWT, randevu) + canberktamyigit (GitHub otomasyonu, TR/EN ceviri, OG image) - projectDetail.highlights dict (TR/EN) Not: highlights kolonu Supabase'de gerekir (ALTER TABLE "Project" ADD COLUMN IF NOT EXISTS "highlights" jsonb;). Kolon yoksa getProjectBySlug fallback'e duser; eklenince admin'den veya SQL ile doldurulur. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CFjkEEa1o49pdxPDM4CqSp
hero gorsel alani + net hero metni + nötr veri gorsellestime
feat: hero gorsel alani + net hero metni + nötr veri gorsellestime - Hero sag sutuna admin'den yonetilen urun ekran goruntusu alani: SiteConfig.heroImageUrl + ayarlar formunda alan. URL girilince tarayici cercevesinde gercek gorsel, bossa mevcut tasarim gorunur. (Kolon yoksa getSiteConfig fallback'e duser, site kirilmaz.) - hero basligi sadelestirildi: karisik "istatistik altyapim" ifadesi kaldirildi; kimlik badge'de, somut urun alt baslikta - DataViz kalori/BMI'dan aritildi -> notr ornek veri seti gorsellestime (regresyon + dagilim, "gercek kisi/kullanici verisi icermez" etiketi). Diyet Takip detay sayfasindan kaldirildi; sadece About'ta skill vitrini Not: hero gorseli icin SiteConfig'e heroImageUrl kolonu gerekir (Supabase: ALTER TABLE "SiteConfig" ADD COLUMN IF NOT EXISTS "heroImageUrl" text;). Kolon olmadan da site calisir, alan gizli kalir. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CFjkEEa1o49pdxPDM4CqSp
perf+feat: ceviri onbellegi + hero revizyonu + header markasi
perf+feat: ceviri onbellegi + hero revizyonu + header markasi - i18n: translateMany artik unstable_cache ile sarmali (Next veri onbellegi). EN sayfalar ilk yuklemeden sonra DB/DeepL'e gitmeden gelir; DEEPL_API_KEY yoksa hic is yapmadan kaynak metne duser (no-op) - hero: kimlik + farklilastirici (Istatistik × CS) + canli urun odakli yeni kopya; birincil CTA artik flagship canli urun detayina gidiyor - header markasi: "C / Canberk.dev" -> "CT / Canberk Tamyigit" (mobil nav ve footer tagline dahil) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CFjkEEa1o49pdxPDM4CqSp
sayfa gecislerinde ust ilerleme cubugu
feat: sayfa gecislerinde ust ilerleme cubugu - Tepede ince, animasyonlu progress bar (YouTube/GitHub tarzi) - Ic link tiklamasinda baslar, pathname degisince tamamlanir - Bagimlilik yok, harici script yok (CSP-uyumlu); cyan tema ile uyumlu - Takilmaya karsi 10sn guvenlik zaman asimi Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CFjkEEa1o49pdxPDM4CqSp
kalan sayfalari da TR/EN cevirilebilir yap
feat: kalan sayfalari da TR/EN cevirilebilir yap - journey, stack, contact, devlog sayfalari artik dict kullaniyor - journey timeline + devlog icerigi DeepL ile lokalize (localizeTimeline/ localizeDevlogs cagrildi) - statusLabel locale-aware (proje durumu + devlog kategorisi EN/TR); proje kartlari, flagship kart ve detay sayfasina locale gecirildi - iletisim formu (isim/email/mesaj/gonder + toast) cevirildi - Ctrl+K arama paleti (placeholder, sonuc basliklari) cevirildi - devlog tarih formati locale-aware (en-US / tr-TR) - messages: journey/stack/contact/contactForm/devlog/search anahtarlari Artik tum public arayuz TR/EN. DB icerigi (proje/devlog/timeline metinleri) icin DEEPL_API_KEY gerekli; yoksa EN modunda kaynak (TR) metne duser. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CFjkEEa1o49pdxPDM4CqSp
guvenlik sertlestirmesi — header'lar, CSP, rate-limit, honeypot
feat: guvenlik sertlestirmesi — header'lar, CSP, rate-limit, honeypot - next.config: HSTS, X-Frame-Options DENY, X-Content-Type-Options nosniff, Referrer-Policy, Permissions-Policy + poweredByHeader kapatildi - middleware: per-request nonce ile enforcing Content-Security-Policy (strict-dynamic; script/style/img/connect/frame-src allowlist'leri Cloudinary, umami, demo-video iframe icin ayarlandi) - layout: umami Script'ine nonce gecirildi - Upstash Redis rate-limit: admin login (5/10dk) + iletisim formu (3/10dk) — env yoksa guvenle devre disi (no-op) - iletisim formuna honeypot alani (bot spam'i sessizce yok sayar) - iletisim bildirimi email'inde HTML-escape (injection'a karsi) - .env.example: ADMIN_PASSWORD_HASH tutarsizligi duzeltildi (kod bcrypt hash okuyor, ornek duz sifre yaziyordu) + Upstash degiskenleri eklendi Test notu: CSP enforcing modda — deploy sonrasi tarayici konsolunda CSP ihlali var mi kontrol edilmeli (umami, Cloudinary upload, iframe). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CFjkEEa1o49pdxPDM4CqSp
tum-site otomatik TR/EN ceviri (DeepL + DB onbellek)
feat: tum-site otomatik TR/EN ceviri (DeepL + DB onbellek) - Cookie tabanli locale + header'da TR/EN dil switcher - Statik UI metinleri messages/tr.json + en.json sozluklerinde (home, about, nav, footer, proje karti/detay, spotlight) - Dinamik DB icerigi (projeler, devlog, timeline) DeepL ile cevrilir ve Translation tablosunda cache'lenir; sonradan eklenen icerik ilk EN goruntulemede otomatik cevrilir - DEEPL_API_KEY yoksa EN modu kaynak (TR) metne guvenle duser - home, about ve proje detayi (Diyet Takip dahil) tam EN - public-shell async; <html lang> dinamik - canberktamyigit projesine dogru "otomatik TR/EN ceviri" feature'i geri eklendi; tamamlanan i18n roadmap maddesi guncellendi - .env.example + README i18n notlari Not: yeni semaya gecmek icin `npm run db:push`, icerik icin `npm run db:seed`. EN cevirisi icin DEEPL_API_KEY gerekir. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CFjkEEa1o49pdxPDM4CqSp
GitHub link ile tek tikla proje olusturma
feat: GitHub link ile tek tikla proje olusturma - Yeni: createProjectFromGitHub action — GitHub API'den repo metadatasi, README ilk paragrafi, languages ve topics cekip otomatik proje olusturur - Yeni: CreateFromGitHubForm — admin/projects sayfasi en ustte URL input'u ile hizli olusturma - Manuel "tam form" artik collapsible (details/summary) — varsayilan kapali Otomatik doldurulan alanlar: - title, slug (slugify), shortDescription, longDescription - githubUrl, liveUrl (repo.homepage) - stack (languages), tags (topics) - architecture (ana dil + diller) - status=IN_PROGRESS, contentStatus=PUBLISHED, published=true Placeholder alanlar (kullanici sonra duzenler): - problem, solution, features, challenges, learnings, roadmap Bonus: yeni projeler artik default'ta Yayinda + PUBLISHED — public /projects sayfasinda anlik gozukur. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
devlog'lari projelere ozellikle yeniden esleme + manuel atama
feat: devlog'lari projelere ozellikle yeniden esleme + manuel atama - Yeni: "Projelerle yeniden esle" butonu — orphan commit'leri (relatedProject=null) commitUrl'deki repo adindan project.githubUrl'e otomatik eslestirir - Yeni: Her commit satirinda inline proje dropdown'u — auto-submit ile tek tikla atama - Yeni: "Proje yok" filtresi aktifken bulk reassign formu — sayfadaki tumunu sec ile bir projeye atama - Server: rematchOrphanDevlogs, reassignDevlogProject, bulkReassignDevlogs actionlari Akis: projeye githubUrl ekle -> rematch tikla -> orphan'lar atanir. Eslesmeyenler icin dropdown veya bulk form ile manuel atama. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
devlog yonetimi github commits stiline kavusturuldu
feat: devlog yonetimi github commits stiline kavusturuldu Admin sayfasi: - Tarihe gore gruplandirilmis kompakt satirlar (GitHub commits gibi) - Kategori renkli nokta + SHA + baslik + proje rozeti + saat - Pagination: ilk 50 commit, "Daha fazla yukle" butonu - Proje seciliyken kategori bazli batch yayinla/gizle butonlari - Manuel gunluk formu collapsible (default kapali) - Proje filtresi DB seviyesinde (client-side filter degil) - version (v1, v2) gosterimi UI'dan kaldirildi Public sayfa: - Tarihe gore gruplandirilmis liste - Sadece baslik + ilgili proje adi + icerik - Link/external link kaldirildi - version badge kaldirildi Yeni server fonksiyonlari: - getDevlogs: projectFilter + take parametreleri - getDevlogCounts: sekme sayilari icin groupBy - getDevlogProjectStats: proje icin kategori bazli istatistik - bulkToggleDevlogs action: proje + kategori bazli toplu yayinla/gizle Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
devlog label sistemi, versiyonlama, proje filtresi, rename
feat: devlog label sistemi, versiyonlama, proje filtresi, rename - Admin devlog sayfasina proje bazli filtre sekmeleri eklendi - Her proje renkli badge ile etiketlendi (emerald=Diyet Takip, cyan=canberktamyigit) - GitHub commitler v1,v2,v3... sirasiyla otomatik numaralandiriliyor - Yeniden Numaralandir butonu mevcut commit versiyonlarini duzeltir - canberk-dev -> canberktamyigit.com.tr olarak guncellendi Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
github commitler taslak gelir, tek tikla yayinla/gizle
feat: github commitler taslak gelir, tek tikla yayinla/gizle - Sync ile gelen tum commitler DRAFT olarak eklenir (published: false) - Devlog admin kartinda Yayinla/Gizle toggle butonu eklendi - Taslak kartlar soluk gozukur, sari Taslak badge gosterir Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Dinamik OG görseli ve RSS feed eklendi
Edge Runtime üzerinde next/og ile dinamik OpenGraph görseli üretimi ve devlog akışı için /feed.xml RSS endpoint'i oluşturuldu.
Admin panel CRUD sistemi tamamlandı
Projeler, devlog, timeline, teknoloji ve medya yönetimi için tam CRUD akışı oluşturuldu. Server Actions ile form validasyonu ve revalidatePath entegrasyonu yapıldı.
temp: tum env key listesi debug
temp: tum env key listesi debug
temp: env debug endpoint
temp: env debug endpoint
github sync kullanici adi bazli, private repo destegi
feat: github sync kullanici adi bazli, private repo destegi - Proje githubUrl zorunlulugu kaldirildi - /user/repos ile token varsa private dahil tum repolar cekiliyor - Repo adi projenin githubUrl ile eslesirse otomatik baglanir - Eslesmezse devlog proje bagı olmadan yine de eklenir - NEXT_PUBLIC_GITHUB_USERNAME env degiskeni kullaniliyor Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
proje düzenleme + GitHub commit otomatik devlog içe aktarma
feat: proje düzenleme + GitHub commit otomatik devlog içe aktarma - Proje listesine Düzenle butonu eklendi, /internal/projects/[id] edit sayfası - server/queries.ts: getProject(id) eklendi - Devlog şemasına commitSha (unique) ve commitUrl alanları eklendi - server/github-sync.ts: GitHub API commit sync mantığı - server/actions.ts: syncGitHubDevlogs server action - Devlog admin paneline GitHub İçe Aktar butonu eklendi Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
production auth & gerçek proje verileri
feat: production auth & gerçek proje verileri - bcryptjs kaldırıldı, ADMIN_PASSWORD env ile plain text auth - Tüm fallback default secret'lar kaldırıldı (JWT_SECRET zorunlu) - Seed: sahte projeler silindi, gerçek projeler (Diyet Takip, Canberk.dev) eklendi Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
istatistik & bilgisayar bilimleri arka planı entegrasyonu
feat: istatistik & bilgisayar bilimleri arka planı entegrasyonu - About sayfası yeniden yazıldı: İstatistik×Yazılım kesişimi ana tez - Stack sayfası: Veri & İstatistik kategorisi öne çıkarıldı (lisans vurgusu) - Fallback tech: R, pandas, numpy, scipy, istatistiksel yöntemler eklendi - statusLabel: Data & Statistics → Veri & İstatistik - Homepage buildScopes: Veri & İstatistik eklendi (5 kart) - CV: Eğitim bölümü + istatistik odaklı özet eklendi Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
gerçek projeler, admin mesajlar sayfası
feat: gerçek projeler, admin mesajlar sayfası - Sahte örnek projeler kaldırıldı (ClinicOps, DeployPulse) - Diyet Takip: Flask+React full-stack SaaS, tam detay eklendi - Canberk.dev: portfolyo platform detayları eklendi - Gerçek devlog ve timeline verileri güncellendi - Admin: /internal/messages sayfası — okundu/sil işlemleri - Admin nav: Mesajlar linki + okunmamış sayı rozeti - AdminShell async server component olarak güncellendi Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
kapsamlı portfolio güncellemesi
feat: kapsamlı portfolio güncellemesi Admin gizleme, mobile nav, i18n (TR/EN), dinamik OG görseli, RSS feed, CV sayfası, Ctrl+K arama, GitHub aktivitesi, müsaitlik rozeti + admin toggle, proje devlog görselleştirme, demo video embed, proje önizleme butonu, iletişim email bildirimi (Resend), Umami analytics desteği, demoVideoUrl alanı. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
first commit
first commit