hosting-platform/WORKFLOW_DIAGRAMS.md

6.1 KiB
Raw Permalink Blame History

📊 Hosting Platform - İş Akışı Diyagramları

Bu dokümanda projenin tüm görsel iş akışı diyagramları bulunmaktadır.

📑 İçindekiler

  1. Genel İş Akışları
  2. Domain Setup Detaylı Akış
  3. API Endpoint Yapısı
  4. Veritabanı Şemaları
  5. Sistem Mimarisi
  6. 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)