Bu proje, farklı kaynaklardan sağlanan içerikleri (JSON & XML formatındaki provider verileri) toplayarak
tek bir standart formata dönüştüren ve bu verileri hem API hem de Dashboard üzerinden erişilebilir
hale getiren bir uygulamadır.
Amaç; arama, filtreleme, sıralama, puanlama ve güncellik takibi gibi işlevleri tek bir noktadan yönetmektir.
Her provider farklı veri formatı gönderdiği için tüm içerikler önce
tek tip bir puanlama sistemine dönüştürülür.
Bu puanlama şu kriterlere dayanır:
- İçerik türüne göre farklı ağırlık katsayıları uygulanır.
- Kullanıcı etkileşimleri puana yansıtılır.
- İçeriğin zaman bazlı güncelliği dikkate alınır.
Sonuçta elde edilen skorlar, kullanıcıya popülerlik ve alakalılık sırasına göre sunulur.
Sistem, iki farklı içerik sağlayıcıya entegre edilmiştir:
- JSON formatlı provider
- XML formatlı provider
Her provider’dan gelen veriler standart bir yapıya dönüştürülerek veritabanında saklanır.
İstek limiti yönetimi yerine Laravel Scheduler kullanılarak çözüm uygulanmıştır. Sistem her 15 dakikada bir provider’lardan verileri çekip veritabanını güncelleyecek şekilde ayarlanmıştır.
Yeni provider eklemek için sistem esnek ve genişletilebilir şekilde tasarlanmıştır.
Tüm içerikler MySQL veritabanında kalıcı olarak saklanır.
Performansı artırmak ve istek sınırlarını aşmamak için
cache mekanizması (Redis) yapılmıştır.
- Kod yapısı temiz, anlaşılır ve sürdürülebilir olacak şekilde tasarlanmıştır.
- Hata Yönetimi: Merkezi exception handler yerine, kritik işlemlerde yerel hata yakalama (try–catch) yöntemi kullanılmıştır. Ayrıca job süreçlerinde oluşan hatalar için özel bir job_logs tablosu oluşturulmuş, böylece her job’un çalışma detayları kayıt altına alınmıştır.
- Test Stratejisi: Birim testler yerine, uygulamanın uçtan uca doğruluğunu güvence altına almak için feature testler yazılmıştır.
- Ölçeklenebilirlik: Sistem artan veri hacmine karşı performanslı çalışacak şekilde kurgulanmıştır.
- Backend → Laravel 12 (PHP 8.2)
- Database → MySQL 8
- Cache (önerilen) → Redis
- Containerization → Docker & Docker Compose
- Provider 1 → JSON formatında veri
- Provider 2 → XML formatında veri
Gereklilik:
- PHP >= 8.2\
- Composer (PHP dependency manager)\
- Docker & Docker Compose (for containerized setup)\
1️⃣ Proje bağımlılıklarını indir
composer install
cp .env.example .env
php artisan key:generate2️⃣ Docker build & start
docker-compose up --build
docker-compose up -d3️⃣ Container içine gir
docker-compose exec app bash4️⃣ Migration çalıştır
php artisan migrate5️⃣ Projeyi başlat
php artisan serve --host=0.0.0.0 --port=8080👉 Artık http://localhost:8080 üzerinden erişebilirsiniz 🎉
- Pull request ve issue’lara açıktır.
- Katkı sağlamak isteyenler memnuniyetle karşılanır.