Files
hDiyanetProxy/README.md
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

177 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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](https://awqatsalah.diyanet.gov.tr)
## Kurulum
### 1. Bağımlılıkları Kur
```bash
cd backend
npm install
```
### 2. Ortam Değişkenleri
`.env.example` dosyasını `.env` olarak kopyalayın ve değerlerini güncelleyin:
```bash
cp .env.example .env
# .env dosyasını düzenleyin
```
Ayrıca backend dizininde de `.env` gereklidir:
```bash
cp .env backend/.env
```
### 3. Veritabanı Migration
```bash
cd backend
npm run migrate
```
### 4. İlk Admin Kullanıcı
```bash
cd backend
npm run seed
```
Varsayılan giriş: `admin` / `admin123`
### 5. Sunucuyu Başlat
```bash
cd backend
npm start
# veya geliştirme modu:
npm run dev
```
Uygulama `http://localhost:3000` adresinde çalışır.
## API Endpointleri
### Auth
| Method | Endpoint | Açı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 | Açı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 | Açı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 | Açıklama |
|--------|----------|----------|
| GET | `/api/v1/ramadan?cityId={id}` | Ramazan takvimi |
| GET | `/api/v1/ramadan/today?cityId={id}` | Bugünkü iftar |
### Bayram
| Method | Endpoint | Açıklama |
|--------|----------|----------|
| GET | `/api/v1/eid?cityId={id}` | Bayram vakitleri |
### Admin (Admin yetkisi gerekli)
| Method | Endpoint | Açı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
```bash
# 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