Applancast — Dijital Tabela (Digital Signage) Platformu
Kurumların dijital ekranlarına merkezi panelden içerik dağıtan, gün/saat bazlı zamanlayan ve canlı izleyen digital signage platformu

Proje ne yapıyor?
Applancast; perakende, ofis, otel ve restoran gibi ortamlardaki bilgilendirme/reklam ekranlarını merkezi bir panelden yöneten bir digital signage platformudur. Üç ana parçadan oluşur: organizasyon, cihaz, medya, playlist ve zamanlamaların yönetildiği web paneli; tüm iş mantığını taşıyan Go backend API; ve TV/tablet ekranlarında video-görsel oynatan Flutter/Android cihaz istemcisi.
Tipik akış: cihaz MAC adresiyle kendini kaydeder, admin onaylar, playlist ve medya indirilir, ekranda oynatılır. Panelden playlist değiştiğinde WebSocket ile cihaza sync sinyali gider ve cihaz yeni içeriği çeker. Gün/saat bazlı zamanlamayla farklı saatlerde farklı içerikler oynatılabilir; cihazlar heartbeat ile online/offline durumu, RAM, depolama ve ekran çözünürlüğünü bildirir.
Problem ve Çözüm
Birden fazla lokasyondaki dijital ekranlara içerik dağıtmak çoğu yerde hâlâ manuel bir süreçtir: USB ile video taşınır, saat bazlı içerik değişimi elle yapılır, "hangi ekran şu an çevrimiçi?" sorusunun cevabı yoktur.
Applancast bunu merkezi bulut paneli + Android cihaz istemcisi modeline taşıdı: medya yükleme, playlist oluşturma ve cihaz gruplarına atama tek panelden; değişiklikler WebSocket ile ekranlara anında yansıyor. Organizasyon bazlı çok kiracılı yapı sayesinde farklı müşteriler/şubeler izole şekilde yönetiliyor.
Altyapı, RabbitMQ ile asenkron işleme (e-posta/SMS/bildirim), PgBouncer bağlantı havuzlama ve ClickHouse audit log içeren, yatay ölçeklenebilirlik hedefiyle kurgulanmış Go servis mimarisi üzerine oturuyor.
Mimari — 3 Bileşen
Yönetim Paneli
Vue 3 + Bootstrap Vue Next + ApexCharts (Velzon temelli). Modüller: dashboard, organizasyonlar, cihaz grupları, cihazlar, medya, playlist'ler, zamanlamalar ve kullanıcılar.
Backend API
Go 1.23 + Fiber, Bun ORM + PostgreSQL, JWT. Cihaz kaydı ve onayı, içerik senkronizasyonu, WebSocket bildirimleri; medya S3 üzerinde, Swagger dokümantasyonu ve migration/fixture sistemi.
Cihaz İstemcisi
TV ve tabletlerde çalışan oynatıcı: Riverpod + GoRouter, video_player, sqflite ile offline medya önbelleği, wakelock_plus ile ekranın uyanık tutulması; heartbeat ile sistem metrikleri bildirimi.
Teknolojiler
| Backend | Go 1.23, Fiber, Bun ORM, PostgreSQL, JWT |
|---|---|
| Altyapı | Docker, Nginx, PgBouncer, ClickHouse (audit/analytics), RabbitMQ (e-posta/SMS/bildirim) |
| Depolama | AWS S3 (medya), yerel upload |
| Gerçek zamanlı | WebSocket (Fiber contrib) |
| Yönetim paneli | Vue 3, Bootstrap Vue Next, ApexCharts, Axios (Velzon temelli) |
| Cihaz uygulaması | Flutter/Dart, Riverpod, GoRouter, WebSocket, video_player, sqflite (offline cache), wakelock_plus |
| Diğer | Swagger, Makefile, migration/fixture sistemi |
Ölçülebilir Sonuçlar
Önceki sisteme göre
Anlık
WebSocket senkronizasyonu — panelde değişiklik, ekranda otomatik güncelleme
Offline
Cihazda medya önbellekleme (sqflite + yerel cache) — bağlantı kesilse de yayın sürer
Zamanlama
Gün/saat bazlı planlama — farklı saatlerde farklı playlist'ler
Canlı izleme
Heartbeat ile online/offline, RAM, depolama ve çözünürlük takibi dashboard'da
Aklınızdaki projeyi birlikte hayata geçirelim
Mobil uygulamadan (iOS & Android) web panellerine, Go ile ölçeklenebilir backend ve API geliştirmeden saha çözümlerine kadar uçtan uca yazılım geliştiriyorum. Yeni bir ürün, mevcut bir sistemin yenilenmesi ya da tek bir modül — freelance ve proje bazlı çalışmaya uygunum.