Yazılım Tasarım ve Mimarisi dersi kapsamında, online berber randevu sisteminin backend servisini geliştirdim. Bu projede, kullanıcıların çevrim içi olarak hızlı ve kolay bir şekilde randevu alabilmelerini hedefledim. Servis, SOLID prensiplerine uygun bir şekilde Spring Boot, MySQL ve Spring Security kullanılarak yapılandırılmıştır.
Proje gereklilikleri doğrultusunda, üç veya daha fazla tasarım deseni uygulanmıştır:
- Singleton: Mail bildirimleri için Kafka ile entegre edilen mail bağımlılığını yönetmek amacıyla lazy bir yapıda kullanıldı.
- Factory: DTO dönüşümlerinde generic bir yapı oluşturmak için uygulandı.
- Builder: Model ve DTO sınıflarında hızlı ve esnek nesne oluşturmayı sağlamak için entegre edildi.
- Strategy: JWT ve özel olarak geliştirilmiş token servislerini desteklemek amacıyla projeye dahil edildi.
- POST
/api/v1/appointment/create/{customerId}/{modelId}
- Randevu oluştur - DELETE
/api/v1/appointment/delete/{id}
- Randevu sil - GET
/api/v1/appointment/list/barber/{id}
- Berber randevu listesini getir - GET
/api/v1/appointment/customer/{id}
- Müşteri randevularını getir
- POST
/api/v1/auth/login
- Kullanıcı girişi - POST
/api/v1/auth/logout
- Kullanıcı çıkışı
- POST
/api/v1/customer/save
- Müşteri kaydet - DELETE
/api/v1/customer/delete
- Müşteri sil
- POST
/api/v1/model/add/{id}
- Model ekle - DELETE
/api/v1/model/delete/{id}
- Model sil - PUT
/api/v1/model/update/{id}
- Model güncelle - GET
/api/v1/model/list/{shopId}
- Berber modellerini listele - GET
/api/v1/model/{id}
- Model detaylarını getir
- POST
/api/v1/barber/save
- Berber kaydet - PUT
/api/v1/barber/update/{id}
- Berber güncelle - DELETE
/api/v1/barber/delete/{id}
- Berber sil - GET
/api/v1/barber/list
- Tüm berberleri listele - GET
/api/v1/barber/list/{value}
- Belirli kriterlere göre berberleri listele
Proje mimarisi, geliştirme sürecine başlamadan önce örnek olsun diye tasarlanmıştır.Şu an daha gelişmiş halde.
- Spring Boot: Backend geliştirme için.
- Spring Security: Kimlik doğrulama ve yetkilendirme işlemleri için.
- MySQL: Veritabanı yönetimi için.
- Kafka: Asenkron iletişim ve mail bildirimleri için.
- JWT (JSON Web Token): Kimlik doğrulama için.