Furkan Durna — Full Stack Developer
Ölçeklenen, hesabı doğru kapatan ve ağ çalışmadığında da çalışmaya devam eden yazılımlar.
Ölçeklenebilir yazılım mimarileri, oyunlar ve web uygulamaları geliştiriyorum. Performansa, güvenilirliğe ve ölçeklenmek üzere tasarlanmış altyapıya odaklanıyorum.
Serbest ve sözleşmeli işlere açığım.
İletişim: LinkedIn veya bu sitedeki Posta uygulamasında bulunan iletişim formu. Çalışma dilleri: Türkçe ve İngilizce.
Site nasıl çalışıyor
Site bir masaüstü işletim sistemi gibi görünür. Uygulamalar dock'tan (varsayılan olarak ekranın altında) ve masaüstü simgelerinden pencere olarak açılır; telefonda tam ekran ve tek tek açılır. Üst çubuktaki EN/TR düğmesi dili değiştirir.
- Hakkımda: profil, yetenekler ve müsaitlik durumu, /tr/about adresinde de var.
- Projeler: her proje için açıklama, kullanılan teknolojiler, bağlantılar ve mümkün olduğunda canlı demo. Her projenin /tr/projects altında kendi sayfası da var.
- Deneyim: iş geçmişi.
- Blog: projeler hakkında teknik yazılar, /tr/blog adresinde de var.
- Posta: iletişim formu. Herkese açık bir e-posta adresi yok; buradan gönderilen mesajlar doğrudan Furkan'a ulaşır.
- Terminal: küçük bir kabuk. Komutları görmek için help yazın.
- Tarayıcı: projelerin sitenin içine gömülü canlı demoları.
- Müzik: bir Spotify çalma listesi.
- Mini oyunlar: GitHub katkı grafiği üzerinde oynanan Yılan ve Tetris. /tr/games/snake ve /tr/games/tetris masaüstünü o oyun açık şekilde başlatır.
- Ayarlar: vurgu rengi, duvar kâğıdı, dock, ses, oyun kontrolleri ve erişilebilirlik.
Masaüstündeki her şey bu sayfada ve /llms.txt adresinde düz metin olarak da var. Site / adresinde İngilizce, /tr adresinde Türkçe.
Yetenekler
TypeScript, Dart, PHP, Python, C, Java, Bash, React, Next.js, Tailwind CSS, Flutter, Node.js, Express, FastAPI, Supabase, PostgreSQL, Redis, Docker, n8n, NocoDB, Airtable, Godot 3 & 4, Agentic coding, Cursor (CLI), Claude Code
Projeler
The Finger of Hope (2025–2026)
Tek bir dokunuş, kullanıcının konumunu içeren bir acil durum uyarısını güvenilen kişilere gönderir; ardından bir "Güvendeyim" güncellemesi gelir. Sunucuya ulaşılamadığında bir iletim durum makinesi sırasıyla SMS, Wi-Fi Direct, BLE ve Huawei Nearby kanallarına geçer; her mesajı kanala sığacak şekilde parçalara böler ve atlama ve süre sınırlarıyla telefondan telefona aktarır. Üç kod tabanı var: Huawei Mobile Services üzerinde yerel bir Java uygulaması, Google cihazları için bir Flutter uygulaması ve PostgreSQL, Redis iş kuyrukları, WebSocket'ler, çift push iletimi (FCM ve Huawei Push) ve Prometheus metrikleri içeren bir TypeScript/Express sunucusu. Huawei'nin İnovasyon Kategorisi yarışması için geliştirildi; 2025'te birinci, 2026'da ikinci oldu. Geliştirme 2026 yarışmasından sonra durduruldu; temel özellikler tamamlanmış ve çalışır durumda: uyarılar, yedek kanal zinciri, telefondan telefona aktarma ve sunucu. Bir şifreleme katmanı (X25519, Ed25519, AES-256-GCM, anahtarlar Android Keystore'da) yazıldı ancak gönderim akışına bağlanmadı.
Stack: Java, Flutter, HMS Core, TypeScript, Express, PostgreSQL, Redis, Docker
Age of Pirates Online (2026)
Canlı bir çevrimiçi oyun olan Age of Pirates Online için sözleşmeli backend mühendisliği. Xsolla ödeme altyapısını web sitesine sıfırdan entegre ettim. Önceden her şeyi tek seferde yüklemeye çalışan sitenin yüklenme süresini sayfalı JSON, ön yükleme ve ~2 MB'lık bir aktarım sınırıyla yaklaşık %30 azalttım. İşleri ana thread'den yardımcı thread'lere taşıyıp düşük öncelikli işleri daha seyrek çalıştırarak sunucu tarafı işlem süresini yaklaşık %30 azalttım. Sunucuyu ve web sitesiyle bağlantısını UDP flood saldırılarına, rate-limit botlarına ve diğer otomatik saldırılara karşı sağlamlaştırdım; oyun sahibi için saatlik bir trafik ve saldırı raporu kurdum.
Stack: C, PHP, JavaScript
DRAPAI (2025)
Girdi olarak bir kişi fotoğrafı ve bir kıyafet; çıktı olarak o kıyafetin fotogerçekçi bir önizlemesi. Sonuçlar cihaz üzerinde çalışan bir Studio'da düzenlenebilir ve yerel bir gardıropta saklanabilir. Üretim hattı bir iş yaşam döngüsü olarak çalışır: token'lar baştan bloke edilir ve yalnızca iş tamamlandığında tahsil edilir, böylece zaman aşımına uğrayan bir adım kullanıcıdan iki kez ücret alınmasına yol açmaz. Postgres satır düzeyinde güvenlik (row-level security) ve sunucu tarafı sahiplik kontrolleri her isteği korur.
Stack: Flutter, Dart, PostgreSQL, Next.js
gdmetrics (2026)
Her GDScript fonksiyonu için Cyclomatic Complexity ve Cognitive Complexity ölçen, ardından önce neyin düzeltilmesi gerektiğini söyleyen bir Godot editör eklentisi ve CLI. Editör paneli en öncelikli düzeltmeleri (Top fixes) sade etiketlerle (OK / Hard to read / Fix soon) listeler ve ilgili fonksiyona atlar; başarısızlık eşiğini aşan fonksiyonlar script editöründe işaretlenir. CLI, JSON ve CSV raporları ile CI için bir eşik kontrolü sunar ve bir GitHub Actions örneği içerir. İki sürüm tek bir çekirdeği paylaşır: Godot 4.2+ için gdmetrics-g4 ve Godot 3.1+ için gdmetrics-g3; yerel bir sürüm matrisinde test edildi. itch.io'da yayınlandı.
Stack: GDScript, Godot 3, Godot 4, GitHub Actions
Gerilim Elektrik (2025)
Balıkesir Dursunbey'de faaliyet gösteren elektrik, enerji ve inşaat yüklenicisi Gerilim Elektrik için kurumsal web sitesi: alçak/orta gerilim işleri, güneş enerjisi kurulumları ve inşaat ile iç mekân projeleri; proje galerisi ve telefon/WhatsApp iletişimi. Site sahibi içeriği ve galeri görsellerini, çakışan düzenlemelere ve mükerrer gönderimlere karşı önlemler içeren bir yönetim paneli üzerinden yönetir.
Stack: React, TypeScript, Tailwind CSS, Node.js, PostgreSQL
Track Analyzer (2025)
Spotify kataloglarını izlemek için bir FastAPI backend ve React paneli: bölgesel pazarlarda çalma listelerinde ve sanatçı kataloglarında çalınamaz hâle gelen parçaların tespiti, bir sanatçıya yer veren çalma listelerinin bulunması ve Soundcharts API'sinden günlük ortalamalarla dinlenme geçmişi. Toplu güncellemeler rate limiting ve loglama ile arka plan görevleri olarak çalışır.
Stack: Python, FastAPI, React, TypeScript, Docker
HARDWEY Web (2025)
Sanatçıların markalarından hisse satın almaya yönelik bir uygulama olan HARDWEY için tanıtım sitesi. Her bölüm (hero, SSS, kurucular, iş ortakları, yasal sayfalar) yeniden deploy etmeye gerek kalmadan bir yönetim uygulamasından düzenlenebilir: React sitesi tüm içeriği tek bir istekte yükler; bir Express API her bölümü SQLite'ta JSON olarak saklar, görsel yüklemelerini yönetir ve düzenlemeleri httpOnly cookie token'ları ve CSRF token'larıyla korur.
Stack: React, TypeScript, Vite, Express, SQLite
Zarhan İnşaat (2023)
Bursa, Erzurum ve İstanbul'da ofisleri bulunan inşaat şirketi Zarhan İnşaat için kurumsal web sitesi. Şirket profili, inşaat ve taahhüt hizmetleri, görsel galerili proje portföyü, referanslar, iş ortakları ve ofis iletişim bilgilerini kapsar. Şirketin projeleri bir geliştiriciye ihtiyaç duymadan yayınlayabilmesi için WordPress üzerine kuruldu.
Stack: WordPress, PHP
Deneyim
Full Stack Developer, DRAPAI (2025 – Günümüz)
- App Store ve Google Play'de yayında olan yapay zekâ destekli sanal kıyafet deneme uygulaması DRAPAI'yi geliştirdim: girdi olarak bir kişi fotoğrafı ve bir kıyafet görseli, çıktı olarak kıyafetin fotogerçekçi bir önizlemesi.
- Cihaz üzerinde çalışan fotoğraf düzenleyici ve yerel gardırop içeren çapraz platform mobil istemci.
- Satır düzeyinde güvenlik (row-level security), sosyal giriş ve herhangi bir üretim başlamadan önce sunucu tarafı sahiplik kontrolleri içeren Postgres backend.
- Token'ların önce bloke edildiği ve yalnızca iş tamamlandığında tahsil edildiği, iş yaşam döngüsü olarak modellenmiş üretim hattı.
- Her iki mağazada uygulama içi token satın alımları ve abonelikler, ayrıca iki dilli (EN/TR) bir tanıtım sitesi.
Backend Yazılım Mühendisi (Sözleşmeli), Age of Pirates Online (Haz 2026)
- Xsolla ödeme altyapısını oyunun web sitesine sıfırdan entegre ettim.
- Web sitesi yüklenme süresini %30 azalttım: JSON yanıtlarını sayfalara böldüm, ön yükleme ekledim, önceden her şeyi tek seferde yükleyen siteye ~2 MB'lık bir aktarım sınırı koydum ve iç içe geçmiş kodu sadeleştirdim.
- İşleri ana thread'den yardımcı thread'lere taşıyıp düşük öncelikli iş türlerini daha seyrek çalıştırarak sunucu tarafı işlem süresini %30 azalttım.
- Seçili API gateway'lerde sunucuyu ve oyun sunucusu ile web sitesi arasındaki iletişimi sağlamlaştırdım: kötüye kullanan IP'leri engelleme, UDP flood filtreleme, bir CDN koruma katmanı ve erişim kontrolü, yedekleme, izleme, zamanlanmış yeniden başlatma ve dosya izinleri için bir temel yapılandırma.
- Oyun sahibinin Discord'una trafik, IP dağılımı, erişim denemeleri ve endpoint başına saldırıları içeren saatlik bir rapor kurdum.
Full Stack Developer Stajyeri, Level2app (Ağu 2024 – Eyl 2024)
- Ödemeler, veritabanı bağlantıları, sunucu kararlılığı ve iş akışlarını kolaylaştırma amacıyla kullanılan 5'ten fazla dahili API geliştirdim.
Full Stack Developer, Softworks LLC (2021 – 2024)
- Markalar ve işletmeler için talep üzerine, gereksinimlerden yayına kadar web siteleri geliştirdim.
- Ürün katalogları, sepet, ödeme adımı ve ürün ile sipariş yönetimi için yönetim panelleri içeren e-ticaret mağazaları teslim ettim.
- Projeleri frontend, backend ve deployment dahil uçtan uca üstlendim.
Full Stack Developer, Cafesoft (2017 – 2019)
- Yerel kafeler ve pub'lar tarafından kullanılan bir restoran işletim sistemi olan Cafesoft'u geliştirdim.
- Dijital menü, masa ve sipariş yönetimi; menüler, fiyatlar ve günlük operasyonlar için bir arka ofis.
Full Stack Developer, Finde360 (2016 – 2017)
- Platformun tamamını geliştirdim: kullanıcıların ilan verdiği ve hizmet sağlayıcı bulduğu, talebe dayalı bir hizmet pazaryeri.
- Kategori, konum ve filtreli ilanlar, arama, kullanıcı hesapları ve profilleri, ayrıca moderasyon için bir yönetim paneli.
Full Stack Developer, Video yayın platformları (müşteri adları NDA kapsamında) (2012 – 2016)
- Yaygın olarak kullanılan film ve dizi yayın platformları geliştirdim ve bakımını yaptım.
- Tüm katmanları üstlendim: içerik kataloğu ve CMS, arama, video oynatıcı ve kullanıcıya dönük arayüz.
Blog
- Bir derin deniz sitesi nasıl DRAPAI'nin moda bloguna dönüştü — Bir NASA muhabbeti, neal.fun'ın Deep Sea sayfası ve arkadaşımla blog.drapai.com'u nasıl yaptığımız.
- Neden vibe coding değil de agentic coding — İkisinde de kodu bir yapay zekâ yazıyor. Fark, yazılan kodun nasıl kontrol edildiğinde ortaya çıkıyor. Döngüyü kapalı tutmanın nedenlerini, kanıtlarla ve bu siteyi geliştirirken yaşadığım somut örneklerle anlatmak istedim.
- Canlı bir online oyunda backend çalışması — Age of Pirates Online üzerinde bir ay: ödemeler, performans ve oyun sunucusu ile web sitesi arasındaki bağlantının korunması.
- İnternet olmadan da denemeye devam eden bir acil durum butonu — The Finger of Hope, güvenilen kişilere bir uyarı ve konum gönderiyor; ağ yoksa sırasıyla SMS, Wi-Fi Direct ve Bluetooth'a geçiyor. Yedek durum makinesi, mesh üzerinden aktarma ve Android'in pürüzlü yanları üzerine notlar.
- AST olmadan GDScript karmaşıklığını ölçmek — gdmetrics her GDScript fonksiyonuna cyclomatic ve cognitive complexity puanı veriyor, ardından önce neyi düzeltmeniz gerektiğini söylüyor. Godot'nun herkese açık bir parser API'si olmadığı için kendi tokenizer'ını getiriyor.
- Her bölümü düzenlenebilen bir tanıtım sitesi — HARDWEY'in sitesi her bölümü SQLite'ta JSON olarak tutuyor, her şeyi tek bir istekle yüklüyor ve eski içerik yapılarını küçük normalizer'larla idare ediyor. İçerik modeli, admin uygulaması ve hosting tuhaflıkları üzerine notlar.
- Bir Spotify kataloğunda erişilemez hale gelen parçaları izlemek — Track Analyzer, playlist'lerde ve sanatçı kataloglarında bölge bölge çalınamaz hale gelen parçaları bulan ve veri kaynağının sağladığından daha uzun bir dinlenme geçmişi tutan dahili bir araç.
- AI üretimlerini iki kez ücretlendirmeden ücretlendirmek — DRAPAI, herhangi bir adımın timeout'a düşebildiği bir pipeline boyunca token bakiyesini nasıl doğru tutuyor.
- Gerçek bir CMS'e sahip küçük işletme sitesi — Gerilim Elektrik'in sitesi: React ile yazılmış bir frontend, site sahibinin içerikleri düzenlediği bir API ve iki düzenlemenin birbirinin üzerine yazmasını engelleyen detaylar.
- WordPress ile bir inşaat firması sitesi kurmak — Zarhan İnşaat'ın kurumsal sitesi: neden WordPress, nasıl yapılandırıldı ve bugün neyi değiştirirdim.
- Bu siteyi yapmak — Masaüstü tarzındaki portfolyonun nasıl bir araya getirildiği.