RonaPOS nasıl çalışır?
Sistem mimarisi, roller, lisans akışı, API uçları ve veri modeli — teknik ekibiniz ve meraklı kullanıcılarınız için özet.
Genel Bakış
RonaPOS üç katmandan oluşur: masaüstü istemci (WPF / .NET, Windows), mobil uygulamalar (Android, yerel ağ üzerinden konuşur) ve web altyapısı (bu site + lisans/panel backend’i). Satış verisi yerel veritabanında tutulur; lisans, indirme ve aktivasyon kayıtları web backend’inde barındırılır.
Mimari
- Masaüstü: WPF / .NET Framework, tam ekran dokunmatik arayüz, yerel veritabanı (metin tabanlı veya SQL Server), kural motoru ve yazıcı/yazarkasa katmanı.
- Mobil: Android uygulamaları bilgisayarın yerel IP adresi üzerinden UDP keşfiyle bağlanır; REST benzeri yerel API kullanılır.
- Web: React SPA (bu site) + Express backend. JWT (HS256) access token, httpOnly refresh cookie, bcrypt parola karma.
- Yedekleme: .zip / .rbk (AES-256 şifreli) / .txt biçimleri; klasör, bulut, FTP, e-posta ve HTTP POST hedefleri.
[Garson Tablet] ─┐
[CallerID] ─┼── yerel ağ ──► [RonaPOS Masaüstü] ──► yerel veritabanı
[Kasa Terminali] ─┘ │
└─► (ops.) yazarkasa / mutfak yazıcısı
[Müşteri / Bayi / Admin] ──► [Web Sitesi + API] ──► lisans, indirme, davetRoller ve Yetkiler
| Rol | Giriş | Yapabildikleri |
|---|---|---|
| Admin | /admin | Kullanıcı, bayi, lisans, davet, aktivasyon ve indirme yönetimi; istatistikler |
| Bayi | /bayi | Müşteri oluşturur, davet kodu üretir, lisans atar ve durumunu izler |
| Müşteri | /panel | Lisansını onaylar, cihazlarını görür, programı indirir, geçmişini okur |
| Masaüstü rolleri | POS | Müdür, Kasiyer, Garson, Mutfak, Muhasebe — ekran bazlı yetki |
Lisans Akışı
Admin bayi oluşturur
Bayi hesabı açılır, kota ve durumu belirlenir.
Bayi müşteri + lisans üretir
Müşteri kaydı ve davet kodu oluşur;
RNP-XXXX-XXXX-XXXX-XXXXbiçiminde lisans anahtarı üretilir (durum:pending).Müşteri panelden onaylar
Anahtar, paket, süre ve cihaz limiti doğrulanır; durum
activeolur.Masaüstü doğrular
Program
/api/licenses/desktop/checkile anahtarı ve bilgisayarı doğrular; süresi dolan lisansexpired, iptal edilencancelledolur.
| Paket | Açıklama | Terminal | Fiyatlandırma |
|---|---|---|---|
| TRIAL-30 | 3 gün deneme | 1 terminal | Ücretsiz |
| POS-1Y | 1 yıllık lisans | 2 terminal | Yıllık |
| POS-LIFE | Ömür boyu lisans | 3 terminal | Tek sefer |
| MOBILE-1Y | Mobil uygulama | Sınırsız cihaz | Yıllık |
Anahtar alfadesi ABCDEFGHJKLMNPQRSTUVWXYZ23456789 şeklindedir; I, O, 0 ve 1 karakterleri karışıklığı önlemek için kullanılmaz.
API Tablosu
Tüm uçlar /api altında; hata biçimi her yerde aynı:
{ "ok": false, "error": "KOD", "message": "Türkçe açıklama" }| Yöntem | Uç | Açıklama |
|---|---|---|
| POST | /api/auth/register | Davet koduyla hesap oluşturur |
| POST | /api/auth/login | E-posta + şifre ile giriş, JWT döner |
| POST | /api/auth/refresh | Refresh cookie ile yeni access token |
| POST | /api/auth/logout | Oturumu kapatır |
| GET | /api/me | Aktif kullanıcının bilgileri |
| GET | /api/licenses/mine | Rol bazlı lisans listesi |
| POST | /api/licenses/activate | Müşteri lisans onayı (7 doğrulama) |
| POST | /api/licenses/desktop/activate | Masaüstü program: anahtarı bilgisayara bağlar, imzalı sertifika döner |
| POST | /api/licenses/desktop/check | Masaüstü program: her açılışta lisans ve bilgisayar kontrolü |
| POST | /api/licenses/issue | Bayi/admin lisans üretir |
| PATCH | /api/admin/licenses/:id | Lisans durumunu değiştirir |
| POST | /api/customers | Müşteri + davet kodu oluşturur |
| GET | /api/customers | Müşteri listesi (?q= arama) |
| GET | /api/dealers | Bayi listesi (admin) |
| GET | /api/downloads | İndirilebilir dosyalar + SHA-256 |
| POST | /api/downloads/:id/log | İndirme kaydı ekler |
| GET | /api/stats | Yönetim özeti sayaçları |
| POST | /api/contact | İletişim formu mesajı |
Veri Modeli
İlk aşamada dosya tabanlı JSON store kullanılır; arayüz SQLite / Turso / Postgres gibi bir ilişkisel veritabanına geçirilebilir (DATA_BACKEND=sql).
| Tablo | Alanlar |
|---|---|
| User | id, name, email, passwordHash, role, dealerId, status, createdAt |
| Invite | id, code, role, dealerId, expiresAt, usedBy, usedAt |
| Dealer | id, name, email, phone, quota, status |
| License | id, key, packageCode, status, customerId, dealerId, expiresAt, maxDevices |
| Device | id, licenseId, deviceId, hostname, lastSeenAt, revokedAt |
| ActivationLog | id, licenseId, deviceId, source, ip, ua, at, result |
| DownloadLog | id, userId, fileId, at, ip, ua |
| AuditEntry | id, actorId, action, target, meta, at |
Kurulum
Kurulum dosyasını indirin
Sayfadaki İndir bölümünden ya da müşteri panelinden setup dosyasını alın.
Önkoşulları bekleyin
.NET Framework 4.8, WebView2 ve gerekirse SQL Server otomatik kurulur.
Veritabanı bağlantısı
Varsayılan yerel dosya veritabanı kullanılır; istenirse LocalDB/SQL Server seçilebilir.
Lisansınızı onaylayın
Müşteri panelinden anahtarı onaylayın; program açılışta anahtarı doğrular.
Yedekleme ayarlayın
Otomatik yedek hedefinizi (USB, bulut, FTP, e-posta) seçin ve ilk yedeği alın.
Güvenlik
- Parolalar bcrypt (cost 10) ile saklanır; hiçbir yerde düz metin tutulmaz.
- Access token 15 dakika, refresh token 7 gün — httpOnly, SameSite cookie.
- Giriş uçlarında 10 deneme / 15 dakika, lisans aktivasyonunda 20 / saat hız sınırı.
- Her lisans aktivasyonu ve indirme, IP + kullanıcı ajanıyla günlüğe yazılır.
- Yedek dosyaları AES-256 ile şifrelenebilir; şifre Windows DPAPI ile korunur.
- Masaüstü tarafında UDP keşif trafiği yerel ağla sınırlıdır; üretim ağlarında segmentasyon önerilir.
Güvenlik açığı bildirmek için security@ronapos.com adresine yazabilirsiniz.