Proje Detayı

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

GoVue 3FlutterPostgreSQLWebSocketS3
Applancast — Dijital Tabela (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

01Web

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.

02Go

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.

03Flutter / Android

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

BackendGo 1.23, Fiber, Bun ORM, PostgreSQL, JWT
AltyapıDocker, Nginx, PgBouncer, ClickHouse (audit/analytics), RabbitMQ (e-posta/SMS/bildirim)
DepolamaAWS S3 (medya), yerel upload
Gerçek zamanlıWebSocket (Fiber contrib)
Yönetim paneliVue 3, Bootstrap Vue Next, ApexCharts, Axios (Velzon temelli)
Cihaz uygulamasıFlutter/Dart, Riverpod, GoRouter, WebSocket, video_player, sqflite (offline cache), wakelock_plus
DiğerSwagger, 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.

#Ahmet Şahin

Software Engineer

© 2026 Ahmet Şahin. Tüm hakları saklıdır.