Zirve Asansör sayfasına dön
TabelaII

Yönetim Paneli — Patronun Masaüstü Paneli

2026'da tek kullanıcı için masaüstü uygulaması yazmak tuhaf bir tercihti ve bunu bilerek yaptım.

Rol

JavaFX'i ben seçtim, her ekranın nasıl davranacağına ben karar verdim, sonra yapımı backend'in sözleşmesine karşı yapay zekâ kodlama ajanlarıyla yürüttüm. Referans bu uygulama; iPad sürümü onu ekran ekran kopyalıyor ve üstüne bir şey eklemesine izin yok.

Stack

Java 21JavaFXMavenHttpClientJacksonWebViewopenhtmltopdfJUnit
Yönetim Paneli — Patronun Masaüstü Paneli

Overview

2026'da tek kullanıcı için masaüstü uygulaması yazmak tuhaf bir tercihti ve bunu bilerek yaptım. Java biliyorum, sistemde JavaScript olmayan bir istemci olsun istiyordum ve masaüstü istemci sunucuyla sessizce kod paylaşamıyor; bu yüzden REST API'nin ilk günden eksiksiz olması gerekti. Bu o uygulama: JavaFX, panelden araç listesine dokuz bölüm, backend'e Java'nın HttpClient'ıyla bağlanıyor. Tahsilat, kaydedilmeden önce hangi ayları kapatacağını gösteriyor, sonra firmanın kâğıt makbuzunu antetiyle ve imzasıyla kopyalayan bir makbuz basıyor. Sözleşmeler ve finans raporları da aynı yoldan gidiyor: WebView'da önizleme, sonra PDF.

Neler yapıyor

  • IDiğer istemcilerle aynı kilitli REST sözleşmesi üzerinde dokuz bölüm
  • IIKaydetmeden önce gösterilen, hangi ayları kapattığını söyleyen ödeme önizlemesi
  • IIIWebView'da önizlenip PDF'e aktarılan makbuz, sözleşme ve finans raporu
  • IVAntet, ofis telefonları ve personel cepleri git dışı bir dosyadan okunuyor. Hiçbiri kaynakta yazılı değil
  • VTürkçe harfleri katlayan arama; sisli yazınca Şişli bulunuyor

Ekranlar

Giriş
Giriş
Panel
Panel
Yenilemesi gelen sözleşmeler
Yenilemesi gelen sözleşmeler
Türkçeyi katlayan arama
Türkçeyi katlayan arama
Bakım ziyaretleri
Bakım ziyaretleri
Gelir ve giderler
Gelir ve giderler
Ödeme takip
Ödeme takip
Kaydetmeden önce önizleme
Kaydetmeden önce önizleme
Makbuz penceresi
Makbuz penceresi
Teknisyenler
Teknisyenler

Teknik notlar

  • IBastığı ilk sözleşmelerden biri teknisyenlerin adlarının yanında iki uydurma cep numarası taşıyordu. Git geçmişi temizlenirken gerçek numaraların yerine konmuş yer tutuculardı ve resmi bir belgenin üstünde tamamen inandırıcı duruyorlardı. Bütün adresler, telefonlar ve personel adları git dışı config/letterhead.properties dosyasına taşındı; commit'lenmiş bir şablonu var.
  • IIArama toLowerCase kullanıyordu ve Türkçede sessizce başarısız oluyordu. Türkçe yerel ayarı olmayan bir JVM'de büyük İ, i artı birleşik bir noktaya dönüşüyor ve yazılan i ile hiç eşleşmiyor; aksan katlama da yoktu. Artık İ ve I sabit bir yerel ayarla küçültülmeden önce açıkça eşleniyor ve her karşılaştırmanın iki tarafı da katlanıyor.
  • IIImacOS'ta bir modalı kapatıp aynı olayda bir diyalog açmak JavaFX'i donduruyor. Sözleşme oluşturmak bomboş beyaz bir onay penceresi gösteriyordu ve arkadaki liste hiç yenilenmiyordu. Kayıt sağlamdı; takılan arayüzdü. Aynı şekil üç yerde daha vardı, yeni personelin geçici şifresini gösteren tek diyalog dahil. Her biri artık diyaloğu Platform.runLater ile bir sonraki olaya erteliyor.

Neler öğrendim

Makbuzda patronun imzası bir süre yanlış kutuda durdu. Tahsilat makbuzunda parayı müşteri verir, firma alır; yani firma teslim alanın kutusuna, Teslim Alan'a imza atar. İlk sürüm imzayı Teslim Eden'e koymuştu. Bu, ancak hiç makbuz doldurmamışsanız yapacağınız türden bir hata.