Skip to content

Latest commit

 

History

History
187 lines (140 loc) · 6.53 KB

File metadata and controls

187 lines (140 loc) · 6.53 KB

🌌 DİJİTAL YAŞAM MERKEZİ: MASTER TEKNİK DOKÜMANTASYON (v2.4)

Bu doküman, sistemdeki tüm teknik süreçlerin, veritabanı yapısının, kurulum adımlarının ve operasyonel prosedürlerin tek ve nihai kaynağıdır.


📚 İÇİNDEKİLER

  1. Sistem Mimarisi (Tri-Nodal Architecture)
  2. Veritabanı Tasarımı ve Stratejisi
  3. Kurulum ve Hazırlık (Environment & Dependencies)
  4. Başlatma Protokolleri (Dev & Prod)
  5. Master Admin (Tanrı Modu)
  6. Güvenlik ve Optimizasyon

1. 🏗️ SİSTEM MİMARİSİ (TRI-NODAL ARCHITECTURE)

Sistem, birbirinden bağımsız çalışan ancak sürekli iletişim halinde olan 3 ana düğümden (Node) oluşur.

Düğüm Teknoloji Port Görev
Node A (Frontend) React + Vite 3000 Kullanıcı Arayüzü (UI), Context API ile veri yönetimi.
Node B (Backend) Express + Mongoose 5000 Ana API, Kimlik Doğrulama (JWT), İş Mantığı.
Node C (Master) React + Express 4000 (API) / 4001 (UI) Sistemden izole "Acil Durum" ve "Yönetim" paneli.

Çalışma Mantığı

  1. İzolasyon: Master Admin (Node C), Ana Backend (Node B) çökse bile çalışmaya devam eder ve veritabanına doğrudan erişir.
  2. Veri Akışı: Kullanıcı istekleri Node A -> Node B -> Veritabanı yolunu izler.
  3. Felaket Kurtarma: Master Admin, ana veritabanındaki verileri "Cold Storage" (Yedek DB) alanına aktarabilir.

2. 🗄️ VERİTABANI TASARIMI VE STRATEJİSİ

Sistem MongoDB kullanır. Veri yapısı Kullanıcı Odaklı (User-Centric) olarak tasarlanmıştır.

2.1. Temel Kurallar

  • Referanslama: Her içerik (Film, Kitap, Gezi) mutlaka bir user (ObjectId) alanına sahiptir.
  • Medya Yönetimi: Resim ve Ses dosyaları veritabanında ASLA Binary/Base64 olarak saklanmaz. Sadece URL (String) olarak referans tutulur (Örn: AWS S3 veya CDN linki).
  • İndeksleme: Performans için user, slug ve metin arama alanları (title) indekslenmiştir.

2.2. Şema Yapıları (Özet)

Users (Kullanıcılar)

  • _id: Benzersiz Kimlik.
  • role: ['user', 'admin'] (RBAC yetkilendirmesi için).
  • password: Bcrypt ile hashlenmiş veri.

Movies (Filmler/Diziler)

  • type: 'Film' veya 'Dizi'.
  • rating: 0-10 arası puan.
  • isPublic: İçeriğin profil sayfasında görünüp görünmeyeceği.

Destinations (Gezi Rehberi)

  • locationData: { lat: Number, lng: Number } (Harita için).
  • images: [String] (Galeri URL dizisi).

AudioTracks (Ses Kayıtları)

  • audioFile: Ses dosyasının bulut URL'i.
  • mimeType: 'audio/mpeg' veya 'audio/ogg'.

3. 🛠️ KURULUM VE HAZIRLIK

Projeyi sıfırdan ayağa kaldırmak için aşağıdaki adımları izleyin.

3.1. Bağımlılıkların Yüklenmesi (Package.json Oluşturma)

Kaynak kodlarda package.json dosyaları yoksa, aşağıdaki komutlarla oluşturun:

Root (Frontend):

npm init -y
npm install react react-dom react-router-dom lucide-react recharts framer-motion
npm install -D vite @vitejs/plugin-react tailwindcss postcss autoprefixer

Server (Backend):

cd server
npm init -y
npm install express mongoose cors dotenv bcryptjs jsonwebtoken slugify resend google-auth-library
npm install -D nodemon

Master Admin:

cd masteradmin
npm init -y
npm install express mongoose cors dotenv systeminformation react react-dom lucide-react recharts
npm install -D vite @vitejs/plugin-react concurrently tailwindcss postcss autoprefixer

3.2. Çevresel Değişkenler (.env)

Ana dizinde .env dosyası oluşturun:

PORT=5000
JWT_SECRET=cok_gizli_random_bir_string_en_az_32_karakter
# Yerel MongoDB
MONGO_URI=mongodb://127.0.0.1:27017/dijital_yasam
# Yedekleme için İkincil DB
MONGO_URI_BACKUP=mongodb://127.0.0.1:27017/dijital_yasam_backup
# Opsiyonel Servisler
RESEND_API_KEY=re_123...
GOOGLE_CLIENT_ID=...

4. 🚀 BAŞLATMA PROTOKOLLERİ

Sistemi çalıştırmak için 3 ayrı terminal penceresi kullanın.

A. Geliştirme Modu (Development)

Terminal 1 (Backend):

cd server
npm start  # veya nodemon server.js

Çıktı: ✅ [PRIMARY] Canlı Veritabanı Bağlandı

Terminal 2 (Master Admin):

cd masteradmin
npm run dev

Çıktı: 🛡️ MASTER ADMIN PANEL ONLINE (Port 4000 & 4001)

Terminal 3 (Frontend):

npm run dev

Çıktı: Local: http://localhost:3000/

B. Prodüksiyon Modu (Nginx & PM2)

Canlı sunucuda (AWS/DigitalOcean) npm run dev kullanılmaz.

  1. PM2 ile Süreç Yönetimi:

    pm2 start server/server.js --name "api"
    pm2 start masteradmin/server.js --name "master-api"
    # Frontend için build alıp serve edin
    npm run build
    pm2 serve dist 3000 --spa --name "frontend"
  2. Nginx (Reverse Proxy): 3000 ve 5000 portlarını dış dünyaya kapatıp sadece 80/443 üzerinden hizmet verin.

    • yourdomain.com -> localhost:3000
    • yourdomain.com/api -> localhost:5000
    • admin.yourdomain.com -> localhost:4001 (Master Admin UI)

5. 🛡️ MASTER ADMIN (TANRI MODU)

Bu panel, sistemin **"Can Simidi"**dir.

  • Erişim: http://localhost:4001
  • Varsayılan Şifre: masterroot veya root
  • Yetenekleri:
    1. Raw Data Edit: JSON formatında veritabanını doğrudan düzenleme.
    2. Sistem İzleme: CPU, RAM ve Disk kullanımını canlı izleme.
    3. Hard Delete: Ana uygulamadan silinemeyen verileri kalıcı silme.
    4. İzolasyon: Ana uygulamanın (Port 3000) erişemediği 4001 portundan çalışır.

6. 🔒 GÜVENLİK VE OPTİMİZASYON

Güvenlik Protokolleri

  • JWT (JSON Web Token): Stateless kimlik doğrulama. Token sunucuda saklanmaz.
  • Rate Limiting: express-rate-limit ile aynı IP'den gelen aşırı istekler (DDoS/Brute-Force) engellenir.
  • NoSQL Injection: Mongoose query sanitizer ile sorgu enjeksiyonları önlenir.

Performans İpuçları

  • Pagination (Sayfalama): Veriler asla find({}) ile toplu çekilmemelidir. .limit(20).skip(page*20) kullanılmalıdır.
  • Offloading: Medya yüklemeleri Node.js üzerinden geçirilmemeli, Frontend -> S3 (Presigned URL) yöntemi kullanılmalıdır.
  • Caching: Sık erişilen veriler (örn: Anasayfa içerikleri) Redis üzerinde önbelleğe alınmalıdır.

Sistem Durumu: 🟢 OPERASYONEL