# 📊 Hosting Platform - İş Akışı Diyagramları Bu dokümanda projenin tüm görsel iş akışı diyagramları bulunmaktadır. ## 📑 İçindekiler 1. [Genel İş Akışları](#genel-iş-akışları) 2. [Domain Setup Detaylı Akış](#domain-setup-detaylı-akış) 3. [API Endpoint Yapısı](#api-endpoint-yapısı) 4. [Veritabanı Şemaları](#veritabanı-şemaları) 5. [Sistem Mimarisi](#sistem-mimarisi) 6. [Kimlik Doğrulama](#kimlik-doğrulama) --- ## 🔄 Genel İş Akışları ### Müşteri Panel - Ana İş Akışı Bu diyagram müşteri panelinin tüm ana işlevlerini gösterir: - Kullanıcı kaydı ve girişi - Dashboard yönetimi - Domain ekleme ve yönetimi (8 adımlı süreç) - Container deployment - Abonelik yönetimi **Akış Adımları:** 1. **Kimlik Doğrulama**: Register/Login → JWT Token 2. **Dashboard**: Profil, Domain Listesi, İstatistikler 3. **Domain Yönetimi**: - Domain ekle - CF hesap seç (Company/Own) - Zone doğrula - NS kontrolü - DNS önizleme - DNS uygula - SSL yapılandır - Veritabanına kaydet 4. **Container**: Deploy → Yapılandır → Yönet 5. **Abonelik**: Planları görüntüle → Yükselt → Ödeme ### Admin Panel - Ana İş Akışı Bu diyagram admin panelinin tüm yönetim işlevlerini gösterir: - Admin girişi ve audit logging - Dashboard ve istatistikler - Müşteri yönetimi - Plan yönetimi (CRUD) - Cloudflare hesap yönetimi - Audit log sistemi **Akış Adımları:** 1. **Kimlik Doğrulama**: Admin Login → JWT + Role → Audit Log 2. **Dashboard**: Sistem istatistikleri ve genel bakış 3. **Müşteri Yönetimi**: Liste → Detay → Plan Güncelle → Durum Yönet 4. **Plan Yönetimi**: Liste → Oluştur/Düzenle/Sil → Limit Belirle 5. **CF Yönetimi**: Liste → Ekle/Düzenle → Token Şifrele → Kota Kontrol 6. **Audit**: Tüm işlemler loglanır → Görüntüle → Filtrele --- ## 🌐 Domain Setup Detaylı Akış ### Sequence Diagram - Adım Adım Bu sequence diagram, domain ekleme sürecinin tüm adımlarını detaylı gösterir: **Katılımcılar:** - Kullanıcı - Frontend (React) - Backend API (Flask) - PostgreSQL Database - Cloudflare API - Load Balancer **Süreç:** 1. **Domain Girişi** - Kullanıcı domain adını girer - POST /api/dns/validate-domain - Database'de kontrol edilir 2. **CF Hesap Seçimi** - Company Account: Listeden seçim - Own Account: Token girişi 3. **Zone Doğrulama** - Cloudflare API ile zone bilgisi alınır - Zone ID, nameservers kaydedilir 4. **Nameserver Kontrolü** - NS kayıtları kontrol edilir - Yapılandırılmamışsa talimatlar gösterilir - Polling ile kontrol devam eder 5. **DNS Önizleme** - Load Balancer IP seçilir (hash-based) - Mevcut DNS kayıtları alınır - Değişiklikler hesaplanır ve gösterilir 6. **DNS Uygulama** - A records güncellenir (root + www) - SSL yapılandırması (Full, HTTPS, Auto Rewrites) - Database'e kaydedilir 7. **Tamamlama** - Domain aktif duruma geçer - Başarı mesajı gösterilir --- ## 📡 API Endpoint Yapısı ### Müşteri Panel API Endpoints **Kategoriler:** - 🔐 **Authentication** (`/api/auth`) - POST /register - POST /login - GET /me - POST /logout - 👤 **Customer** (`/api/customer`) - GET /domains - POST /domains - GET /domains/:id - DELETE /domains/:id - GET /stats - 🌐 **DNS** (`/api/dns`) - POST /validate-domain - POST /validate-zone - POST /select-company-account - GET /check-nameservers - POST /preview-changes - POST /apply-changes - ⚙️ **Admin** (`/api/admin`) - CF Accounts CRUD - Customers Management - Stats - 🐳 **Containers** (`/api/containers`) - GET / - POST /deploy - GET /:id - DELETE /:id ### Admin Panel API Endpoints **Kategoriler:** - 🔐 **Authentication** (`/api/auth`) - 📋 **Plans** (`/api/plans`) - CRUD - ☁️ **CF Accounts** (`/api/cf-accounts`) - CRUD - 👥 **Customers** (`/api/customers`) - Management - 📝 **Audit** (`/api/audit`) - Logs & Stats --- ## 🗄️ Veritabanı Şemaları ### Müşteri Panel Database (hosting_db) **Entity Relationships:** - USERS (1) → (N) CUSTOMERS - CUSTOMERS (1) → (N) DOMAINS - DOMAINS (1) → (N) DNS_RECORDS - CLOUDFLARE_ACCOUNTS (1) → (N) DOMAINS **Ana Tablolar:** 1. **users**: Kullanıcı hesapları 2. **customers**: Müşteri profilleri ve abonelikler 3. **domains**: Domain kayıtları 4. **dns_records**: DNS kayıt detayları 5. **cloudflare_accounts**: Şirket CF hesapları **Önemli Alanlar:** - `cf_api_token_encrypted`: Şifrelenmiş API token (Fernet) - `subscription_plan`: Plan slug (free, basic, premium) - `cf_account_type`: 'company' veya 'own' - `status`: pending, active, suspended, deleted ### Admin Panel Database (admin_hosting_db) **Entity Relationships:** - ADMIN_USERS (1) → (N) AUDIT_LOGS - SUBSCRIPTION_PLANS ← → CLOUDFLARE_ACCOUNTS **Ana Tablolar:** 1. **admin_users**: Admin hesapları 2. **subscription_plans**: Abonelik planları 3. **cloudflare_accounts**: CF hesap yönetimi 4. **audit_logs**: Tüm admin işlemleri **Önemli Alanlar:** - `role`: admin, super_admin - `features`: JSON array (plan özellikleri) - `action`: login, create_plan, update_customer, vb. - `details`: JSON (işlem detayları) --- ## 🏗️ Sistem Mimarisi ### Genel Mimari **Katmanlar:** 1. **Internet Layer** - Kullanıcılar (Müşteriler + Adminler) - HTTPS üzerinden erişim 2. **CDN/DNS Layer** - Cloudflare (DNS, SSL, Proxy) - DDoS koruması - SSL/TLS termination 3. **Frontend Layer** - Customer React App (argeict.net, Port 3000) - Admin React App (admin.argeict.net, Port 3001) 4. **Backend Layer** - Customer Flask API (api.argeict.net, Port 5000) - Admin Flask API (admin-api.argeict.net, Port 5001) 5. **Data Layer** - PostgreSQL: hosting_db - PostgreSQL: admin_hosting_db - Redis Cache 6. **Infrastructure Layer** - Load Balancers (3 adet) - Docker Containers - Nginx Reverse Proxy **Veri Akışı:** - Frontend → Backend: REST API (JSON) - Backend → Database: SQLAlchemy ORM - Backend → Cache: Redis - Backend → Cloudflare: REST API - Admin Panel → Customer Panel: API Call (cross-panel)