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.
- Sistem Mimarisi (Tri-Nodal Architecture)
- Veritabanı Tasarımı ve Stratejisi
- Kurulum ve Hazırlık (Environment & Dependencies)
- Başlatma Protokolleri (Dev & Prod)
- Master Admin (Tanrı Modu)
- Güvenlik ve Optimizasyon
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. |
- İzolasyon: Master Admin (Node C), Ana Backend (Node B) çökse bile çalışmaya devam eder ve veritabanına doğrudan erişir.
- Veri Akışı: Kullanıcı istekleri Node A -> Node B -> Veritabanı yolunu izler.
- Felaket Kurtarma: Master Admin, ana veritabanındaki verileri "Cold Storage" (Yedek DB) alanına aktarabilir.
Sistem MongoDB kullanır. Veri yapısı Kullanıcı Odaklı (User-Centric) olarak tasarlanmıştır.
- 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,slugve metin arama alanları (title) indekslenmiştir.
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'.
Projeyi sıfırdan ayağa kaldırmak için aşağıdaki adımları izleyin.
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 autoprefixerServer (Backend):
cd server
npm init -y
npm install express mongoose cors dotenv bcryptjs jsonwebtoken slugify resend google-auth-library
npm install -D nodemonMaster 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 autoprefixerAna 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=...Sistemi çalıştırmak için 3 ayrı terminal penceresi kullanın.
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/
Canlı sunucuda (AWS/DigitalOcean) npm run dev kullanılmaz.
-
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"
-
Nginx (Reverse Proxy): 3000 ve 5000 portlarını dış dünyaya kapatıp sadece 80/443 üzerinden hizmet verin.
yourdomain.com->localhost:3000yourdomain.com/api->localhost:5000admin.yourdomain.com->localhost:4001(Master Admin UI)
Bu panel, sistemin **"Can Simidi"**dir.
- Erişim:
http://localhost:4001 - Varsayılan Şifre:
masterrootveyaroot - Yetenekleri:
- Raw Data Edit: JSON formatında veritabanını doğrudan düzenleme.
- Sistem İzleme: CPU, RAM ve Disk kullanımını canlı izleme.
- Hard Delete: Ana uygulamadan silinemeyen verileri kalıcı silme.
- İzolasyon: Ana uygulamanın (Port 3000) erişemediği
4001portundan çalışır.
- JWT (JSON Web Token): Stateless kimlik doğrulama. Token sunucuda saklanmaz.
- Rate Limiting:
express-rate-limitile aynı IP'den gelen aşırı istekler (DDoS/Brute-Force) engellenir. - NoSQL Injection: Mongoose query sanitizer ile sorgu enjeksiyonları önlenir.
- 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