Evde yapılan espresso çekimleri genellikle sadece bir zamanlayıcıyla sınırlı kalır. Oysa bir barista, çekimin gramajından süresine, basınç profilinden öğütme inceliğine kadar onlarca değişkeni dikkate alır. Bu veriler kağıt notlar veya zihinsel notlarla takip edildiğinde, bir sorun yaşandığında geçmişe dair net bir kaynak bulmak neredeyse imkansız hale geliyor. H0 Hackathon için geliştirilen BrewCore, espresso deneyimini veri odaklı bir sisteme dönüştürmeyi hedefliyor.
BrewCore’un temel amacı, ev baristalarını verilerle donatılmış birer veri bilimciye çevirmek. Proje, Next.js 15, Vercel, Amazon DynamoDB ve Amazon Bedrock gibi modern araçlarla inşa edildi. Bu sayede, sadece bir çekim süresi değil, aynı zamanda çekimin tüm parametreleri, çekilen kahve miktarı ve hatta stok durumları da sistematik olarak kaydediliyor.
Veri Odaklı Espresso için Altyapı Tasarımı
BrewCore’un en önemli özelliklerinden biri, kullanıcı dostu bir arayüzle birlikte sağlam bir arka uç mimarisine sahip olması. Proje, dört temel aşamadan oluşan bir veri akışıyla çalışıyor:
- Kullanıcı Etkileşimi: React tabanlı bir progresif web uygulaması olarak tasarlanan BrewCore, kullanıcıların çekim verilerini girmelerini ve geçmiş kayıtları incelemelerini sağlıyor. Bu uygulama, Next.js 15 Server Actions kullanılarak doğrudan Vercel üzerinde barındırılıyor.
- Güvenlik ve Kimlik Doğrulama: Kullanıcı girişleri ve oturum yönetimi, Amazon Cognito User Pool üzerinden edge düzeyinde gerçekleştiriliyor. Bu sayede, kullanıcı verileri güvenli bir şekilde korunurken, sistem performansı da optimize ediliyor.
- Veri Depolama: BrewCore, geleneksel API Gateway veya Lambda katmanlarına ihtiyaç duymadan doğrudan DynamoDB’ye veri yazıyor. AWS SDK v3 kullanılarak yapılan bu işlemler, hem basit hem de güvenilir bir veri yönetimi sunuyor.
- Yapay Zeka Destekli Koçluk: Kullanıcıların geçmiş çekim verilerini analiz eden sistem, Amazon Bedrock Converse API üzerinden çalışan
nova-micromodelini kullanarak kişiselleştirilmiş tavsiyeler sunuyor. Bu sayede, "öğütme inceliğini artır" gibi genel tavsiyeler yerine, kullanıcının geçmiş verilerine dayalı spesifik öneriler elde edilebiliyor.
DynamoDB: Veri Modeli ve Performans Optimizasyonu
Veritabanı seçimi, BrewCore’un en kritik kararlarından biriydi. Çoğu geliştirici ilişkisel veritabanlarını tercih ederken, bu projede DynamoDB’nin çok tablolu tasarımı benimsendi. Bu yaklaşım, kullanıcı arayüzünün davranışına doğrudan uyum sağlayarak, sorgulama performansını maksimum düzeye çıkardı.
Projenin veri modeli, aşağıdaki tablolardan oluşuyor:
users: Kullanıcı profilleri ve özel ayarları saklıyor.beans: Kahve çekirdeklerinin stok durumunu, kavurma verilerini ve düşük stok uyarılarını yönetiyor.shots: Çekim parametrelerini (öğütme inceliği, dozaj, verim, süre ve lezzet profilleri) detaylı olarak kaydediyor.interactionsvecomments: Topluluk beslemesindeki beğeni ve yorumları takip ediyor.user_stats: Önceden hesaplanmış istatistik verileriyle, çalışma zamanı hesaplamalarını minimize ediyor.followsveproduct_states: Sosyal grafik yönetimi ve kullanıcı arayüzündeki durum bayraklarını kontrol ediyor.
Bu tasarım sayesinde, veriler üzerinde yapılan sorguların tamamı O(1) karmaşıklığına sahip anahtar-değer erişimleriyle gerçekleştiriliyor. Ayrıca, Global Secondary Indexes (GSIs) kullanılarak hedeflenen sorguların performansı da optimize edildi.
Geliştirme Sürecindeki Pratik İpuçları
Hackathon’larda karşılaşılan en büyük zorluklardan biri, bulut altyapısının kurulma sürecidir. BrewCore’un geliştiricisi, bu sorunu çift arka uç arayüzü yaklaşımıyla çözdü. Öncelikle, yerel localStorage üzerinde DynamoDB’nin veri yapısına tamamen uyumlu bir mock sistemi oluşturuldu. Bu sayede, geliştirme süreci tamamen çevrimdışı olarak tamamlandı. Hazır olduğunda ise yalnızca bir ortam değişkeni değiştirilerek, üretimdeki AWS tablolarına geçiş yapıldı.
Bu yaklaşım, hem geliştirme sürecini hızlandırdı hem de hata ayıklama sürecini kolaylaştırdı. Ayrıca, bulut altyapısına geçiş yapıldıktan sonra da yerel ortamda yapılan testlerle sistemin doğruluğu doğrulandı.
Yapay Zekanın Kişiselleştirilmiş Espresso Tavsiyeleri
Genel yapay zeka tavsiyeleri, espresso için çoğu zaman işe yaramıyor. Örneğin, "öğütme inceliğini artır" gibi bir öneri, kullanıcının mevcut öğütme ayarlarını, makine özelliklerini veya geçmiş verilerini bilmediğinde anlamsız kalıyor. BrewCore’da bu sorunun üstesinden gelmek için yapay zekaya gerçek zamanlı veri erişimi sağlandı.
Kullanıcının geçmiş çekim verileri, makine ayarları ve çekirdek stok bilgileri, yapay zekaya bir JSON payload olarak iletildi. Bu sayede, model sadece genel bilgilerle değil, kullanıcının özel durumu hakkında da analiz yapabiliyor. Örneğin, bir kullanıcı geçmişte daha ince öğütmeyle daha düşük sıcaklıkta iyi sonuçlar aldıysa, sistem gelecekteki önerilerini bu verilere dayandırıyor.
Geliştirme Sürecinden Çıkarılan Dersler
- Next.js Server Actions için hata yönetimi kritik öneme sahip. Geleneksel HTTP durum kodları olmadan doğrudan DynamoDB’ye yazan Server Actions, beklenmedik hatalara karşı savunmasız hale geliyor. Bu nedenle, tüm veri işlemleri için global hata yakalama mekanizmaları kurulması gerekiyor. AWS SDK’dan gelen hatalar kullanıcı dostu uyarılara dönüştürülerek, hem güvenlik hem de kullanıcı deneyimi korunmuş oluyor.
- DynamoDB GSIs için veri türleri önem taşıyor. Topluluk beslemesi için bir GSI kurarken, Terraform’un varsayılan olarak yalnızca string (
S), number (N) veya binary (B) veri türlerini desteklediği fark edildi. Başlangıçta boolean olarak modellenenisPublicözelliği, altyapı provisioning’inde başarısızlığa yol açtı. Bu sorunun üstesinden gelmek için boolean değerler string olarak ("true"veya"false") saklandı.
- LLM’ler için katı veri bağlamı şart. Amazon Bedrock’un
nova-micromodeliyle yapılan ilk denemelerde, model genellikle kullanıcının geçmiş verilerini dikkate almadan genel tavsiyelerde bulunuyordu. Bu sorunun çözümü, kullanıcının son üç çekim verisinin JSON formatında modele iletilmesiyle sağlandı. Bu sayede, model artık geçmişe dayalı analizler yapabiliyor ve daha kişiselleştirilmiş öneriler sunabiliyor.
BrewCore, evde espresso deneyimini veri odaklı bir sisteme dönüştürerek, hem baristaların hem de kahve meraklılarının işini kolaylaştırıyor. Gelecekte, bu proje daha da genişleyerek topluluk özellikleri ve gelişmiş yapay zeka analizleriyle zenginleştirilebilir. Kahve tutkunları için bu yenilikçi yaklaşım, hem eğlenceli hem de verimli bir deneyim sunmaya devam edecek.
Yapay zeka özeti
H0 Hackathon için geliştirilen BrewCore, Next.js 15, Vercel ve DynamoDB ile evde espresso çekimini veri odaklı bir sisteme dönüştürüyor. Kişiselleştirilmiş AI tavsiyeleriyle kullanıcı deneyimini nasıl iyileştirdiğini keşfedin.