PikaMed API Server

Tip 1 diyabet hastaları için geliştirilmiş kapsamlı sağlık yönetim sistemi. Yapay zeka destekli danışmanlık, otomatik hatırlatmalar ve güvenli veri yönetimi.

Google Gemini AI
Firebase Auth
Mailjet Integration
Discord Storage
🔐 Kimlik Doğrulama & Güvenlik
Kullanıcı girişi, çıkışı ve güvenlik işlemleri için API'ler
POST
/api/pikamed/authlog
Herkese Açık

Kullanıcı giriş/çıkış işlemlerini Discord'a loglar

Kullanıcı adı, UID ve profil fotoğrafı ile birlikte giriş/çıkış bilgilerini kaydeder

Request Body:
{
  "sebep": "string (Giriş/Çıkış)",
  "uid": "string (Firebase UID)",
  "name": "string (Kullanıcı adı)",
  "profilUrl": "string (Profil fotoğrafı URL'si)"
}
POST
/api/pikamed/pikamedfeedback
Kullanıcı

Kullanıcı geri bildirimlerini toplar ve Discord'a gönderir

Feedback sebepleri, mesajlar ve kullanıcı bilgilerini organize eder

Headers:
{
  "Authorization": "Bearer <Firebase_ID_Token>"
}
Request Body:
{
  "sebep": "string (Feedback sebebi)",
  "message": "string (Feedback mesajı)",
  "isim": "string (Kullanıcı adı)",
  "eposta": "string (E-posta adresi)",
  "uid": "string (Firebase UID)"
}
🤖 Yapay Zeka Entegrasyonu
Google Gemini AI ile endokrinoloji danışmanlığı
POST
/api/pikamed/ai
Kullanıcı

AI endokrinoloji uzmanı ile sohbet

Hasta bilgileri, insülin planı ve sağlık verilerini analiz ederek profesyonel tavsiyelerde bulunur

Headers:
{
  "Authorization": "Bearer <Firebase_ID_Token>"
}
Request Body:
{
  "uid": "string (Firebase UID)",
  "message": "string (Hastanın sorusu)",
  "targetWater": "number (Günlük su hedefi ml)",
  "availableWater": "number (İçilen su miktarı ml)",
  "cupSize": "number (Bardak boyutu ml)",
  "changeWaterDay": "string (Su takibi günü)",
  "changeWaterClock": "string (Su takibi saati)",
  "weight": "number (Kilo kg)",
  "size": "number (Boy cm)",
  "bmi": "number (BMI değeri)",
  "bmiCategory": "string (BMI kategorisi)",
  "name": "string (Hasta adı)",
  "selectedLanguage": "string (Dil tercihi)",
  "localTime": "string (Yerel saat)",
  "insulinPlan": "array (İnsülin planı detayları)"
}
👥 Kullanıcı Yönetimi
Doktor, admin ve hasta yönetimi için kapsamlı API'ler
POST
/api/pikamed/add-doctor
Admin

Kullanıcıya doktor rolü atar

E-posta adresi ile kullanıcı bulur ve Firebase'de doktor yetkisi verir

Headers:
{
  "Authorization": "Bearer <Admin_Firebase_ID_Token>"
}
Request Body:
{
  "uid": "string (Admin UID)",
  "doctorEmail": "string (Doktor yapılacak kullanıcının e-postası)"
}
POST
/api/pikamed/delete-doctor
Admin

Doktor rolünü kaldırır

Mevcut doktor yetkilerini iptal eder ve normal kullanıcı statüsüne döndürür

Headers:
{
  "Authorization": "Bearer <Admin_Firebase_ID_Token>"
}
Request Body:
{
  "uid": "string (Admin UID)",
  "doctorEmail": "string (Doktor rolü kaldırılacak kullanıcının e-postası)"
}
GET
/api/pikamed/get-doctors
Admin

Tüm doktorları listeler

Sistemdeki tüm doktor rolüne sahip kullanıcıları e-posta ve isim bilgileriyle getirir

Headers:
{
  "Authorization": "Bearer <Admin_Firebase_ID_Token>"
}
GET
/api/pikamed/get-admins
Admin

Tüm adminleri listeler

Admin yetkisine sahip kullanıcıların tam listesini sağlar

Headers:
{
  "Authorization": "Bearer <Admin_Firebase_ID_Token>"
}
GET
/api/pikamed/get-users
Doktor

Tüm kayıtlı kullanıcıları getirir

Hasta takibi için tüm kullanıcı bilgilerini UID, e-posta ve isim ile listeler

Headers:
{
  "Authorization": "Bearer <Doctor_Firebase_ID_Token>"
}
📊 Veri Yönetimi
Hasta verileri ve sağlık bilgilerinin güvenli saklanması
POST
/api/pikamed/userdata
Kullanıcı

Discord'dan kullanıcı verilerini çeker

Kişisel Discord kanalından sağlık verilerini güvenli şekilde indirir

Headers:
{
  "Authorization": "Bearer <Firebase_ID_Token>"
}
Request Body:
{
  "uid": "string (Firebase UID - veri sahibinin)"
}
POST
/api/pikamed/info
Kullanıcı

Kapsamlı kullanıcı bilgilerini kaydeder

Su tüketimi, kilo, boy, BMI, insülin planı gibi detaylı sağlık verilerini Discord'a yükler

Headers:
{
  "Authorization": "Bearer <Firebase_ID_Token>"
}
Request Body:
{
  "message": "string (Ek mesaj)",
  "name": "string (Kullanıcı adı)",
  "uid": "string (Firebase UID)",
  "photoURL": "string (Profil fotoğrafı URL)",
  "version": "string (Uygulama versiyonu)",
  "country": "string (Ülke)",
  "selectedLanguage": "string (Seçilen dil)",
  "targetWater": "number (Günlük su hedefi ml)",
  "availableWater": "number (İçilen su ml)",
  "cupSize": "number (Bardak boyutu ml)",
  "changeWaterClock": "string (Su takibi saati)",
  "changeWaterDay": "string (Su takibi günü)",
  "InsulinListData": "array (İnsülin listesi)",
  "size": "number (Boy cm)",
  "weight": "number (Kilo kg)",
  "changeWeightClock": "string (Kilo takibi saati)",
  "bmiCategory": "string (BMI kategorisi)",
  "bmi": "number (BMI değeri)",
  "notificationRequest": "boolean (Bildirim tercihi)"
}
📧 E-posta & Bildirimler
Otomatik e-posta bildirimleri ve hatırlatma sistemi
POST
/api/pikamed/send-notification
Admin

Toplu e-posta bildirimi gönderir

Belirli kullanıcı gruplarına (tümü, doktorlar, hastalar) veya bireysel olarak e-posta gönderir

Headers:
{
  "Authorization": "Bearer <Admin_Firebase_ID_Token>"
}
Request Body:
{
  "message": "string (E-posta içeriği HTML formatında)",
  "target": "string (all/doctor/user/specific)",
  "targetId": "string (specific seçilirse hedef UID)",
  "senderUid": "string (Gönderen admin UID)",
  "title": "string (E-posta başlığı)"
}
POST
/api/pikamed/send-warning
Doktor

Hasta verilerine erişim uyarısı

Doktor hasta verilerine eriştiğinde güvenlik amaçlı otomatik uyarı e-postası gönderir

Headers:
{
  "Authorization": "Bearer <Doctor_Firebase_ID_Token>"
}
Request Body:
{
  "doktorUid": "string (Doktor UID)",
  "patientUid": "string (Hasta UID)"
}
POST
/api/pikamed/notificationInfo
Kullanıcı

Bildirim tercihlerini günceller

İnsülin hatırlatma zamanları ve bildirim tercihlerini kaydeder

Headers:
{
  "Authorization": "Bearer <Firebase_ID_Token>"
}
Request Body:
{
  "uid": "string (Firebase UID)",
  "name": "string (Kullanıcı adı)",
  "email": "string (E-posta adresi)",
  "InsulinListData": "array (İnsülin zamanları listesi)",
  "notificationRequest": "boolean (Bildirim almak istiyor mu)"
}
GET
/api/pikamed/unsubscribe
Herkese Açık

E-posta aboneliğinden çıkış

Kullanıcıların insülin hatırlatma e-postalarından çıkış yapmasını sağlar

Query Parameters:
{
  "uid": "string (Firebase UID)"
}
🔒 Erişim Kontrolü
Rol tabanlı yetkilendirme ve erişim kontrol sistemi
GET
/api/pikamed/superadmin-access
Süper Admin

Süper admin erişim kontrolü

En yüksek seviye yetkilendirme kontrolü

Headers:
{
  "Authorization": "Bearer <Superadmin_Firebase_ID_Token>"
}
GET
/api/pikamed/admin-access
Admin

Admin erişim kontrolü

Yönetici seviyesi yetkilendirme doğrulaması

Headers:
{
  "Authorization": "Bearer <Admin_Firebase_ID_Token>"
}
GET
/api/pikamed/doctor-access
Doktor

Doktor erişim kontrolü

Doktor seviyesi yetkilendirme kontrolü

Headers:
{
  "Authorization": "Bearer <Doctor_Firebase_ID_Token>"
}
GET
/api/pikamed/user-access
Kullanıcı

Kullanıcı erişim kontrolü

Temel kullanıcı yetkilendirme doğrulaması

Headers:
{
  "Authorization": "Bearer <Firebase_ID_Token>"
}
Güvenli Kimlik Doğrulama

Firebase Authentication ile rol tabanlı erişim kontrolü. 4 farklı yetki seviyesi: Kullanıcı, Doktor, Admin, Süper Admin.

AI Destekli Danışmanlık

Google Gemini AI ile endokrinoloji uzmanı seviyesinde kişiselleştirilmiş sağlık tavsiyeleri ve insülin yönetimi.

Otomatik Hatırlatmalar

Kişiselleştirilmiş insülin zamanları için e-posta hatırlatmaları. Cron job tabanlı otomatik bildirim sistemi.

Teknik Özellikler

Teknoloji Stack

  • Next.js 14 App Router
  • Firebase Admin SDK
  • Google Gemini AI
  • Mailjet Email Service
  • Discord API Integration

Güvenlik Özellikleri

  • JWT Token Doğrulama
  • Rol Tabanlı Erişim Kontrolü
  • Şifrelenmiş Veri Aktarımı
  • Audit Logging
  • GDPR Uyumlu Veri İşleme
Tüm Sistemler Aktif

Server çalışıyor ve tüm API endpoint'leri kullanıma hazır

Next.js ile geliştirildi • Vercel'de barındırılıyor • 7/24 aktif