Yapay Zeka Destekli Seyahat Rehberi Mobil Uygulaması: Mimari ve Teknik İnceleme
Kotlin, MVVM ve Firebase ile geliştirilmiş, Google Gemini API ile yapay zeka destekli öneriler ve chatbot içeren bir Android seyahat rehberi - lisans bitirme tezi projesi.

Bu, seyahat edenlerin yolculuklarını planlamasına, destinasyonları keşfetmesine ve deneyimlerini diğer kullanıcılarla paylaşmasına yardımcı olmak için geliştirdiğim, yapay zeka destekli bir Android seyahat rehberi uygulaması - lisans bitirme tezi projemdir.
Motivasyon
Mobil teknolojiyle birlikte seyahat alışkanlıkları köklü bir değişim geçirdi. Eskiden gezginler kağıt haritalara ve yerel halkın yardımına güvenirken, artık yola çıkmadan önce detaylı destinasyon bilgisine ulaşabiliyor, seyahat sırasında da anlık sorularına gerçek zamanlı cevap alabiliyor. Travel Guide, tam da bu değişimin üzerine kuruldu - rota planlama, destinasyon bilgisi, yerel öneriler ve gezgin topluluğunu tek bir uygulamada birleştirirken, yapay zekayı sonradan eklenmiş bir özellik değil, neredeyse her özelliğin içine işlenmiş bir bileşen olarak konumlandırdı.

Sistem Mimarisi (MVVM)
Proje, UI mantığını iş mantığından ayırmak ve özellikler arttıkça kod tabanını test edilebilir ve sürdürülebilir tutmak amacıyla özellikle seçilen MVVM (Model-View-ViewModel) desenini takip ediyor. Kod, net şekilde ayrılmış altı katmana bölündü:
- Model: uygulamanın temel varlıklarını temsil eden veri sınıfları -
Country,Explore(kullanıcı paylaşımları),Profile,User. - Repository: her veri alanı için tek doğruluk kaynağı, veri kaynakları (Firebase, REST API''ler) ile uygulamanın geri kalanı arasında aracılık eder -
AuthRepository,ExploreRepository,ProfileRepository,CountryRepository. - ViewModel: her özellik için UI durumunu ve iş mantığını tutar, veri kaynaklarıyla değil sadece repository''lerle iletişim kurar -
AuthViewModel,ExploreViewModel,ProfileViewModel,CountryViewModel. - Service: harici API iletişimini yönetir, Retrofit üzerine kurulu (
CountriesAPI,RetrofitClient). - Utils: tekrar kullanılabilir yardımcı sınıflar (
ApiUtilsAPI yapılandırması için,DateUtilstarih/saat işlemleri için). - View: Activity''ler, Fragment''ler ve XML layout''ları - UI''ı doğrudan render eden tek katman.

Veri tek, öngörülebilir bir yönde akar: View''daki bir kullanıcı etkileşimi ViewModel''e iletilir, ViewModel Repository üzerinden veri ister veya günceller, Repository de Firebase veya bir REST API ile konuşur. Sonuç, ViewModel üzerinden geri dönüp View''ı günceller. Bu yönü her özellikte tutarlı tutmak, yeni ekranlar eklendikçe kod tabanını çok daha kolay anlaşılır ve genişletilebilir kıldı.

Teknoloji Yığını
- Platform: Android, Google''ın resmi IDE''si Android Studio''da geliştirildi ve test edildi.
- Dil: Kotlin - kısa, null-safe syntax''ı ve Java ile tam uyumluluğu nedeniyle tercih edildi, 2017''den beri Google tarafından Android geliştirmesi için resmi olarak öneriliyor.
- Veritabanı: Firebase, üç ürünü kullanılarak:
- Güvenli kayıt/giriş için Firebase Authentication, e-posta ve şifre doğrulamasını ve güvenli kimlik bilgisi saklamayı yönetir.
- Anlık senkronize veri için Realtime Database - başlıca Explore gönderileri (başlık, ülke, mekan, kategori, puan, kullanıcı e-postası, fotoğraf linki) ve kullanıcı profilleri, değişiklikler yapıldıkça tüm cihazlarda anında güncellenir.
- Daha büyük ikili dosyalar için Firebase Storage - özellikle profil fotoğrafları ve gönderi görselleri.
- Ağ İletişimi: JSON-nesne dönüşümünü otomatik yapan, tip güvenli REST API çağrıları (GET/POST/PUT/DELETE) için Retrofit, verimli görsel yükleme, bellek duyarlı önbellekleme ve disk önbellekleme için Picasso ile birlikte.
- Versiyon kontrolü: Git, proje geliştirme boyunca GitHub''da barındırıldı ve izlendi.
API''ler Detaylı
- Google Gemini API: uygulamanın yapay zeka özelliklerinin merkezi. Kullanıcı prompt''ları (seçilen ülke + kategoriden dinamik oluşturulan veya doğrudan chatbot''a yazılan) Gemini''ye gönderilir, o da kullanıcının yazdığı dilde üretilmiş bir cevap döner, doğrudan UI''da render edilir.
- RestCountries API: dünyadaki her ülke için yapılandırılmış veri sağlar - isim, bayrak, başkent, nüfus, alan, bölge, para birimi - Ülkeler ekranının bilgi panelini besler.
- Google Maps API: uygulama içi haritayı render eder, normal/hibrit/uydu/arazi görünümleri arasında geçişi destekler, işaretlenen herhangi bir konum için sokak görünümü sağlar.
- Google Places API: harita üzerinde doğrudan yer arama ve yakındaki olanak keşfini (restoran, kafe, otel) sağlar.
Öne Çıkan Ekranlar
Kimlik doğrulama akışı: giriş, Firebase Auth''a karşı net hata mesajlarıyla kimlik bilgilerini doğrular; kayıt, isim, e-posta, doğum tarihi (takvim ile) ve şifre (en az 6 karakter, iki kez onaylı) toplar; şifremi unuttum, kullanıcının e-postasına bir sıfırlama linki gönderir.

Anasayfa: giriş yapan kullanıcıyı ismiyle karşılar, bir destinasyon fotoğraf slider''ı, her ana bölüme kısayol menüsü ve en yeni beş topluluk gönderisinin "Son Eklenenler" önizlemesini gösterir.
Keşfet: kullanıcı paylaşımlı seyahat gönderilerinin ana akışı, yedi kategoriye (Hepsi, Tarih & Kültür, Ulaşım & Konaklama, Yemek, Doğa & Macera, Eğlence, Deneyim) göre filtrelenebilir veya başlık/konuma göre aranabilir. Bir gönderiye dokunmak detay görünümünü açar; yazarın e-postasına dokunmak profiline gider. Bir FAB butonu gönderi oluşturma ekranını açar.
Gönderi detay / ekleme / düzenleme: detay ekranı gönderinin tamamını gösterir - yazar, fotoğraf, başlık, kategori, açıklama, puan, tarih, konum. Ekleme/düzenleme ekranları aynı layout''u paylaşır: opsiyonel fotoğraf yükleme, başlık, ülke, mekan, kategori (dropdown ile), serbest metin açıklama ve mekanı ne kadar tavsiye ettiğini gösteren yıldızlı puanlama.
Ülkeler: bir dropdown''dan (RestCountries ile doldurulan) herhangi bir ülke seçilir, bayrağı, başkenti, dili, nüfusu, alanı, bölgesi ve para birimi gösterilir, artı bir "Google Haritalarda Göster" kısayolu. Altında, 12 kategori (genel bakış, görülmesi gerekenler, yemek kültürü ve daha fazlası) her biri seçilen ülke + kategori kombinasyonu için taze bir Gemini özeti tetikler.
AI Chatbot: herhangi bir seyahat sorusuna, kullanıcının yazdığı dilde cevap veren kalıcı bir asistan - uçtan uca Gemini API ile çalışır, konuşma oturum boyunca hafızada tutulur.
Harita: Google Places ile herhangi bir yer arama, harita türü değiştirme, tek dokunuşla yakındaki restoran/kafe/otelleri görme, yakınlaştırma ve kullanıcının canlı konumuna atlama. Bir noktaya dokunmak sokak görünümü erişimi olan bir işaret bırakır; uzun basmak ise ileride referans için yerel olarak bir işaret kaydeder.
Profil & Ayarlar: profil, kullanıcının fotoğrafını, biyografisini, gönderi sayısını ve yaşını gösterir, kendi gönderilerinde satır içi düzenle/sil seçenekleriyle. Ayarlar, dil değiştirmeyi (beş dilden), e-posta ile şifre değişikliğini ve çıkışı barındırır.
Navigasyon: hem çekmece menü (tam özellik listesi) hem de alt navigasyon çubuğu (en çok kullanılan beş ekran: Anasayfa, Harita, Keşfet, ChatBot, Profil) mevcut, böylece kullanıcılar herhangi bir ekrana bir veya iki dokunuşla ulaşabilir.
Çoklu Dil Desteği
Seyahat uygulamaları doğası gereği global bir kitleye hizmet ettiği için, uygulama UI metni, etiketler ve hata mesajları dahil beş dili destekliyor: İngilizce, Türkçe, Almanca, İspanyolca ve Fransızca - ileride daha fazla dil planlanıyor.
Sonuç
Travel Guide; destinasyon verilerini, yapay zeka destekli önerileri, topluluk tarafından paylaşılan deneyimleri ve harita araçlarını tek, bütünleşik bir mobil uygulamada bir araya getiriyor. Bunu uçtan uca inşa etmek - Firebase veri modellemesinden Gemini prompt tasarımına, altı katmanlı tam bir MVVM mimarisine kadar - kapsamlı bir mobil yazılım mühendisliği pratiği oldu ve bugün uygulama mimarisine yaklaşımımın temelini oluşturuyor.