Destination Explorer, seyahat planlaması için farklı servislerden alınan canlı verileri tek bir arayüzde birleştiren ASP.NET Core MVC uygulamasıdır. Kullanıcılar seçtikleri Avrupa şehri için güncel seyahat verilerini inceleyebilir, tarih ve misafir bilgilerine göre otel arayabilir ve otellerin fotoğraf, açıklama, puan ve temel bilgilerine ulaşabilir.
Proje herhangi bir veritabanı veya yönetim paneli kullanmaz. Gösterilen seyahat ve otel verileri RapidAPI servislerinden dinamik olarak alınır.
- Paris, Berlin, Roma, Madrid ve Amsterdam için şehir odaklı seyahat paneli
- Seçilen şehre göre canlı hava durumu ve ülkeye göre yakıt fiyatları
- Güncel döviz kurları, kripto para fiyatları, haberler ve günün yemeği
- Şehir, giriş tarihi, çıkış tarihi ve misafir sayısı ile otel arama
- Destination ID → Hotel Search → Hotel Detail şeklinde Booking API akışı
- Arama başına en fazla 20 otelin kart yapısında listelenmesi
- Dinamik otel adı, puanı, fiyatı, konumu, açıklaması ve kapak görseli
- Otel detayında 2–3 fotoğraf, açıklama, giriş/çıkış saatleri ve tesis bilgileri
- Eksik fotoğraflar için çok aşamalı API tabanlı görsel çözümleme
- API kota ve bağlantı hataları için kullanıcı dostu geri bildirim
- Tekrarlanan istekleri azaltmak için bellek içi önbellekleme
- Responsive ve sade seyahat odaklı kullanıcı arayüzü
Uygulama, ASP.NET Core MVC yapısı üzerine kurulmuştur. Controller katmanı HTTP isteklerini yönetir, RapidAPI servisleriyle iletişim kurar, gelen JSON verilerini ayrıştırır ve View katmanına aktarır.
flowchart LR
U[Kullanıcı] --> V[ASP.NET Core MVC Views]
V --> C[MainController]
C --> M[HotelCard Modeli]
C --> H[IHttpClientFactory]
C --> K[IMemoryCache]
H --> R{RapidAPI Gateway}
R --> B[Booking COM API]
R --> W[Open Weather13]
R --> E[Currency Exchange API]
R --> F[Gas Price API]
R --> CR[Crypto Price API]
R --> N[Real-Time News API]
R --> T[Tasty API]
B --> C
W --> C
E --> C
F --> C
CR --> C
N --> C
T --> C
K -. Önbelleğe alınmış API yanıtı .-> C
C --> V
RapidApiProject/
├── RapidApiProject.slnx # Visual Studio çözüm dosyası
├── README.md # Proje dokümantasyonu
└── RapidApiProject/
├── Controllers/
│ └── MainController.cs # Dashboard ve otel API akışları
├── Models/
│ ├── HotelCard.cs # Otel listeleme modeli
│ └── ErrorViewModel.cs # Hata ekranı modeli
├── Views/
│ ├── Main/
│ │ ├── Dashboard.cshtml # Canlı seyahat paneli
│ │ ├── HotelList.cshtml # Otel arama ve listeleme
│ │ └── HotelDetail.cshtml # Otel detay sayfası
│ └── Shared/
│ ├── _Layout.cshtml # Ortak sayfa düzeni
│ └── Error.cshtml # Hata ekranı
├── wwwroot/
│ ├── css/site.css # Responsive arayüz stilleri
│ └── js/site.js # Tarih ve form davranışları
├── Program.cs # Servis ve middleware yapılandırması
├── appsettings.json # Uygulama yapılandırması
└── RapidApiProject.csproj # Proje ve paket tanımları
sequenceDiagram
actor Kullanici as Kullanıcı
participant UI as Hotel List View
participant Controller as MainController
participant Cache as Memory Cache
participant Booking as Booking COM API
Kullanici->>UI: Şehir, tarih ve misafir bilgilerini girer
UI->>Controller: POST /Main/HotelList
Controller->>Controller: Girdileri doğrular
Controller->>Cache: Destination sonucunu kontrol eder
alt Destination önbellekte yoksa
Controller->>Booking: Search Destination
Booking-->>Controller: İlk sonuç ve destination ID
Controller->>Cache: Destination sonucunu kaydeder
end
Controller->>Cache: Aynı otel aramasını kontrol eder
alt Otel sonucu önbellekte yoksa
Controller->>Booking: Search Hotels
Booking-->>Controller: Canlı otel sonuçları
Controller->>Cache: Sonuçları kısa süreli kaydeder
end
Controller-->>UI: En fazla 20 otel
Kullanici->>UI: Bir otel seçer
UI->>Controller: GET /Main/HotelDetail
Controller->>Booking: Hotel Details + Photos + Description
Booking-->>Controller: Dinamik otel detayları
Controller-->>UI: Otel detay sayfası
| Teknoloji | Kullanım amacı |
|---|---|
| ASP.NET Core MVC 6 | Web uygulaması ve MVC yapısı |
| C# | Sunucu tarafı iş mantığı |
| Razor Views | Dinamik HTML üretimi |
| IHttpClientFactory | Harici API isteklerinin yönetimi |
| Newtonsoft.Json | RapidAPI JSON yanıtlarının ayrıştırılması |
| IMemoryCache | API kotasını koruyan geçici önbellekleme |
| Bootstrap | Temel responsive altyapı |
| HTML, CSS ve JavaScript | Kullanıcı arayüzü ve form davranışları |
| Veri | API |
|---|---|
| Otel arama ve detay | Booking COM |
| Hava durumu | Open Weather13 |
| Döviz kurları | Currency Conversion and Exchange Rates |
| Yakıt fiyatları | Gas Price |
| Kripto para fiyatları | Fast Price – Exchange Rates |
| Güncel haberler | Real-Time News Data |
| Günün yemeği | Tasty |
- Dashboard API yanıtları 10 dakika önbellekte tutulur.
- Destination sonuçları 12 saat önbellekte tutulur.
- Aynı parametrelerle yapılan otel aramaları 10 dakika önbellekte tutulur.
- Arama sonuçları, detay sayfasına dönüşü desteklemek amacıyla 15 dakika saklanır.
- Başarısız API çağrılarında sahte veya statik otel verisi üretilmez.
- Eksik otel alanları uydurma içerikle doldurulmaz; arayüzde gizlenir.
- Booking API kota sınırına ulaştığında kullanıcıya açıklayıcı hata mesajı gösterilir.