AI Uyumlu • Sıfır Bağımlılık • Hafif PHP Web Framework
QTR Framework, Laravel benzeri ancak çok daha hafif, AI (yapay zeka) ile uyumlu çalışmak üzere sıfırdan tasarlanmış, PHP tabanlı bir web framework'üdür.
Composer, migration, ORM gibi geleneksel karmaşıklıklara alternatif ve sıra dışı çözümler sunar.
Hedefi: Düşük context, yüksek verim — AI asistanların ve geliştiricilerin birlikte çalışabileceği ideal ortam.
Diğer framework'lerden ayrılan temel felsefemiz: "Kod, hem insan hem AI tarafından anlaşılabilir olmalı."
| Geleneksel Framework'ler | QTR Framework |
|---|---|
| 50.000+ satır ORM (Eloquent) | ~500 satır Micro-ORM (3 kademeli) |
| Composer bağımlılığı zorunlu | Sıfır harici bağımlılık |
| Migration sınıfları ile DB yönetimi | Ham SQL dosyaları + idempotency takibi |
| Karmaşık route config dosyaları | Dosya adı = URL (pages/blog.php → /blog) |
| IDE ve geliştirici odaklı dökümantasyon | AI-ilk Memory-Bank sistemi |
| Reflection + Proxy + Object Hydration | Array tabanlı, RAM'de %300 daha hafif |
| Harici kütüphanelerle PDF/Excel/Word | Saf PHP ile belge üretimi (ZipArchive + OOXML) |
QTR Framework'ün en büyük farkı, projeye gömülü gelen Memory-Bank sistemidir.
Nedir? Projenin tüm mimarisini, çalışma şeklini, fonksiyonlarını, dosya bağlantılarını ve parametrelerini yapılandırılmış .md dosyalarında tutan canlı bir bilgi bankası.
Neden devrimsel? Her yeni AI oturumu 12+ dosyayı okuyarak 3 saniyede projenin tamamını kavrar. Kod taramaya, tahmin etmeye gerek kalmaz.
memory-bank/
├── Current-Degisiklikler.md ← Son değişiklikler (tarih + amaç + konum)
├── Current-Durum.md ← Framework'ün anlık sağlık durumu
├── Current-Hatalar.md ← Aktif hatalar + öğrenilen dersler
├── Project-Mimari.md ← Klasör yapısı, teknoloji kararları
├── Project-CalismaSecli.md ← Request lifecycle, akış diyagramları
├── Project-Dosyalar.md ← Her dosyanın görevi (tablo formatında)
├── Project-Fonksiyonlar.md ← Her sınıfın her metodu ve açıklaması
├── Project-Baglantilar.md ← Modüller arası bağımlılık grafiği
├── Project-Parametreler.md ← .env, .qtr.json, sabitler
├── HowToUse.md ← Sistemin kendi kullanım kılavuzu
├── FixedIssue.md ← Çözülmüş hatalar (immutable log)
└── CurrentProject.md ← Proje genel durum raporu
3 kademeli şablon sistemi:
starter— Basit projeler için (12 dosya)professional— DB + API içeren projeler için (ek sistem dosyaları)iterative— Uzun soluklu projeler için (active_context.md,decisions_log.md)
CLI ile tek komut: qtr mb:init --template=professional
Tam ORM'lere (Eloquent ~50.000 satır) alternatif olarak geliştirilmiş, array tabanlı bir çözüm.
UserModel::select()
->where('status', 'active')
->whereLike('name', '%ara%')
->orderBy('created_at', 'DESC')
->paginate(1, 15);UserModel::delete($id); // Soft delete (deleted_at)
UserModel::restore($id); // Geri getir
UserModel::forceDelete($id); // Kalıcı sil
UserModel::withTrashed()->get(); // Silinenler dahil
// İlişkiler: otomatik JOIN yok, açık ve debug edilebilir
BaseModel::belongsTo('users', 'user_id', $row['user_id']);
BaseModel::hasMany('posts', 'user_id', $userId);
BaseModel::withMany($rows, 'users', 'user_id', 'id', 'user');class UserModel extends BaseModel {
// Accessor — her satıra otomatik 'full_name' ekler
static function getFullNameAttribute($row) {
return $row['first_name'] . ' ' . $row['last_name'];
}
// Mutator — create()'te otomatik hash'ler
static function setPasswordAttribute($value) {
return password_hash($value, PASSWORD_BCRYPT);
}
// Lifecycle hook
protected static function beforeCreate(array &$data): void {
$data['created_at'] = date('Y-m-d H:i:s');
}
}| Metrik | QTR Micro-ORM | Laravel Eloquent |
|---|---|---|
| Basit SELECT | ~0.4ms | ~1.5ms |
| 1000 satır RAM | ~2.2MB | ~8MB |
| Kod tabanı | ~500 satır | ~50.000 satır |
| Object hydration | ❌ (gerek yok) | ✅ (her satır) |
Harici hiçbir kütüphane olmadan (PhpSpreadsheet, TCPDF, DomPDF yok) Excel, Word, PDF ve CSV üreten sistem.
Nasıl?
- Excel/Word: PHP'nin yerleşik
ZipArchivesınıfı ile ham OOXML XML'leri oluşturur - PDF: Saf PHP ile PDF 1.4 binary yazar — font gömme, sayfa kırma, Türkçe karakter desteği
- CSV:
fputcsv+ UTF-8 BOM - Template Engine:
{{degisken}},{{#each}},{{#if}}desteği ile şablonlu belge üretimi
// Tek satırda Excel indirme
DSupport::fromData($users)
->headers(['Ad', 'Email', 'Rol'])
->toExcel()
->download('kullanicilar.xlsx');
// Şablondan Word fatura
DSupport::template('invoice')
->with(['client' => 'Ali Yılmaz', 'total' => 1500])
->toWord()
->download('fatura.docx');Framework'e gömülü gelen, hem local hem sunucu ortamını tek bir web panelinden yöneten sistem.
Local yetenekler: Favicon/logo değiştirme, SQL export (tek komut), debug log görüntüleme, local server başlat/durdur
Server yetenekleri: FTP bağlantısı, akıllı dosya karşılaştırma (local ↔ remote diff), onaylı push, cache temizleme
Güvenlik modeli: 3 aşamalı token (admin şifresi → login token → server token), bcrypt hash'leme, IP kısıtı, TTL, session yönetimi
app/bridge/
├── BridgeDiff.php ← Dosya karşılaştırma motoru (MD5 tabanlı)
├── BridgeFtp.php ← FTP/SFTP bağlantı ve transfer
├── BridgeAuth.php ← 3 aşamalı güvenlik
├── BridgeServer.php ← Yerel API sunucusu
├── BridgeAudit.php ← İşlem denetim kaydı
├── BridgeRollback.php ← Değişiklik geri alma
└── BridgeWebhook.php ← Webhook tetikleyici
| Katman | Bileşen | Yöntem |
|---|---|---|
| 1. CSRF | CsrfToken |
Session tabanlı token |
| 2. XSS | XssHelper |
htmlspecialchars + tag temizleme |
| 3. Doğrulama | Validator |
Rule-based (required, email, unique...) |
| 4. Session | SessionSecurity |
Fixation koruması, ID yenileme |
| 5. Dosya | FileUpload |
MIME kontrolü, uzantı beyaz listesi |
| 6. API | ApiKeyMiddleware |
Header X-API-Key doğrulama |
| 7. Rate Limit | RateLimiter |
Dosya tabanlı, IP başına 5 istek/15dk |
| 8. CORS | CorsMiddleware |
Origin beyaz listesi, preflight |
Rate Limiter algoritması: Veritabanı veya Redis kullanmaz — storage/cache/rate_limits/{ip}.json dosyalarında tutar. Atomik yazma (LOCK_EX), otomatik temizleme.
3 kademeli güvenlik modu: strict (tümü aktif) → balanced (çekirdek koruma) → relaxed (geliştirme)
Framework'ün tüm yönetimi Node.js tabanlı qtr CLI komutu ile yapılır:
qtr create projem # Yeni proje (starter/professional/iterative)
qtr serve # PHP built-in server (localhost:8000)
qtr db:run # SQL dosyalarını sıralı çalıştır
qtr api:crud Product # CRUD endpoint'li API oluştur
qtr admin:install # Admin paneli kur
qtr security:audit # Güvenlik denetimi
qtr backup # ZIP + DB yedekleme
qtr github:push --message="v1" # GitHub'a push
qtr doctor # Proje sağlık kontrolü
qtr sync # Çekirdek dosya bütünlüğü (MD5)
qtr cache:classmap # Production classmap oluşturSıra dışı özellik: qtr sync komutu ~59 çekirdek dosyayı MD5 hash ile karşılaştırır, güncel olmayanları tespit eder ve yedekleyerek günceller. %0–100 arası bütünlük skoru verir.
Laravel tarzı migration sınıfları yerine numaralı ham SQL dosyaları:
database/
├── 001_users.sql
├── 002_create_posts_table.sql
├── 008_alter_users_add_role_status.sql
Idempotency mekanizması: qtr db:run çalıştırılan dosyaları storage/.db_executed dosyasında takip eder. Aynı dosya iki kez çalıştırılmaz. Zorlama için --force.
Neden daha iyi? SQL dosyaları doğrudan okunabilir, AI tarafından anlaşılabilir, migration framework API'si öğrenmeyi gerektirmez.
Namespace → dizin eşlemesi yerine sınıf adı son eki ile otomatik yükleme:
XxxController → app/api/controllers/ veya app/admin/controllers/
XxxModel → app/models/
XxxService → app/api/services/
XxxMiddleware → app/api/middleware/ veya app/admin/middleware/
3 kademeli çözümleme: Request cache → Classmap cache → Dinamik tarama. Composer'sız çalışır.
- Error Handler: Debug modunda interaktif çift panelli hata sayfası (sol: stack trace, sağ: ±10 satır kod). GitHub koyu teması. Production'da sıfır bilgi sızıntısı.
- Settings Sistemi: 3 katmanlı cache (RAM → Dosya → DB), otomatik tip dönüşümü (string→int/bool/float/array)
- Middleware Registry:
'rate-limit:120'gibi parametreli middleware çözümleme - Activity Log: Yazıldıktan sonra immutable, hassas alan otomatik maskeleme (
password→***) - RBAC: Slug tabanlı rol referansı (
users.role = 'admin'), foreign key yok, insan tarafından okunabilir - Notification: Kişisel + Global ayrık mimari, SQL
FIELD()ile priority sıralama, dosya cache'li okunmamış sayacı - Media:
_addComputedFields()ile her satıra url, thumb_url, human_size, is_image gibi türetilmiş alanlar eklenir
| # | Sistem | Durum |
|---|---|---|
| 01 | Proje Altyapısı | ✅ |
| 02 | Local Server | ✅ |
| 03 | Route Sistemi | ✅ |
| 04 | Database Sistemi | ✅ |
| 05 | Config & Ortam | ✅ |
| 06 | View Katmanı | ✅ |
| 07 | Model Katmanı | ✅ |
| 08 | API Sistemi | ✅ |
| 09 | Admin Panel | ✅ |
| 10 | Güvenlik Sistemi | ✅ |
| 11 | Yedekleme Sistemi | ✅ |
| 12 | GitHub Entegrasyonu | ✅ |
| 13 | Memory Bank | ✅ |
| 14 | Dosya Çalıştırma | ✅ |
| 15 | Test Sistemi | ✅ |
| 16 | Production Deploy | ✅ |
| # | Sistem | Açıklama |
|---|---|---|
| 17 | Autoloader Sistemi | Classmap + suffix tabanlı yükleme |
| 18 | Middleware Zinciri | Katmanlı middleware pipeline |
| 19 | Migration Sistemi | SQL migration versiyonlama |
| 20 | QTR Doctor | Proje sağlık kontrol sistemi |
| 21 | Log Viewer | Web tabanlı log izleyici |
| 22 | Global Helpers | Framework geneli yardımcı fonksiyonlar |
| 23 | Cache Katmanı | Dosya tabanlı önbellek |
| 24 | Seeder Sistemi | Test verisi üretme |
| 25 | Asset Manager | CSS/JS derleme ve optimizasyon |
| 26 | Kullanıcı Yönetimi | Kayıt, giriş, şifre sıfırlama |
| 27 | Rol & Yetki Sistemi | RBAC (Role-Based Access Control) |
| 28 | Aktivite Logu | Kullanıcı eylem takibi |
| 29 | Ayarlar Yönetimi | Dinamik site ayarları |
| 30 | Dosya & Medya Yönetimi | Upload, thumbnail, galeri |
| 31 | Profil Yönetimi | Kullanıcı profil sayfası |
| 32 | Bildirim Sistemi | Gerçek zamanlı bildirimler |
| 33 | Dashboard Widgets | Sürükle-bırak widget paneli |
| 34 | RCSystem | Uzaktan kontrol paneli |
| Katman | Teknoloji |
|---|---|
| Backend | PHP 8.1+ (saf PHP, framework'süz) |
| CLI | Node.js 18+ (saf Node, framework'süz) |
| Veritabanı | MySQL (PDO, gerçek prepared statements) |
| Sunucu | Apache/Nginx + PHP built-in server |
| Test | PHPUnit (isteğe bağlı) |
| Bağımlılık | Sıfır — Composer ve npm paketleri opsiyonel |
# CLI'ı kur (PowerShell - Yönetici)
irm https://raw.githubusercontent.com/ThePecerowski/QTR-CLI/main/install.ps1 | iex
# Proje oluştur
qtr create benim-projem
cd benim-projem
# Sunucuyu başlat
qtr serve
# Tarayıcıda aç: http://localhost:8000| Dosya | İçerik |
|---|---|
| MİMARİ.md | Detaylı mimari açıklaması |
| YENILIKLER.md | Diğer framework'lere göre farklar |
| SISTEMLER.md | Tüm alt sistemlerin açıklaması |
| memory-bank-nedir.md | Memory-Bank sistemi derinlemesine |
| ROADMAP.md | Detaylı yol haritası |
Recep Samet Yıldız — GitHub
Başlangıç: 8 Nisan 2026
MIT License — özgürce kullanın, değiştirin, dağıtın.
Built with ❤️ for developers and AI assistants alike.
