244 lines
6.1 KiB
Markdown
244 lines
6.1 KiB
Markdown
# 📊 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)
|
||
|
||
|