Kılavuz

QTR Framework
Nasıl Kullanılır?

Kurulumdan deploy'a tek bir rehber. Hızlı başlangıç bloğunu geçtikten sonra her bölümü istediğin sırada okuyabilirsin.

Tahmini okuma: ~20 dk 8 bölüm CLI komutları dahil

Hızlı Başlangıç 5 dakika

~5 dk

Aşağıdaki komutları sırayla çalıştırarak QTR Framework'ü kurun ve ilk projenizi ayağa kaldırın. Her adım bağımsız olarak da test edilebilir.

1

CLI'ı Kurun

bash
npm install -g speaker-quarter-cli
2

Proje Oluşturun

bash
qtr create benim-projem
cd benim-projem
3

Ortamı Yapılandırın

bash
qtr env:setup
qtr env:set DB_NAME benim_projem_db
qtr env:set DB_USER root
qtr env:check
4

Migration Çalıştırın

bash
qtr db:run
5

Sunucuyu Başlatın

bash
qtr serve
Çıktı: QTR dev server started at http://localhost:8000
Bu bölüm yardımcı oldu mu?

1. Kurulum

~2 dk

QTR Framework için harici bir paket yöneticisi ya da bağımlılık gerekmez. Tek koşul: PHP 8.0+.

Gereksinimler

  • PHP 8.0 veya üzeri (php -v ile kontrol edin)
  • MySQL 5.7+ / MariaDB 10.4+ (Opsiyonel — DB kullanacaksanız)
  • Composer gerekmez
  • Node.js gerekmez

SpeakerQuarter CLI'ı Kurun

QTR CLI (qtr) projelerinizi yönetir. Node.js ile dağıtılır:

npm
npm install -g speaker-quarter-cli
qtr --version
Çıktı: SpeakerQuarter CLI v1.x.x
Bu bölüm yardımcı oldu mu?

2. İlk Proje

~3 dk

Proje oluşturmak için qtr create komutunu kullanın. Komut, etkileşimli olarak PHP binary yolu ve memory-bank şablonunu sorar.

bash
qtr create benim-projem
cd benim-projem
qtr serve
Çıktı: QTR dev server started at http://localhost:8000

Klasör Yapısı

benim-projem/
├── pages/          ← Sayfa kontrolcüleri
├── resources/
│   └── views/      ← HTML şablonlar
├── routes/
│   ├── web.php     ← Sayfa route'ları
│   └── api.php     ← API route'ları
├── app/
│   └── core/       ← Framework çekirdeği
├── public/         ← Web kökü (index.php, assets)
└── .env            ← Ortam değişkenleri

Sunucu: qtr serve --port=3000 ile farklı port kullanabilirsiniz. qtr serve --stop ile durdurulur.

Bu bölüm yardımcı oldu mu?

3. Route Ekleme

~2 dk

QTR Framework'te her URL bir pages/ dosyasına karşılık gelir. Yeni bir sayfa eklemek için:

bash
# Sayfa oluştur
qtr route:create blog

# Mevcut route'ları listele
qtr route:list

Komut, pages/blog.php dosyasını ve routes/web.php'e route satırını otomatik ekler. Ardından view dosyasını oluşturun:

pages/blog.php
<?php
require_once QTR_ROOT . '/app/core/View.php';

View::render('blog/index', [
    'title' => 'Blog — Benim Projem',
]);

URL yapısı: /blogpages/blog.php  |  /blog/detailpages/blog.php (kısımlar $parts değişkeniyle erişilir)

Bu bölüm yardımcı oldu mu?

4. Veritabanı

~3 dk

QTR Framework migration için numaralı SQL dosyaları kullanır. Migration sistemi idempotent'tir; aynı dosyayı iki kez çalıştırmaz.

bash
# Yeni migration dosyası oluştur
qtr db:create users

# Mevcut dosyaları listele
qtr db:list

# Migration'ları çalıştır
qtr db:run
Çıktı: ✓ 001_create_users.sql — OK ✓ 002_add_index.sql — OK All migrations applied.

Model Kullanımı

app/models/UserModel.php
<?php
require_once QTR_ROOT . '/app/models/BaseModel.php';

class UserModel extends BaseModel
{
    protected static string $table = 'users';

    public static function findActive(): array
    {
        $pdo = self::getConnection();
        $stmt = $pdo->query("SELECT * FROM users WHERE is_active = 1");
        return $stmt->fetchAll();
    }
}

Zorla çalıştırma: qtr db:run --force daha önce çalıştırılmış dosyaları da yeniden uygular. Dikkatli kullanın.

Bu bölüm yardımcı oldu mu?

5. Admin Paneli

~2 dk

QTR Framework yerleşik bir yönetici paneliyle gelir. Etkileşimli kurulum sihirbazı ilk admin kullanıcısını ve rol yapısını otomatik oluşturur.

bash
qtr admin:install
Çıktı: Admin kullanıcı adı: admin Admin şifre: •••••••• Admin panel: http://localhost:8000/admin

Kurulumdan sonra /admin adresine giderek giriş yapabilirsiniz. Admin paneli;

  • Rol tabanlı erişim kontrolü (RBAC)
  • Log görüntüleyici
  • Kullanıcı yönetimi
  • Dashboard & istatistikler
Bu bölüm yardımcı oldu mu?

6. API Üretimi

~3 dk

Tek komutla 5 CRUD endpoint'i (index, show, create, update, delete) oluşturabilirsiniz:

bash
qtr api:crud Product
qtr api:list

Oluşturulan dosyalar:

app/api/
├── controllers/ProductController.php
├── services/ProductService.php
└── validators/ProductValidator.php

Middleware Ekleme

routes/api.php
$router->get('/api/products', 'ProductController@index')
       ->middleware('auth', 'rate-limit:60');

Dokümantasyon: qtr api:docs ile OpenAPI JSON ve Markdown belgesi üretin.

Bu bölüm yardımcı oldu mu?

7. Güvenlik

~2 dk

QTR Framework'ün 7 katmanlı güvenlik mimarisi varsayılan olarak etkindir. strict mod ek güvenlik başlıkları ekler:

bash
qtr security:mode strict
1
CSRF Token

Her form POST isteği için tek kullanımlık token doğrulaması.

2
XSS Temizleme

Tüm çıktılar htmlspecialchars + XssHelper filtresiyle geçer.

3
SQL Injection

PDO Prepared Statements zorunlu — raw query yasak.

4
Rate Limiting

Middleware katmanında IP+endpoint bazlı istek sınırlama.

5
Session Güvenliği

Oturum sabit alma, token rotasyonu, HttpOnly cookie.

6
Güvenlik Başlıkları

CSP, X-Frame-Options, Referrer-Policy, HSTS (strict modda).

7
Hata Yönetimi

Production'da stack trace gizlenir, loglanır.

Bu bölüm yardımcı oldu mu?

8. Deploy

~3 dk

Production'a geçmeden önce deploy kontrol listesini çalıştırın:

bash
qtr deploy:check
Çıktı: ✓ APP_ENV=production ✓ APP_DEBUG=false ✓ HTTPS zorunlu ✓ .env'de DB şifresi var ✓ storage/ yazılabilir Hazır! Deploy edebilirsiniz.

Apache / Nginx Yapılandırması

.htaccess (Apache)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
  • Web kökü olarak public/ klasörünü gösterin
  • .env dosyasına web erişimini engelleyin
  • storage/logs/ klasörünü yedekleyin
  • PHP display_errors=Off ayarlayın
Bu bölüm yardımcı oldu mu?

Hâlâ sorun mu var?

Dokümantasyon yetersiz kaldıysa iletişim sayfasından bize ulaşın ya da GitHub Issues üzerinden açık sorun bildirin.