Teknik Servis / Tamir Atölyesi Yönetim Sistemi
Müşteriden cihaza, iş emrinden ödemeye — bir teknik servis atölyesinin tüm günlük işleyişini tek bir masaüstü uygulamasında toplayan, yerelde çalışan ve verinizin sizde kaldığı bir yönetim sistemi.
Özellikler · Ekran Görüntüleri · Kurulum · Geliştirici Rehberi · Yol Haritası
- Vizyon ve Misyon
- Proje Hakkında
- Öne Çıkan Özellikler
- Ekran Görüntüleri
- Teknoloji Yığını
- Mimari ve Proje Yapısı
- Kurulum (Son Kullanıcı)
- Geliştirici Kurulumu
- Yapılandırma ve Veri Klasörü
- Dağıtım / Sürüm Yayınlama
- Yol Haritası
- Katkıda Bulunma
- Lisans
- Teşekkürler
Vizyonumuz: Küçük ve orta ölçekli teknik servis atölyelerinin, kurumsal ERP sistemlerinin karmaşıklığına ve maliyetine katlanmadan; müşteri, cihaz, iş emri ve stok yönetimini tek bir çatı altında, hızlı ve güvenilir şekilde yürütebildiği referans masaüstü uygulaması olmak.
Misyonumuz:
- Sadelik: Atölye sahibinin veya teknisyenin bilgisayar uzmanı olmasını gerektirmeyen, günlük iş akışına birebir oturan bir arayüz sunmak.
- Veri sahipliği: Bulut aboneliği zorunluluğu olmadan, verinin tamamen kullanıcının kendi cihazında, yerel bir veritabanında güvenle saklanmasını sağlamak.
- Sürdürülebilirlik: Modern, bakımı yapılabilir bir teknoloji temeli (Java 21, aktif olarak güncellenen kütüphaneler) üzerinde, uzun vadede geliştirilebilir kalmak.
- Erişilebilirlik: Windows ve Linux üzerinde aynı şekilde çalışan, kurulumu tek adımlık
native paketlerle (
.exe/.msi,.deb/.rpm) dağıtılan bir uygulama olmak.
Bu doğrultuda Servicio; bir telefon/bilgisayar tamir atölyesinin ihtiyaç duyduğu müşteri kaydı, cihaz takibi, servis (iş emri) süreci, parça/stok yönetimi, tedarikçi ilişkileri, tahsilat takibi, belge (PDF) üretimi ve müşteri iletişimi (WhatsApp) gibi tüm temel işlevleri; ek bir sunucuya veya internet bağlantısına bağımlı olmadan sunar.
Servicio, Java/Swing ile geliştirilmiş, tek kullanıcılı ve yerel çalışan bir masaüstü uygulamasıdır. Verisini bilgisayarınızdaki bir SQLite veritabanında tutar; internet bağlantısı yalnızca güncelleme kontrolü, WhatsApp Web entegrasyonu ve (varsa) TCMB döviz kuru çekimi gibi isteğe bağlı özellikler için kullanılır — uygulamanın temel işlevleri çevrimdışı da çalışır.
Hedef kitlesi; telefon/bilgisayar/elektronik tamiri yapan küçük-orta ölçekli teknik servis atölyeleri, bayiler ve bağımsız teknisyenlerdir.
Not:
ServicioBackendadında ayrı bir Spring Boot projesi de mevcuttur — bu, farklı bir codebase'dir ve bu repo ile karıştırılmamalıdır.
- Bireysel / Kurumsal müşteri tipleri (Kurumsal için firma ismi, vergi no, vergi dairesi alanları).
- Çoklu telefon numarası, adres, e-posta, not alanları.
- "Sorunlu Müşteri" bayrağı ile dikkat edilmesi gereken müşterilerin işaretlenmesi.
- Müşteri detay sayfasında geçmiş servis kayıtları ve toplam harcama özeti.
- Cihaz türü / marka sözlükleri (Ayarlar üzerinden yönetilebilir, genişletilebilir).
- Cihaz bazlı geçmiş: servis kayıtları, 2.el alım-satım hareketleri tek ekranda birleşik.
- Cihaz erişim bilgisi: ekran kilidi PIN / şifre / desen bilgisi, ayrı şifrelenmiş bir tabloda saklanır ve tanımlı bir süre sonra otomatik olarak temizlenir.
- Uçtan uca servis kaydı: arıza tespiti → teklif/onarım onayı → teslimat.
- Durum takibi (beklemede, onarımda, teslim edildi, iade vb.).
- Kullanılan parça ve işçiliklerin kayda eklenmesi, otomatik tutar hesaplama.
- Servis akışına özel PDF belgeleri: Arıza Tespit Formu, Teklif/Onarım Onayı, Cihaz Kabul Formu, Servis Teslim Formu — imza alanlı, işletme logosu antetli.
- WhatsApp üzerinden müşteriye şablonlu mesaj gönderimi (durum bildirimi, hatırlatma vb.).
- Parça kategorileri sözlüğü, uyumlu model filtresi, barkod desteği (üretme + tarama).
- Stok giriş/çıkış takibi, kritik stok uyarısı, envanter değeri raporu.
- Çoklu döviz desteği: parça alış fiyatı USD/EUR girilebilir, TCMB günlük kurundan veya manuel kurdan TL karşılığı hesaplanır.
- Tedarikçi kartları ve tedarik ettiği parçaların listesi.
- Servis bazlı kısmi/tam tahsilat kaydı, kalan bakiye takibi.
- Tahsilat fişi PDF olarak üretilip yazdırılabilir.
- Cihaz merkezli tasarım: her cihazın alım ve satım hareketleri birlikte izlenir.
- Alım/Satım/Garanti Belgesi/Cihaz Ekspertiz Raporu gibi 4 ayrı PDF belge türü.
- Ayarlar > Dil ve Bölge üzerinden arayüz dili (Türkçe/İngilizce), tarih-sayı biçimi (bölge) ve gösterim para birimi birbirinden bağımsız olarak seçilebilir.
- İlk açılışta işletim sistemi diline göre otomatik belirlenir, değişiklik anında (yeniden başlatmadan) uygulanır.
- PIN ile kilit ekranı, kullanıcı oturumu.
- Hassas veriler (cihaz erişim bilgisi, kullanıcı şifresi) bcrypt/şifreli olarak saklanır.
- Uygulama içinden GitHub Releases üzerinden manifest tabanlı otomatik güncelleme kontrolü, indirme ve kurulum.
- Otomatik/manuel veritabanı yedekleme, yedekten geri yükleme.
- Servis kayıtları, parçalar, 2.el stok gibi ekranlarda özet istatistik kartları (toplam kayıt, aktif işlemler, ciro vb.).
🚧 Yakında eklenecek. Bu bölüme uygulamanın gösterge paneli, servis kaydı formu, cihaz detay ekranı ve Ayarlar ekranlarından görseller eklenecektir.
| Katman | Teknoloji |
|---|---|
| Dil / Runtime | Java 21 (derleme: JetBrains JDK 21 — jbr-21.0.10) |
| Arayüz (UI) | Swing, FlatLaf (tema), MigLayout, SwingX, JFreeChart (grafikler) |
| Modal / Bildirim | raven-modal (onay/hata/bilgi diyalogları, toast bildirimleri) |
| Veritabanı | SQLite (sqlite-jdbc) + JDBI3 (repository katmanı) + Flyway (migration) |
| Bağlantı Havuzu | HikariCP |
| Yapılandırma | Özel JSON tabanlı config store (Gson) → config.json |
| Şifreleme | jBCrypt (bcrypt) |
| PDF Üretimi | OpenPDF |
| Loglama | SLF4J + Logback |
| Derleme | Maven (pom.xml) |
| Native Paketleme | jpackage — Windows (.exe/.msi, WiX Toolset v3) ve Linux (.deb/.rpm) |
Uygulama, klasik bir katmanlı masaüstü uygulama mimarisi izler:
src/main/java/tr/cabro/servicio/
├── Launcher.java # Gerçek giriş noktası (veri klasörü çözümü, logger'lardan önce)
├── Servicio.java # Çekirdek yaşam döngüsü (init, run, shutdown)
├── application/ # Tüm arayüz katmanı
│ ├── forms/ # Ana ekranlar (liste + detay formları)
│ ├── panels/ # Formlar içindeki alt paneller ve edit panelleri
│ ├── component/ # Yeniden kullanılabilir UI bileşenleri
│ ├── system/ # FormManager, MainForm — form yaşam döngüsü ve navigasyon
│ └── themes/ # Görsel tema yönetimi
├── i18n/ # Çok dillilik altyapısı (Messages, AppLocale, DateFormats)
├── database/ # DatabaseManager, repository katmanı, mapper'lar, migration SQL'leri
├── model/ # Domain modelleri (Customer, Device, WorkOrder, Part, Supplier ...)
├── service/ # İş mantığı servisleri (ServiceManager ile başlatılır)
├── settings/ # Uygulama ayarları (config.json erişimi)
├── documents/ # PDF belge üreticileri (servis, satış, garanti formları vb.)
├── updater/ # Otomatik güncelleme sistemi (GitHub Releases tabanlı)
├── util/ # Yardımcı sınıflar (DialogHelper, Format, Validator ...)
└── build/ # Derleme zamanı araçları (ManifestGenerator — JAR'a dahil değil)
Veri klasörü (config, veritabanı, yedekler, loglar) işletim sistemine göre otomatik seçilir:
- Windows:
%LOCALAPPDATA%\.servicio - Linux:
~/.local/share/.servicio(veya$XDG_DATA_HOMEtanımlıysa oradan)
En güncel sürüm için Releases sayfasından işletim sisteminize uygun kurulum paketini indirin:
- Windows:
.exeveya.msikurulum dosyası. - Linux:
.deb(Debian/Ubuntu tabanlı) veya.rpm(Fedora/RHEL tabanlı) paketi.
Kurulumdan sonra uygulama, güncellemeleri kendisi kontrol eder ve bildirir — elle JAR indirip değiştirmenize gerek yoktur.
macOS şu an için hedef platform değildir.
- JetBrains JDK 21 (
jbr-21.0.10veya uyumlu bir sürüm) —⚠️ sistem JDK'sı farklı bir sürümdeyse (ör. JDK 25) Lombok annotation işleme hata verebilir, mutlaka JBR 21 kullanılmalı. - Git.
- Maven'e elle ihtiyaç yok —
release.ps1gerekmesi halinde taşınabilir bir Maven sürümünü otomatik indirir.
git clone https://github.com/Cabro57/Servicio.git
cd ServicioJAVA_HOME'u JBR 21'e ayarlayıp derleyin:
$env:JAVA_HOME = "<JBR 21 kurulum yolu>"
mvn clean packageBu komut target/servicio.jar, target/libs/ (bağımlılıklar) ve kökte update-manifest.json
üretir.
Uygulamanın giriş noktası tr.cabro.servicio.Launcher sınıfıdır (pom.xml mainClass) —
Servicio.main() DEĞİL. Veri klasörü çözümü, herhangi bir logger yüklenmeden önce burada yapılır.
.\release.ps1 # derler, GitHub'da release açar/günceller, JAR'ı yükler
.\release.ps1 -BuildOnly # sadece derler, yayınlamaz
.\release.ps1 -NoPush # yayınlar ama update-manifest.json'u push etmez
.\release.ps1 -Yes # onay sormadan devam eder
.\release.ps1 -Notes "..." # release açıklaması ile birliktepackaging\jpackage-windows.ps1 # Windows: app-image + .exe/.msipackaging/jpackage-linux.sh # Linux: app-image + .deb/.rpmUygulama tercihleri (tema, pencere durumu, dil/bölge ayarı, tablo sayfa boyutları vb.)
veri klasöründeki config.json dosyasında; işletme politikaları (barkod öneki, kilit süresi
gibi) ise veritabanındaki app_settings tablosunda tutulur — bu ayrım, yedekten geri yüklemede
işletme verisinin korunmasını, makineye özel tercihlerin ise korunmamasını sağlar.
| Veri | Konum |
|---|---|
| Veritabanı, config, loglar | %LOCALAPPDATA%\.servicio (Windows) / ~/.local/share/.servicio (Linux) |
| Yedekler | Veri klasörü altında backups/ (varsayılan, değiştirilebilir) |
pom.xmliçindeki<version>etiketi güncellenir.- (İsteğe bağlı)
release-notes.mddosyasına o sürümün notları yazılır — bu dosya repoya commit edilmez, yalnızca GitHub release açıklaması kaynağı olarak kullanılır. .\release.ps1çalıştırılır: derler,v<version>etiketiyle GitHub release açar/günceller, JAR'ı yükler,update-manifest.json'umaster'a push eder (mevcut kurulumların yeni sürümü fark etmesi için).- Native installer gerekiyorsa
packaging/altındaki script'ler ayrıca çalıştırılır (release akışının otomatik bir parçası değildir).
- Java 21'e yükseltme ve kütüphane modernizasyonu.
- Çapraz platform desteği (Windows + Linux native paketleme).
- Ayar altyapısının merkezileştirilmesi (
config.json+app_settings). - Cihaz erişim bilgisi (PIN/şifre/desen) — ayrı şifreli tabloda, otomatik temizlenen.
- Servis akışı PDF belgeleri ve WhatsApp şablon entegrasyonu.
- 2.el cihaz alım-satım modülü.
- Parça için çoklu döviz desteği (TCMB kur entegrasyonu).
- Çok dilli arayüz (Türkçe/İngilizce), bölge/para birimi ayarları.
- Uygulama genelinde modern modal/bildirim sistemine geçiş.
Bu bölüm proje geliştikçe güncellenecektir.
- Linux için otomatik yayınlama script'i (
release.sh) — şu an yalnızca paketleme var, GitHub'a yayınlama Windows'a özel. - Daha fazla dil desteği (altyapı hazır, yeni bir
messages_<dil>.propertiesdosyası eklemek yeterli). - Kaldırma (uninstall) sırasında veri klasörünü silme seçeneği sunan companion script.
- Raporlama ekranlarının genişletilmesi.
Bu proje şu an tek geliştirici tarafından, kapalı/özel bir kod tabanı olarak yürütülmektedir. Hata bildirimi veya öneri için lütfen bir Issue açın.
Lisans modeli henüz belirlenmemiştir. Aksi açıkça belirtilmedikçe tüm hakları saklıdır.
Bu proje aşağıdaki açık kaynak kütüphaneler sayesinde mümkün oldu: FlatLaf, raven-modal, MigLayout, JDBI, Flyway, HikariCP, OpenPDF, SQLite JDBC ve daha fazlası.
Servicio — teknik servis atölyeniz için, verinizin sizde kaldığı yönetim sistemi.