hOLOlu a798066049 İlk sürüm: hDiyanetProxy v1.0.0
- Backend: Node.js + Express + MySQL + JWT auth
- 8 MySQL tablosu (users, countries, states, cities, prayer_times, ramadan_times, eid_times, fetch_logs)
- Diyanet API entegrasyonu (auth + token yönetimi)
- Tüm API endpointleri (places, prayer-times, ramadan, eid, admin)
- Rate limiting, CORS, input validation
- Cron job (gece 02:00 otomatik veri çekme)
- Frontend: Login, Dashboard, Fetch Panel, Namaz Vakitleri, Ramazan, Admin, Profil
- Admin kullanıcı: admin/admin123
2026-02-27 07:53:41 +03:00
2026-02-27 07:53:41 +03:00
2026-02-27 07:53:41 +03:00

hDiyanetProxy

Diyanet İşleri Başkanlığı namaz vakitleri API'sinden veri çeken, yerel veritabanında saklayan ve güvenli API üzerinden sunan proxy uygulaması.

Özellikler

  • 🕌 Namaz vakitleri sorgulama (yıllık, günlük)
  • 🌙 Ramazan imsakiyesi ve iftar vakitleri
  • 🎉 Bayram namaz vakitleri
  • 📍 Ülke/İl/Şehir yer bilgileri yönetimi
  • 🔐 JWT tabanlı kimlik doğrulama
  • 👥 Kullanıcı yönetimi (admin paneli)
  • Cron job ile otomatik veri güncelleme (gece 02:00)
  • 📊 Dashboard ve veri çekme logları
  • 📥 Manuel veri çekme paneli
  • 📤 CSV/JSON dışa aktarma

Teknoloji

  • Backend: Node.js + Express.js
  • Veritabanı: MySQL (mysql2)
  • Auth: JWT (jsonwebtoken + bcrypt)
  • Frontend: Vanilla HTML/CSS/JS
  • Kaynak API: Diyanet Awqat Salah

Kurulum

1. Bağımlılıkları Kur

cd backend
npm install

2. Ortam Değişkenleri

.env.example dosyasını .env olarak kopyalayın ve değerlerini güncelleyin:

cp .env.example .env
# .env dosyasını düzenleyin

Ayrıca backend dizininde de .env gereklidir:

cp .env backend/.env

3. Veritabanı Migration

cd backend
npm run migrate

4. İlk Admin Kullanıcı

cd backend
npm run seed

Varsayılan giriş: admin / admin123

5. Sunucuyu Başlat

cd backend
npm start
# veya geliştirme modu:
npm run dev

Uygulama http://localhost:3000 adresinde çalışır.

API Endpointleri

Auth

Method Endpoint ıklama
POST /api/v1/auth/login Giriş yap, JWT token al
POST /api/v1/auth/register Yeni kullanıcı kaydı
GET /api/v1/auth/profile Profil bilgisi
POST /api/v1/auth/refresh Token yenile
POST /api/v1/auth/change-password Şifre değiştir

Yer Bilgileri

Method Endpoint ıklama
GET /api/v1/places/countries Ülkeleri listele
GET /api/v1/places/states?countryId={id} Eyaletleri listele
GET /api/v1/places/cities?stateId={id} Şehirleri listele
GET /api/v1/places/city/{cityId} Şehir detayı

Namaz Vakitleri

Method Endpoint ıklama
GET /api/v1/prayer-times?cityId={id}&startDate=&endDate= Tarih aralığı
GET /api/v1/prayer-times/today?cityId={id} Bugünkü vakit

Ramazan

Method Endpoint ıklama
GET /api/v1/ramadan?cityId={id} Ramazan takvimi
GET /api/v1/ramadan/today?cityId={id} Bugünkü iftar

Bayram

Method Endpoint ıklama
GET /api/v1/eid?cityId={id} Bayram vakitleri

Admin (Admin yetkisi gerekli)

Method Endpoint ıklama
GET /api/v1/admin/dashboard İstatistikler
POST /api/v1/admin/fetch/places Yer bilgilerini çek
POST /api/v1/admin/fetch/yearly Yıllık namaz vakitlerini çek
POST /api/v1/admin/fetch/ramadan Ramazan vakitlerini çek
POST /api/v1/admin/fetch/eid Bayram vakitlerini çek
POST /api/v1/admin/cache/clear Diyanet API cache temizle
GET /api/v1/admin/logs Veri çekme logları
GET /api/v1/admin/users Kullanıcı listesi
POST /api/v1/admin/users Kullanıcı oluştur
PATCH /api/v1/admin/users/:id/toggle Aktif/Pasif yap
DELETE /api/v1/admin/users/:id Kullanıcı sil

Örnek Kullanım

# Giriş yap
TOKEN=$(curl -s -X POST http://localhost:3000/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"admin123"}' | jq -r '.token')

# Bugünkü namaz vakti
curl -H "Authorization: Bearer $TOKEN" \
  http://localhost:3000/api/v1/prayer-times/today?cityId=9541

Güvenlik

  • Şifreler bcrypt ile hash'lenir
  • JWT token süresi: 24 saat
  • Rate limiting: 120 istek/dakika (genel), 20 istek/15dk (login)
  • CORS koruması aktif
  • Input validation (express-validator)

Dosya Yapısı

hDiyanetProxy/
├── backend/
│   ├── src/
│   │   ├── controllers/     # Route handler'ları
│   │   ├── services/        # İş mantığı servisleri
│   │   ├── models/          # Veritabanı modelleri
│   │   ├── routes/          # Express route tanımları
│   │   ├── middleware/      # Auth middleware
│   │   ├── jobs/            # Cron job'lar
│   │   └── utils/           # DB bağlantısı, migration
│   ├── .env
│   └── package.json
├── frontend/
│   └── src/
│       ├── pages/           # HTML sayfaları
│       ├── components/      # Sidebar vb. bileşenler
│       └── services/        # API çağrıları
├── .env
├── .env.example
├── .gitignore
└── README.md

Lisans

ISC

Description
Diyanet İşleri Başkanlığı Namaz Vakitleri API Proxy
Readme 94 KiB
Languages
JavaScript 56.5%
HTML 34.3%
CSS 9.2%