# Mimari

Onoxsoft Panel, Laravel 11 + Vue 3 + Inertia.js yığını üzerine kurulu, monolitik bir SPA mimarisi kullanır.

## Katman Diyagramı

```
┌─────────────────────────────────────────────────────────────┐
│                     Browser / API Client                     │
└───────────────────────────┬─────────────────────────────────┘
                            │ HTTPS
                ┌───────────▼───────────┐
                │     Apache 2.4        │
                │  mod_proxy + mod_ssl  │
                └───────────┬───────────┘
                            │ FastCGI
                ┌───────────▼───────────┐
                │    PHP 8.3-FPM        │
                │   Laravel 11 App      │
                │  ┌─────────────────┐  │
                │  │  Inertia.js     │  │
                │  │  (SSR disabled) │  │
                │  └────────┬────────┘  │
                │           │           │
                │  ┌────────▼────────┐  │
                │  │  Vue 3 + Pinia  │  │
                │  │   (SPA assets)  │  │
                │  └─────────────────┘  │
                └───────────┬───────────┘
                            │
              ┌─────────────┼──────────────┐
              ▼             ▼              ▼
        ┌──────────┐ ┌──────────┐ ┌──────────────┐
        │ MariaDB  │ │  Redis   │ │ Sysapi Bridge│
        │  10.11   │ │(Queue+   │ │  (scripts/)  │
        │          │ │ Cache)   │ │              │
        └──────────┘ └──────────┘ └──────────────┘
```

## Dizin Yapısı

```
/srv/panel/
├── app/
│   ├── Http/
│   │   ├── Controllers/      # Inertia + API controllers
│   │   ├── Middleware/        # Auth, rate limit, sudo check
│   │   └── Resources/         # API resource transformers
│   ├── Models/                # Eloquent modeller
│   ├── Services/              # İş mantığı
│   │   ├── AccountService.php
│   │   ├── SysapiManager.php
│   │   ├── DnsService.php
│   │   └── SslService.php
│   ├── Jobs/                  # Queue işleri
│   └── Events/                # Laravel events
├── resources/
│   ├── js/
│   │   ├── Pages/             # Vue Inertia sayfaları
│   │   ├── Components/        # Paylaşılan Vue bileşenleri
│   │   ├── Layouts/           # CustomerLayout, AdminLayout
│   │   └── stores/            # Pinia state stores
│   └── css/
├── routes/
│   ├── web.php                # Inertia rotaları
│   └── api.php                # REST API v1 rotaları
├── scripts/
│   └── sysapi/                # OS bridge bash betikleri
├── database/
│   ├── migrations/
│   └── seeders/
└── tests/
    ├── Feature/               # HTTP testleri
    └── Unit/                  # Servis testleri
```

## Veri Akışı — Hesap Oluşturma

```
Browser POST /admin/accounts
    → AccountController@store
        → AccountCreateRequest (validate)
        → AccountService@createAccount
            → SysapiManager@run('account/create', [...])
                → sudo /scripts/sysapi/account/create.sh
                    → useradd, php-fpm pool, apache vhost
            → Account::create([...])  (DB kaydet)
            → DnsService@createZone  (PowerDNS)
            → dispatch(IssueAutoSSL)  (Queue)
        → Inertia redirect + flash
```

## Önemli Servisler

| Servis | Dosya | Görev |
|--------|-------|-------|
| `AccountService` | `app/Services/AccountService.php` | Hesap CRUD |
| `SysapiManager` | `app/Services/SysapiManager.php` | OS köprüsü |
| `DnsService` | `app/Services/DnsService.php` | PowerDNS API |
| `SslService` | `app/Services/SslService.php` | certbot wrapper |
| `BackupService` | `app/Services/BackupService.php` | Yedek yönetimi |
| `MonitoringService` | `app/Services/MonitoringService.php` | Sistem metrikleri |

## API vs Inertia Rotaları

- `/api/v1/*` → `routes/api.php` → JSON yanıt (REST API)
- `/admin/*`, `/customer/*` → `routes/web.php` → Inertia (Vue SPA)

Aynı servis sınıfları her iki tarafta da kullanılır.

---

*Daha derin mimari analiz için [Sysapi Bridge](/tr/developers/sysapi-bridge) ve [Events & Webhooks](/tr/developers/events-webhooks) sayfalarına bakın.*
