Halkarz Taskinnovation'ı bir ailenin farklı bankalardaki yatırım hesaplarını tek yerden takip etmek için geliştirdim. Kullanıcı yönettiği kişileri ekliyor, her kişiye banka hesabı açıyor, hisseleri ve nakit hareketlerini o hesabın altına giriyor. Halka arza katılan hisseler için ayrı bir ekran var. Uygulama alım satım yapmıyor, yatırım tavsiyesi de vermiyor; kullanıcının girdiği kayıtları düzenli tutup değerliyor.
Hesaplar, işlemler ve halka arz sonuçları
Hisse miktarını elle değiştirmek yerine işlem kaydı tutuyorum: para yatırma, para çekme, alış, satış ve hesaplar arası aktarım. Tutarlar en fazla iki, adet ve birim fiyat en fazla dört ondalık basamak alıyor. Fiyatlar Türk lirası üzerinden tutuluyor.
Halka arz sonuçlanınca her hisse için tam onay, kısmi onay ya da "halka arz değil" seçiliyor. Kısmi onayda her hesap için onaylanan lot giriliyor ve onaylanmayan kısım için iade kaydı kendiliğinden oluşuyor. Aynı istek iki kez gelirse iade ikinci kez yazılmıyor; bunu veritabanı işleminin içinde yerleşim durumunu yeniden okuyarak çözdüm. Analiz ekranında da bir halka arzı farklı senaryolarla simüle etmek mümkün.
Piyasa verisi
Fiyatları Yahoo Finance'ten yahoo-finance2 paketiyle çekiyorum. Her ekran dış servise ayrı ayrı gitmesin diye fiyatlar veritabanında ortak bir önbellekte duruyor. Servis istek sınırına takılırsa (429) bütün uygulama bir süre bekliyor, sonra tekrar deniyor. Fiyatın yanında piyasadaki gerçek zaman damgası da gösteriliyor, yani borsa kapalıyken eski bir fiyat güncelmiş gibi görünmüyor.
Teknik tarafta
Uygulamayı Next.js ve React ile yazdım, veri erişiminde Prisma kullanıyorum. PostgreSQL ve MySQL/MariaDB destekleniyor; her biri için ayrı migration geçmişi var. Giriş Better Auth ile yapılıyor ve her kullanıcı yalnız kendi kişilerini, hesaplarını ve işlemlerini görüyor. Grafikler Recharts ile çiziliyor.
Mobil istemciler için /api/v1 altında sürümlü bir API hazırladım; sözleşmesi betikle üretilen bir OpenAPI dosyasında duruyor. Testlerde Jest ve Playwright kullanıyorum.
