DryCar Care’i yalnızca güzel görünen bir tanıtım sitesi olarak değil, işletmenin günlük operasyonunu taşıyan gerçek bir ürün olarak geliştirdim. Müşteri hizmet, gün ve uygun saat seçerek randevu alabiliyor; işletme tarafı ise randevuları, hizmetleri, fiyatları ve geçmiş işlemleri tek panelden yönetebiliyor.
Projede ürün tasarımından responsive arayüze, iş kurallarından veritabanına, güvenlikten production yayınına kadar bütün süreci üstlendim. Canlı sistem ASP.NET Core, SQL Server, Python tabanlı yüz işleme ve Cloudflare altyapısıyla çalışıyor.
Bu depo bilinçli olarak bir ürün vaka çalışmasıdır. Production uygulamasının tamamı public değildir. Burada güncel ekranlar, mimari kararlar, doğrulanmış test sonuçları ve yaklaşımı gösterecek kadar küçük kod örnekleri bulunur.
| Müşteri deneyimi | İşletme operasyonu | Platform altyapısı |
|---|---|---|
| Üyelik ve güvenli oturum açma | Yaklaşan/geçmiş randevu yönetimi | ASP.NET Core MVC ve SQL Server |
| Canlı uygunlukla randevu alma | Hizmet ve fiyat yönetimi | Cloudflare Tunnel üzerinden HTTPS |
| Randevu düzenleme ve iptal | Yönetici adına randevu oluşturma | Gmail API bildirimleri |
| Parola + yüz/canlılık doğrulaması | Tamamlanan hizmet ve ödül takibi | Python, OpenCV, dlib ve face_recognition |
| Açık/koyu tema ve mobil arayüz | Mobil uyumlu yönetim tabloları | Hava durumu ve yerel haber entegrasyonları |
Arayüzü otomotiv sektörüne uygun koyu lacivert, grafit, turkuaz ve yeşil tonlarıyla yeniden tasarladım. Aynı görsel dil ana sayfadan üyeliğe, yüz doğrulamadan yönetim paneline kadar devam ediyor.
- Tek tasarım sistemi: ortak renkler, yüzeyler, boşluklar, butonlar ve form alanları
- Masaüstü ve mobil için ayrı düşünülmüş responsive davranış
- Mobilde tablo satırlarını okunabilir kartlara dönüştüren yapı
- Kullanıcının seçimini hatırlayan açık/koyu tema
- Klavye odağı, anlamlı alan etiketleri ve azaltılmış hareket tercihi desteği
- İlk ziyarette deneyimi kapatmayan daha kompakt çerez tercih ekranı
- Müşteri hesap oluştururken iletişim bilgilerini ve yüz tanımını kaydeder.
- Parola doğrulandıktan sonra canlılık/yüz kontrolü ikinci adım olarak çalışır.
- Hizmet ve tarih seçildiğinde yalnızca gerçekten uygun saatler gösterilir.
- Randevu sunucuda tekrar doğrulanır; dolu saat yalnız tarayıcıya güvenilerek kabul edilmez.
- Müşteri yaklaşan ve geçmiş randevularını ayrı ekranlarda takip eder.
- Yönetici kendine ayrılmış, hız sınırlamalı girişten panele ulaşır.
- Randevuları arayabilir; oluşturabilir, düzenleyebilir ve geçmişe taşıyabilir.
- Hizmet açıklamalarını ve fiyatları aynı panelden yönetebilir.
- Tamamlanan uygun işlemler ödül/ücretsiz yıkama döngüsüne yansır.
flowchart LR
U[Tarayıcı] -->|HTTPS| CF[Cloudflare]
CF --> K[ASP.NET Core / Kestrel]
K --> MVC[MVC + Razor]
MVC --> DB[(SQL Server)]
MVC --> PY[Python yüz motoru]
MVC --> GM[Gmail API]
MVC --> EXT[Hava durumu ve haber servisleri]
Uygulamada tarayıcı yalnız etkileşim ve kamera yakalama işlerini üstleniyor. Randevu kapasitesi, oturum, yetki, parola ve kayıt kuralları sunucu tarafında tekrar uygulanıyor. Ayrıntılı anlatım için mimari notlarına bakabilirsin.
Güvenliği sonradan eklenen tek bir özellik olarak değil, girişten veri saklamaya kadar katmanlı bir sistem olarak ele aldım.
- Parolalar BCrypt work factor
12ile tek yönlü hashleniyor. - Oturum çerezi
HttpOnly,Secure,SameSite=Strictve__Host-kurallarıyla sınırlandırılıyor. - Durum değiştiren formlar antiforgery doğrulamasından geçiyor.
- Sunucu, POST isteklerinde beklenmeyen
Origin/Refererkaynaklarını reddediyor. - Giriş, yüz doğrulama ve genel trafik için ayrı hız limitleri bulunuyor.
- CSP, HSTS,
frame-ancestors, MIME sniffing ve Permissions Policy başlıkları uygulanıyor. - Yüz fotoğrafı kalıcı olarak tutulmuyor; biyometrik vektör Data Protection ile korunuyor.
- Geçici yüz kareleri işlem başarılı ya da hatalı olsa da temizleniyor.
- SQL bağlantısı, e-posta tokenları ve production anahtarları kaynak koddan ayrı tutuluyor.
Tehdit modeli ve alınan önlemler: Güvenlik notları
8 Ağustos 2026 tarihinde canlı production sistemi üzerinde yaptığım son regresyon:
| Kontrol | Sonuç |
|---|---|
| 10 public rota × masaüstü/mobil | 20/20 başarılı HTTP yanıtı |
| Yetkili yönetim ekranları | 5/5 başarılı |
| Müşteri parola → yüz doğrulama geçişi | Başarılı |
| Yatay taşma | 0 sayfa |
| Tarayıcı konsol hatası | 0 |
| Kaynak derleme | 0 hata, 0 uyarı |
| Cross-origin sahte POST | 403 Forbidden |
| Yetkisiz müşteri randevu sayfası | Giriş ekranına 302 yönlendirme |
| Güvenlik başlıkları | CSP, HSTS, nosniff, DENY ve Permissions Policy aktif |
Testler için oluşturulan geçici yönetici ve müşteri kayıtları doğrulama sonunda silindi. Ayrıntılar ve kapsam: Test raporu
Public depoda production kodunun tamamı yerine üç küçük, bağımsız örnek bıraktım:
Bu dosyalar yaklaşımı okunabilir biçimde göstermek için sadeleştirilmiştir; canlı sistemin kopyası veya kurulabilir kaynak paketi değildir.
C# · .NET 8 · ASP.NET Core MVC · Razor · Entity Framework Core · SQL Server · Python · OpenCV · dlib · face_recognition · Gmail API · Cloudflare Tunnel · Bootstrap · JavaScript
Canlı ürünü incelemek için: drycarkirsehir.com.tr







