Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QTR Framework

QTR Framework

AI Uyumlu • Sıfır Bağımlılık • Hafif PHP Web Framework

PHP Version Node Version License Status Zero Dependencies


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.


🎯 Neden QTR Framework?

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)

🧠 En Sıra Dışı Yenilik: Memory-Bank Sistemi

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


⚡ Micro-ORM: 500 Satırda 3 Kademeli ORM

Tam ORM'lere (Eloquent ~50.000 satır) alternatif olarak geliştirilmiş, array tabanlı bir çözüm.

Tier 1 — Zincirleme Query Builder

UserModel::select()
    ->where('status', 'active')
    ->whereLike('name', '%ara%')
    ->orderBy('created_at', 'DESC')
    ->paginate(1, 15);

Tier 2 — Soft Delete + İlişki Yardımcıları

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');

Tier 3 — Accessor / Mutator / Event Hooks

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');
    }
}

Neden Array Tabanlı? (Performans Karşılaştırması)

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)

📄 DSupport: Sıfır Bağımlılıkla Belge Üretimi

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 ZipArchive sı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');

🌉 RCSystem: Uzaktan Kontrol Paneli

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

🔐 Güvenlik: 8 Katmanlı Savunma

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 kullanmazstorage/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)


🛠️ CLI: 85+ Komut, Tek Araç

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ştur

Sı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.


🗄️ Migration'sız Veritabanı Yönetimi

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.


🔄 Autoloader: Suffix Tabanlı PSR-4 Alternatifi

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.


🧪 Diğer Sıra Dışı Mühendislik Kararları

  • 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

🗺️ Yol Haritası

✅ Tamamlanan Sistemler (16/34)

# 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

⏳ Planlanan Sistemler (17–34)

# 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

📊 Teknoloji Yığını

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

🚀 Hızlı Başlangıç

# 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

📁 Dökümantasyon

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ı

👤 Geliştirici

Recep Samet YıldızGitHub

Başlangıç: 8 Nisan 2026


📄 Lisans

MIT License — özgürce kullanın, değiştirin, dağıtın.


Built with ❤️ for developers and AI assistants alike.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors