Category: Blog

Your blog category

  • 🐝 Hive: The Self-Hosted Movie Management Platform You’ll Actually Enjoy Using

    If you’re like me — part developer, part movie enthusiast — you’ve probably dreamed of having a movie library that just works.

    No broken links, no missing posters, no chaos in your folders.

    Just your movies, beautifully organized, hosted locally, and running on your own system.

    That dream turned into Hive, an open-source, self-hosted movie management platform I’ve been building over the past few months.

    👉 Check it out on GitHub


    What Is Hive?

    Hive is a self-hosted movie platform that automatically organizes, updates, and syncs your movie collection in real time.

    It’s built for people who love control — not just over their media, but also over the systems that power it.

    Hive:

    • Watches your movie folders for new files or deletions
    • Extracts and enriches movie metadata
    • Integrates with Jellyfin for playback
    • Keeps everything private, local, and under your ownership

    It’s like having your own personal Netflix — but one that respects your privacy and runs on your machine.

    Why I Built Hive

    As both a software architect and a movie lover, I wanted a project that combined both worlds:

    something practical, something that solved a real pain point, and something that showcased clean software design principles.

    Existing solutions often felt too rigid or too closed.

    So Hive became my playground for experimenting with modern architecture patterns — but built around a tangible, fun use case.


    How Hive Works (The Tech Stuff)

    For the developers out there, here’s the stack:

    • .NET 9 — for backend services
    • RabbitMQ — event bus for inter-service communication
    • PostgreSQL — storing structured data
    • Redis — for caching and performance
    • Docker Compose — for containerized deployment
    • JWT Auth — for secure authentication

    Each component of Hive acts as an independent microservice.

    They talk through RabbitMQ, stay decoupled, and handle their specific jobs — like file watching, metadata management, or API communication.

    That means you can scale, replace, or extend parts of Hive without breaking everything else.

    It’s clean, modular, and developer-friendly.


    Architectural Highlights

    Hive’s design follows a clean architecture approach:

    • Domain layer — pure business logic, independent of frameworks
    • Infrastructure layer — handles databases, messaging, etc.
    • Application layer — coordinates commands, queries, and workflows

    This makes it perfect for developers who want to see real-world examples of event-driven microservices in action.


    What’s Coming Next

    Hive is still evolving, and here’s what’s on the roadmap:

    • A sleek web dashboard for browsing and managing movies
    • Smarter metadata fetching (trailers, ratings, posters)
    • Advanced search and filtering
    • Plugin system for future extensions
    • Monitoring and performance tracking

    The vision is to make Hive not just a tool — but a foundation for experimentation and learning.


    For Developers

    If you’re interested in:

    • Exploring microservice communication
    • Practicing CQRS and messaging patterns
    • Learning about clean architecture with .NET
    • Or just building something cool that manages your movie library

    Then Hive is absolutely worth checking out.

    The codebase is open, structured, and easy to follow — perfect for anyone who wants to dive into practical, real-world architecture.


    Join the Hive

    Hive is open-source and growing.

    Whether you’re a developer looking to contribute, a self-hoster wanting to try it out, or just curious about the architecture — I’d love your feedback.

    🔗 Explore the Project on GitHub

    Let’s make movie management smarter, cleaner, and fully our own.

    Tags: #opensource #dotnet #microservices #softwarearchitecture #selfhosting #movies #automation

  • Claude Code ve Multi-Agent Workflow ile Legacy iOS Uygulaması Refactoring

    Birkaç yıl önce geliştirip uzun süredir güncellemediğim bir iOS projem vardı. Altyapısı tamamen UIKit üzerine kurulu olan bu projede, yoğun olarak escaping closure barındıran asenkron yapılar ve bugünün standartlarına göre ciddi teknik borç (tech debt) üreten eski Swift kodları bulunuyordu.

    Projeye geri dönmemin sebebi acil bir güncelleme ihtiyacı değildi. Yapay zeka kod asistanlarının geldiği noktayı görünce, bu legacy kodu ele alıp baştan aşağı bir iOS refactoring süreci başlatmanın nasıl bir sonuç vereceğini test etmek istedim.

    Normal şartlarda bu ölçekteki bir iOS projesini refactor etmek, mimariyi temizlemek ve güncel standartlara çekmek ciddi bir efor gerektirir. Ancak yaygın olan “AI’a kodu verdim, o yazdı” yaklaşımı yerine, süreci kontrollü ve görev dağılımı yapılmış bir Multi-Agent (Çoklu Ajan) iş akışıyla yürüttüm. Tek bir chat ekranı kullanmak yerine, terminal üzerinden farklı sorumluluklara sahip bir yapay zeka sistemi kurguladım.

    İşte projenin modernize edilme sürecinin ve uyguladığım AI agent iş akışının detayları.

    Multi-Agent Ekibini Kurmak: Roller ve Sistem Promptları

    LLM’e tüm projeyi tek bir prompt ile verip “bunu düzelt” demek, genellikle bağlamın (context) kaybolmasına ve halüsinasyonlara neden oluyor. Bu yüzden yazılım mimarisindeki Sorumlulukların Ayrımı (Separation of Concerns)prensibini ajanlar üzerinde uyguladım. Her biri için izole Sistem Prompt’ları hazırlayarak üç farklı rol tanımladım:

    1. Product Manager (PM) Agent: Eski uygulamanın özelliklerini güncel kullanıcı ihtiyaçlarıyla eşleştirmek ve yapılacak taskları önceliklendirmekle görevli.
    2. UI/UX Designer Agent: Eski UIKit arayüzlerini Apple’ın güncel Human Interface Guidelines standartlarına göre analiz edip modern kullanıcı davranışları önermekle görevli.
    3. Developer Agent (Claude Code): Terminalde doğrudan kod tabanında çalışan, refactoring yapan ve teknik kaliteden sorumlu kod asistanı.

    Orkestrasyon: Merkezde İnsanın Olduğu (Human-in-the-Loop) Yönetim Modeli

    Yapay zeka ajanlarını birbirleriyle doğrudan etkileşime giren kontrolsüz bir döngüye bırakmak, projenin kapsamının kontrolsüzce genişlemesine (scope creep) yol açabiliyor. Bu yüzden süreci merkezden filtreleyerek yönettim:

    Plaintext

           [ PM Agent ] <---> [ UI/UX Agent ]
                                   ^
                                   |
                        [ Ben ] (Filtre & Karar)
                                   |
                                   v
                           [ Claude Code ] (Developer)
    

    İş akışı şu şekilde ilerledi:

    • Projeyi ilk olarak Claude Code ile tarattım. iOS kod tabanındaki mimari hataları ve eski kütüphane çakışmalarını raporladı.
    • Elde edilen bu analizi PM ve UX ajanlarıyla değerlendirdim. Uygulamanın yeni hedeflerini promptlar üzerinden aktardım.
    • UI/UX ajanı ve PM, navigasyon yapısı ve kullanıcı alışkanlıkları gibi bazı kritik akışlarda süreci yönlendirdi. Eski kodda çalışan ancak günümüzde hantal kalan yapıları, modern trendlere göre değiştirmemi önerdiler. Bu fikir alışverişiyle arayüz ve davranış kararlarını güncelledik.
    • Netleşen kararları spesifik tasklara bölüp terminaldeki Claude Code’a aktardım.

    Kodun Dönüşümü: Async/Await ve Derleme Süreci

    Claude Code, aldığı görevler doğrultusunda alt ajanlar (subagents) oluşturarak refactoring işini mikro parçalara böldü:

    • Network Katmanı Refactoring: Eski ve karmaşık closure yapıları, ağ katmanından sorumlu alt ajan tarafından temizlenerek modern Swift async/await yapılarına taşındı.
    • UI ve Hata Ayıklama: UX ajanından gelen tasarım kararları koda dökülürken, Xcode derleme (build) sırasında çıkan hataları ardışık bir geri bildirim döngüsüyle (feedback loop) çözen bir alt ajan devredeydi.

    AI’ın eski UIKit pratikleriyle yeni Swift yapılarını birbirine karıştırıp bağlamı kaybettiği anlarda devreye girip manuel düzeltmelerle süreci doğru rotaya soktum.

    Sonuç

    Bu süreç, Claude Code gibi yapay zeka araçlarından verim almanın yolunun sadece kod yazdırmak değil, sistemi doğru parçalara bölüp süreci iyi yönetmekten geçtiğini gösterdi.

    Uzun sürecek bir legacy kod modernizasyon sürecini, doğru yapılandırılmış bir multi-agent mimarisiyle çok daha kısa sürede tamamladım. iOS projesi şu an modern, optimize ve genişletilebilir bir kod tabanına sahip ve yayında.

  • Hello world!

    Welcome to WordPress. This is your first post. Edit or delete it, then start writing!