Çoğu yan proje basit bir hayal kırıklığıyla başlar. Benimkiyse bankacılık uygulamasından kaynaklanan bir sıkıntıdan doğdu.
Bir bankamda, harcama alışkanlıklarımı grafikler ve raporlarla görmemi sağlayan kullanışlı bir özellik vardı. Restoranlara, marketlere, ulaşım masraflarına ve diğer kategorilere ne kadar harcama yaptığımı kolayca takip edebiliyordum. Fakat bu özellik sadece bir bankamda bulunuyordu.
Birçok kişi gibi ben de farklı bankalarda hesaplar, kredi kartları ve tasarruf hesapları kullanıyordum. Diğer bankalarımda ise sadece uzun bir işlem listesi sunuluyordu. Tüm finansal durumumu görmek için uygulamalar arasında sürekli geçiş yapmak ve verileri manuel olarak birleştirmek zorunda kalıyordum.
Yazılım mühendisi olarak ilk tepkim elbette şu oldu:
"Bunu kendim neden yapmayayım?"
Bu fikir nihayetinde MyVault projesine dönüştü.
Basit Bir Başlangıç: Tüm Hesapları Tek Bir Ekranda
Projenin ilk sürümü oldukça basitti. Amacım şuydu:
- Banka ekstrelerini yükleyin
- İşlem verilerini otomatik olarak çıkar
- Harcamaları otomatik olarak kategorilere ayır
- Kullanışlı grafikler ve raporlar görün
Başlangıçta hedef bütçe yönetimi, yatırım takibi veya muhasebe değildi. Sadece tüm banka hesaplarımdaki harcamaları tek bir yerde görmek istiyordum.
Projeyi geliştirmeye başladıkça, aslında çok daha ilginç bir fırsatın ortaya çıktığını fark ettim. Tüm veriler zaten yapılandırılmışken, kullanıcıların finansları hakkında doğal dilde sorular sormalarını sağlamak mümkündü:
- "Geçen yıl restoranlara ne kadar harcama yaptım?"
- "Hangi abonelikler için ödeme yapıyorum?"
- "Bu ay hangi kategorilere en fazla harcama yaptım?"
- "Seyahat sırasında ne kadar para harcadım?"
Bu aşamadan sonra MyVault, sıradan bir raporlama aracından AI destekli finansal asistana evrildi.
Tek Başına Geliştirmek: Zorluklar ve Avantajlar
En büyük mücadele teknolojik sınırlar değildi. Tek başıma her şeyi yapmak zorundaydım.
Bir yan projede sadece kod yazmıyorsunuz. Aynı zamanda:
- Ürün kararlarını veriyorsunuz
- Arka uç geliştirmeyi yapıyorsunuz
- Ön uç geliştirmeyi gerçekleştiriyorsunuz
- Altyapıyı kuruyorsunuz
- Testleri yürütüyorsunuz
- Güvenlik önlemlerini alıyorsunuz
- Destek sağlıyorsunuz
- Pazarlama faaliyetlerini yürütüyorsunuz
Büyük bir şirkette tek bir özellik bile birçok mühendis, tasarımcı, ürün yöneticisi ve kalite kontrol uzmanı gerektirebilir. Oysa tek başına her karar sizin masanızda son buluyor.
Avantaj hız. Dezavantaj ise bir şeyler bozulduğunda suçlayacak kimsenin olmaması.
Next.js ile Öğrenilen Dersler
Profesyonel kariyerim çoğunlukla arka uç geliştirme üzerineydi. Bu nedenle, MyVault için ön uç geliştirmeyi Next.js kullanarak yaptım.
Bu karar projenin en eğitici kısımlarından biri oldu. Modern ön uç geliştirme sadece sayfaları render etmekten ibaret değil. Öğrendiklerim arasında:
- Sunucu tarafı render etme
- Statik sayfa oluşturma
- SEO iyileştirme
- Meta verileri yönetme
- Uluslararası yönlendirme
- İstemci ve sunucu bileşenleri
İyi bir kullanıcı deneyimi inşa etmek için sayısız küçük detaya odaklanmak gerektiğini çabuk kavradım. Bu detayların çoğu, her şey yolunda gittiğinde görünmez kalıyor.
FastAPI’nin Güçlü Yönleri
Arka uç için üretimde kullanmadığım bir teknoloji seçmek istedim. FastAPI’yi tercih ettim ve bu seçim proje için mükemmel bir karar oldu. FastAPI’nin sunduğu avantajlar:
- Güçlü tip güvenliği
- Otomatik API dokümantasyonu
- Yerleşik doğrulama
- Yüksek performans
- Modern Python geliştirmeye destek
MyVault’ın AI odaklı birçok özelliği olduğundan, Python ekosistemine dayalı geliştirme yapmak oldukça mantıklıydı. AI araçlarının çoğu Python’da ilk ortaya çıktığından, deneyler çok daha kolay hale geldi.
AI Kodlama Yardımcıları: Üretkenlik Devrimi
Yıllar önce, böyle bir projeyi tek başıma inşa etmek çok daha uzun sürerdi. Bugünse AI kodlama yardımcıları günlük çalışma akışımın vazgeçilmez bir parçası haline geldi. Kullandığım alanlar:
- Yeni teknolojileri keşfetmek
- Şablon kodları oluşturmak
- Sorunları hata ayıklamak
- Mevcut kodu yeniden yapılandırmak
- Dokümantasyon yazmak
- Bilinmeyen çatıları öğrenmek
En etkileyici olan, AI’nın kod yazması değil, öğrenme maliyetini düşürmesi. Arka uç mühendisi olarak, AI’nın kavramları açıklamasına, çözümler önermesine ve örnekler oluşturmasına yardımcı olması sayesinde ön uç zorluklarını çok daha hızlı aşabildim.
Elbette mühendislik yargısı hâlâ gerekli. Üretilen her şeyi dikkatle incelemek gerekiyor. Ancak verimlilik artışı göz ardı edilemeyecek kadar büyük.
Banka Ekstrelerini İşlemek: Tahmin Edilenden Zor
İlk başta banka ekstrelerini işlemenin kolay olacağını düşünmüştüm. PDF yükle, metni çıkar, iş bitmiş olsun.
Gerçeklikse çok farklıydı. Her bankanın ekstre formatı farklıydı. Karşılaştığım zorluklar:
- Tarih formatları
- Para birimi gösterimleri
- İşlem açıklamaları
- PDF düzenleri
- Ekstre yapıları
Basit gibi görünen şeyler bile, örneğin mağaza isimleri farklı şekillerde görünebiliyordu. Faydalı analizler yapılabilmesi için verilerin önce tutarlı bir yapıya normalize edilmesi gerekiyordu. Ancak o zaman farklı bankalardan alınan veriler anlamlı karşılaştırmalara tabi tutulabiliyordu.
Bu, projenin en ilginç teknik zorluklarından biri haline geldi.
22 Dile ve 24 Para Birimine Destek
Projeyi başından itibaren dünya genelindeki kullanıcılara erişilebilir kılmak istedim. Bu da sadece kullanıcı arayüzünü değil, çok daha fazlasını çevirmek anlamına geliyordu:
- Gezinme menüleri
- Blog gönderileri
- Meta veriler
- Finansal kategoriler
- Kullanıcıya yönelik mesajlar
- Dokümantasyon
22 dile destek sağlamak heyecan verici görünse de, bu dilleri sürdürmek oldukça zahmetli. Yeni bir özellik eklemek, düzinelerce yerelleştirilmiş versiyonu etkileyebiliyor. Küçük bir metin değişikliği bile aniden çok daha büyük bir görev haline gelebiliyor.
Tüm bu karmaşaya rağmen, yerelleştirmenin çabağa değer olduğunu düşünüyorum. Çünkü birçok ürün, kullanıcıların İngilizce bilmediğini varsayıyor. Bu durumda, global erişim sağlamak için yerelleştirme kaçınılmaz bir adım oluyor.
Finansal sistemler, çoklu para birimleri devreye girdiğinde daha karmaşık hale geliyor. Farklı para birimleri arasındaki kur farklarını hesaba katmak, döviz kuru dönüşümlerini doğru şekilde yönetmek ve kullanıcılara net sonuçlar sunabilmek için ekstra algoritmalar ve doğrulama mekanizmaları gerekiyor. Bu da projenin teknik derinliğini bir kat daha artırıyor.
Yapay zeka özeti
Farklı bankalardaki tüm harcama verilerinizi tek bir yerde analiz edin. Makine öğrenmesi destekli MyVault ile finansal durumunuzu kolayca takip edin.