Tüm projeler
032026Ürün tasarımı, uçtan uca geliştirme ve kurulum

Site Ledger

Bir hastane şantiyesi için puantaj ve bordro sistemi

PHP 8MySQLJavaScriptQR ScanningTOTP 2FAPayroll Engine

Müşteri sistemi · Gizlilik sözleşmeli

Proje özeti

Bir üniversite hastanesi şantiyesi için özel bir puantaj ve haftalık bordro sistemi. QR kartlar kapıda okutuluyor, fazla mesai ve geç kalma ayrı onaylardan geçiyor ve her hafta imzalı bir dökümle kapanıyor. Gerçek veriler müşteride kalıyor; bu yüzden bu vaka çalışması örnek verilerle çalışıyor.

Bir hayır vakfı bir üniversite hastanesi inşa ediyor ve şantiyenin haftalık bordrosu elle doldurulan tek bir Excel dosyasında duruyordu: 5.000'i aşkın vardiya satırı, birbirine bağlı dört sayfa ve önceki kaydın üzerine yazılan düzeltmeler. Çalışıyordu, ama her maaş günü birinin dikkatle yazmasına bağlıydı ve itiraz edilen bir hafta hiçbir şeye geri izlenemiyordu.

O dosyadaki kurallar aylarca gerçek bordroda sınanmıştı, bu yüzden aynen taşındı: günlük 10 saatlik normal çalışma sınırı, yalnızca bir kişi onayladığında 1,5 katla ödenen fazla mesai ve öğleden sonraki bir cumartesi girişini sonraki bordro haftasına taşıyan, pazara uzanan bir vardiyanın ikiye bölünmesini önleyen cumartesi kuralı. Geç kalma da otomatik kesinti olmaktan çıkıp ayrı bir onaya dönüştü; böylece bir ustabaşı aynı vardiyanın fazla mesaisini onaylarken geç kalmasını hâlâ inceleyebiliyor.

İşçiler lamine QR kartlarını, USB okuyuculu bir kapı tabletinde okutuyor. Saati cihaz değil sunucu basıyor ve kayıtlar yalnızca ekleniyor: bir düzeltme, eski satırın üzerine yazmak yerine düzelttiği satırı gösteriyor. Her hafta, belgenin özetini (hash) saklayan imzalı bir dökümle kapanıyor; alttaki veri bir gün değişirse sistem bunu işaretliyor ve bordro ekibi zaten onayladığı düzenin aynısını dışa aktarıyor.

Müşterinin barındırma paketi bunu çalıştırdığı için sistem, paylaşımlı sunucuda framework'süz ve derleme adımı olmadan düz PHP 8 ve MySQL ile çalışıyor. Bu bazı kütüphaneleri devre dışı bıraktı; QR kodlayıcı ve .xlsx yazıcı sıfırdan yazıldı. Erişim; zorunlu TOTP iki adımlı giriş, giriş denemesi sınırlama, CSRF belirteçleri ve yalnızca tek kullanımlık bir bağlantıyla eşlenmiş tablette çalışan bir kiosk ile korunuyor.

Yayına alınanlar

  • Eşlenmiş kapı tabletinde USB okuyuculu QR kart kioskü
  • Dosyanın kurallarını koruyan bordro motoru: 10 saat sınırı, onaylı mesai 1,5 kat, cumartesi kuralı
  • Fazla mesai ve geç kalma, role göre ayrı ayrı onaylanıyor
  • Yalnızca eklenen kayıtlar: düzeltmeler eskiyi gösteriyor, üzerine yazmıyor
  • Sonradan yapılan değişiklikleri işaretleyen hash'li, imzalı haftalık dökümler
  • Paylaşımlı sunucu için bağımlılıksız QR kodlayıcı ve .xlsx yazıcı
  • Excel'den taşınan 5.000'i aşkın geçmiş vardiya kaydı
Rol
Ürün tasarımı, uçtan uca geliştirme ve kurulum
Yıl
2026
Sorun

Elle doldurulan bir dosyadan kapıda tek bir okutmaya

Şantiyenin tüm bordrosu tek bir Excel dosyasında duruyordu. Yeni sistem, zaten işleyen her kuralı korudu ve geri kalan her şeyi değiştirdi.

Önce
  • 5.000+elle yazılmış vardiya satırı
  • 4bordroyu taşıyan bağlı sayfa
  • 0bir satır düzeltildiğinde kalan iz
Sonra
  • 1 okutmabir işçiyi kapıda içeri almak için
  • 2ayrı onay: fazla mesai ve geç kalma
  • 1 tıkimzalı döküm ya da .xlsx dışa aktarımı için
Nasıl çalışıyor

Karttan imzalı döküme

  1. 01QR kartLamine, her işçiye bir tane
  2. 02Kapı kiosküUSB okuyuculu eşlenmiş tablet
  3. 03Sunucu saatiCihazın saatine asla güvenilmez
  4. 04Yalnızca eklemeDüzeltmeler eskiyi gösterir, üzerine yazmaz
  5. 05OnaylarFazla mesai ve geç kalma, role göre
  6. 06İmzalı dökümHash'lenir, sonra .xlsx'e aktarılır
Deneyin

Kiosk ve bordro motoru, örnek verilerle

Bir kart okutun, saatleri değiştirin, fazla mesaiyi ve geç kalmayı onaylayın ya da bekletin. Kurallar gerçek; işçiler ve ücretler uydurma.

Kapı kioskü Eşlenmiş cihaz

Bir kart seçin, sonra okutun.

Üniversite Hastanesi ProjesiAna kapı
07:12:00
Kartınızı okutun
Kartı okuyucuya tutun
Kartı buraya okutun
Amir girişi (kayıp kart)Yönetim paneli

Saati sunucu basıyor. Tabletin saati bordroya hiç dokunmuyor.

Bordro motoruÖrnek ücret $3,00/sa
Gün
Şantiyedeki süre12,30 sa
Normal (10 sa sınırlı)10,00 sa
Fazla mesai (1,5 kat)Bekliyor
Geç kalma kesintisiBekliyor
Günlük ücret$30,00
Bu haftanın bordrosuna sayılıyor. Kuralı görmek için 12:00'den sonra bir cumartesi girişi deneyin.

İşçiler ve ücretler örnek. Kurallar gerçek motorla aynı.

Sistemin içi

Yöneticilerin gördüğü

Gerçek ekranlar Türkçeye çevrildi ve örnek satırlarla dolduruldu. Canlı sistem, şantiye ofisi için Arapça çalışıyor. İsimler ve tutarlar müşteride kalıyor.

Geç kalma kesintilerinin onayı
İmzalı bir haftalık döküm
Kaputun altı

Paylaşımlı sunucu için yapıldı, ciddiyetle korundu

01

Sıfırdan QR kodlayıcı

Kartlar bağımlılıksız bir QR kodlayıcıdan çıkıyor; tek bir kart basılmadan önce sunucuda geçmesi gereken bir öz test var.

02

Gerçek bir .xlsx yazıcı

Sunucuda zip eklentisi yoktu, bu yüzden dışa aktarım geçerli Excel dosyalarını elle oluşturuyor. Bordro ekibi zaten onayladığı düzeni alıyor.

03

Değişikliği belli eden dökümler

Her imzalı haftalık döküm, belgenin hash'ini saklıyor. Alttaki veri sonradan kayarsa sistem bunu işaretliyor.

04

Sıkı erişim

Zorunlu TOTP iki adımlı giriş, giriş denemesi sınırlama, CSRF belirteçleri ve yalnızca tek kullanımlık bağlantıyla eşlenmiş tablette çalışan bir kiosk.

05

Web kökünün dışında kod

Uygulama kodu ve ayarlar public_html'in içinde değil yanında duruyor; yanlışlıkla yüklenirlerse bu yolları 404'e düşüren ikinci bir kural var.

06

Değişmeye devam etmek için

Şantiyenin kuralları geliştikçe 40'tan fazla veritabanı geçişi yayına alındı: vardiya şablonları, KKD takibi, kaçırılan vardiya talepleri, ödemeler ve dahası.

Sonraki proje

Obay Morad

Kişisel marka ve portfolyo