The Weather, kullanıcılara anlık, saatlik ve haftalık hava durumu bilgilerini sunan tam kapsamlı bir web uygulamasıdır. WeatherAPI ve OpenWeatherMap entegrasyonuyla çalışan bu uygulama; şehir bazlı hava durumu sorgulama, konuma dayalı otomatik tespit, kullanıcı hesabı yönetimi ve ziyaret geçmişi gibi gelişmiş özellikler sunar.
Veri 15 dakikada bir otomatik olarak güncellenir ve MongoDB'ye önbelleğe alınır; böylece gereksiz API çağrılarının önüne geçilerek hem hız hem de maliyet optimizasyonu sağlanır.
- Anlık Hava Durumu — Sıcaklık, nem, rüzgar, basınç ve hissedilen sıcaklık
- Saatlik Tahmin — 24 saatlik saat saat detaylı hava durumu tablosu
- Haftalık Tahmin — 5 günlük min/max sıcaklık ve hava durumu özeti
- Grafiksel Gösterim — Chart.js ile saatlik çizgi grafiği ve haftalık bar grafiği
- Türkiye Şehirleri — 20+ Türk şehrine ait anlık hava durumu kartları
- Türkiye Haritası — Görsel Türkiye haritası üzerinde şehir bazlı sıcaklık gösterimi
- Otomatik Konum Tespiti — Tarayıcı Geolocation API + OpenCage Geocoding ile kullanıcının bulunduğu şehri otomatik tespit eder
- Manuel Şehir Arama — Navbar üzerinden herhangi bir dünya şehri aranabilir
- Kayıt & Giriş — Bcrypt ile şifreler güvenli biçimde hashlenerek saklanır
- Profil Ekranı — Kullanıcı adı ve e-posta bilgilerini görüntüleme
- Ziyaret Geçmişi — Son 5 arama kaydedilir; kullanıcı girişinde üst şeritteki şehirler otomatik olarak doldurulur
- Türkçe, İngilizce, Almanca, Fransızca ve daha birçok dil için hazır arayüz yapısı
- 15 dakikalık önbellekleme — MongoDB üzerinde veri şehir bazlı tutulur; taze veri olduğunda API'ye tekrar çağrı yapılmaz
- Statik dosya sunumu — Express ile icons, images ve HTML dosyaları doğrudan servis edilir
| Anlık Hava Durumu | Saatlik Hava Durumu | Saatlik Grafik |
|---|---|---|
![]() |
![]() |
![]() |
| Haftalık Hava Durumu | Haftalık Grafik | Türkiye Şehirleri |
|---|---|---|
![]() |
![]() |
![]() |
| Katman | Teknoloji |
|---|---|
| Backend | Node.js, Express.js |
| Veritabanı | MongoDB, Mongoose |
| Frontend | Vanilla HTML5, CSS3, JavaScript |
| Grafikler | Chart.js |
| Şifreleme | bcrypt |
| HTTP İstemcisi | Axios |
| Çevre Değişkenleri | dotenv |
| İkon Seti | Font Awesome 6 |
| API | Kullanım Amacı |
|---|---|
| WeatherAPI | Anlık ve saatlik hava durumu verisi |
| OpenWeatherMap | 5 günlük haftalık tahmin verisi |
| OpenCage Geocoding | GPS koordinatlarından şehir adı çözümleme |
- Node.js v18+
- MongoDB (yerel kurulum veya MongoDB Atlas)
- API anahtarları (WeatherAPI, OpenWeatherMap, OpenCage)
# 1. Repoyu klonlayın
git clone https://github.com/AliKacarr/The-Weather.git
cd The-Weather
# 2. Bağımlılıkları yükleyin
npm install
# 3. .env dosyasını oluşturun (aşağıdaki bölüme bakın)
# 4. MongoDB'yi başlatın (yerel kurulumda)
mongod
# 5. Sunucuyu çalıştırın
node server.jsTarayıcıda açın: http://localhost:3000
Proje kök dizininde .env dosyası oluşturun:
WEATHERAPI_API_KEY=your_weatherapi_key_here
OPENWEATHER_API_KEY=your_openweathermap_key_here
MONGO_URI=mongodb://localhost:27017/weatherDBNot: API anahtarlarınızı asla herkese açık repolara yüklemeyin.
.envdosyasını.gitignore'a eklediğinizden emin olun.
- Üst navbar'daki arama kutusuna bir şehir adı yazın
- Enter tuşuna basın veya otomatik konuma izin verin
- Anlık, saatlik ve haftalık veriler otomatik olarak yüklenir
- Kayıt Ol butonuna tıklayarak hesap oluşturun
- Giriş Yap ile oturum açın
- Giriş yaptıktan sonra üst şeritte son 5 ziyaret ettiğiniz şehrin verileri otomatik görüntülenir
| Endpoint | Yöntem | Açıklama |
|---|---|---|
/update-weather?city={şehir} |
GET | Hava durumu verisini getirir (önbellek kontrolü dahil) |
/register |
POST | Yeni kullanıcı kaydı |
/login |
POST | Kullanıcı girişi |
/get-user-info?email={email} |
GET | Kullanıcı bilgilerini getirir |
/get-user-weather?email={email} |
GET | Kullanıcının ziyaret geçmişinin hava durumu |
/update-visited-cities |
POST | Ziyaret edilen şehirler listesini günceller |
The-Weather/
├── 📄 index.html # Ana sayfa arayüzü
├── 📄 index2.html # Yardımcı sayfa
├── 📄 server.js # Express sunucusu & API yönlendirmeleri
├── 📄 script.js # Ana frontend JavaScript mantığı
├── 📄 script2.js # Yardımcı script
├── 📄 style.css # Ana sayfa stilleri
├── 📄 style2.css # Yardımcı stiller
├── 📄 turkiye_haritasi.html # Türkiye hava haritası
├── 📄 turkiye_haritasi.css # Harita stilleri
├── 📄 turkiye_haritasi.js # Harita JavaScript mantığı
├── 📄 turkiye_cevresi.html # Türkiye çevresi sayfası
├── 📄 turkiye_cevresi.css # Çevre sayfası stilleri
├── 📄 package.json # NPM bağımlılıkları
├── 📄 .env # Çevre değişkenleri (git'e eklenmemeli)
├── 📁 icons/ # OpenWeatherMap hava ikonu seti (18 ikon)
├── 📁 images/ # Arka planlar, logolar, sosyal medya ikonları
│ ├── Hakkımızda.html
│ ├── GizlilikPolitikası.html
│ └── ÇerezPolitikası.html
└── 📁 site_gorseller/ # Proje ekran görüntüleri
Katkılarınızı memnuniyetle karşılıyoruz! Şu adımları izleyin:
- Bu repoyu fork edin
- Yeni bir branch oluşturun:
git checkout -b feature/yeni-ozellik - Değişikliklerinizi commit edin:
git commit -m 'feat: yeni özellik eklendi' - Branch'inizi push edin:
git push origin feature/yeni-ozellik - Bir Pull Request açın
⭐ Bu projeyi beğendiyseniz yıldız vermeyi unutmayın!
© 2024 The Weather — Ali Kaçar tarafından geliştirildi






