İ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
This commit is contained in:
176
README.md
Normal file
176
README.md
Normal file
@@ -0,0 +1,176 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user