SafePass24
Erişim kontrolü ve öğrenci giriş çıkış takibi
Okul ve kurumlarda kartlı geçişleri yönetmeyi ve velilerin öğrencilerinin giriş çıkışlarını takip etmesini sağlayan sistem.

- Kimler için?
- Kurumlar, erişim yöneticileri ve veliler
- Katkım
- Bağımsız proje · Full-stack geliştirme
Çözülmesi gereken ihtiyaç
Okul ve kurumların geçiş kontrolünü ve cihaz yönetimini bir arada yürütmesi, velilerin de öğrencilerinin giriş çıkışlarını takip edebilmesi gerekiyor. Bağlantı kesildiğinde erişim kararları sürdürülebilmeli.
Ortaya çıkan işlevler
Kartlı geçişleri yönetme, velilerin öğrencilerinin giriş çıkışlarını takip etmesini sağlama, internet kesildiğinde yerel yetkilerle geçişe devam etme ve bağlantı geri geldiğinde kayıtları web ve mobil uygulamalara aktarma.
Ben ne yaptım?
Kart okuyucu ve turnikeleri yöneten yazılım, sunucu tarafı ve web/mobil uygulama bağlantıları üzerinde çalıştım. Fiziksel geçişleri uygulamalardan takip edilebilen kayıtlara bağladım.
Uygulama ekranları
Bir ekran seçin; öğrencinin takibinden okul yönetimine kadar uygulamanın nasıl kullanıldığını görün.
Geliştirme ayrıntılarını incele
Teknik yaklaşımla ilgilenenler için: çalışma akışı, kullandığım teknolojiler ve uygulama kararları.
Süreç nasıl işliyor?
Cihazın kurulumu, erişim kararı ve olayın uygulamalara ulaşması birbirine bağlı süreçler. Bağlantı kesilirse controller yerel yetkilerle çalışmayı sürdürüyor.
Ana akış
Cihazı devreye al
Controller, okuyucular, röleler ve kamera yapılandırılır; backend ile cihaz eşleştirilir.
Kartı okuyucudan al
OSDP / RS-485 üzerinden gelen kart UID’si controller tarafından işlenir; HMAC hash ile korunur.
Erişim kararını al
Bağlantı varsa uzak yetkilendirme kullanılır. Uzak karar alınamazsa SQLite yetki cache’ine geçilir.
Geçişi yönet
İzin verilen erişim için Modbus rölesi çalıştırılır; erişim kararı geçiş olayına bağlanır.
Olayı ve görüntüyü ilişkilendir
ONVIF / ISAPI ve RTSP / FFmpeg akışlarıyla olayın kamera snapshot’ı hazırlanır; yerel görüntü şifrelenir.
Olayı buluta senkronize et
Kalıcı outbox ve retry mekanizmaları olayları bağlantı sonrasında backend’e taşır.
Web ve mobilde takip et
Kurum yöneticileri yetkileri kapsamındaki geçiş kayıtlarını, veliler ise öğrencilerinin giriş çıkışlarını Next.js / Flutter uygulamalarından takip eder.
Alternatif ve destek süreçleri
Uzak karar alınamıyorsa
- Yerel yetkiyi sorgula
SQLite cache erişim kararının internet bağlantısına bağımlılığını azaltır.
- Olayı kalıcı tut
Çevrimdışı oluşan olay outbox’a yazılır; bağlantı geldikten sonra 6. adımda senkronize edilir.
Cihaz konfigürasyonu değişirse
- Konfigürasyonu dağıt
MQTT üzerinden cihaz konfigürasyonu senkronize edilir.
- Yeni ayarı uygula
Controller yeni ayarlarla sonraki okuyucu ve erişim olaylarını işler.
Çözüm yaklaşımı
- Müşteri ihtiyaçlarına göre edge controller'ın okuyucu, RS-485, röle, kamera ve Linux çalışma ortamı gereksinimlerini belirledim; donanıma uygun controller yazılımını geliştirdim.
- Go/CGO ve libosdp ile OSDP/RS-485 okuyucuları; Modbus ile turnike rölelerini entegre ettim. ONVIF/ISAPI ve RTSP/FFmpeg üzerinden olayla ilişkili kamera snapshot akışları geliştirdim.
- Uzak erişim kararı alınamadığında SQLite yetki cache'ine geçiş, kalıcı outbox ve retry mekanizmalarıyla çevrimdışı geçiş ve bağlantı sonrası olay senkronizasyonu uyguladım.
- Kart UID'leri için HMAC hash, yerel kamera görüntüleri için AES-GCM şifreleme ve cihaz bazlı iletişim kontrolleri üzerinde çalıştım.
- Go/Fiber backend'inde modüler monolit, multi-tenant veri izolasyonu ve JWT/OTP akışları; Next.js/Flutter istemcileri için API, cihaz commissioning ve MQTT konfigürasyon senkronizasyonu geliştirdim.
- GitHub Actions ile Go testleri, race detector ve govulncheck kontrollerini CI'a ekledim; imajları GHCR'a yayınlayıp Cosign ile imzaladım.
Teknolojiler
- Go
- Next.js
- TypeScript
- Flutter
- PostgreSQL
- Redis
- MQTT
- SQLite
- MinIO
- Docker
- Nginx
- OSDP / Modbus
