BatuBook
Full Stack Software Project with Java, Spring Boot, React.js, PostgreSQL, Postman, JUnit.
BatuBook, kullanicilarin kitaplar ile etkilesime gecebilecegi, kitaplari inceleyebilecegi, alintilar yapabilecegi, yorum birakabilecegi ve diger kullanicilarla etkilesimde bulunabilecegi bir platformdur. Bu platform, modern yazilim gelistirme pratiklerine uygun sekilde Spring Boot ile gelistirilmistir. API tabanli bir yapiya sahip olup, kullanicilar ve kitaplar arasindaki tum etkilesimler RESTful servisler uzerinden saglanmaktadir.
Proje Yapisi
BatuBook, katmanli mimari kullanilarak gelistirilmistir. Proje yapisi asagidaki ana bilesenlerden olusmaktadir:
- Entity: Veritabani ile etkilesim saglayan siniflar olup, her biri veritabanindaki bir tabloyu temsil eder.
- DTO (Data Transfer Object): Istemci ve sunucu arasindaki veri tasimak icin kullanilan veri yapilaridir. Bu katman, entity ile dogrudan etkilesimi engeller ve yalnizca gerekli verilerin tasinmasini saglar.
- Mapper: Entity ve DTO arasinda veri donusumu saglamak icin kullanilan siniflardir.
- Repository: Veritabani islemlerini gerceklestiren katmandir. Spring Data JPA ile veritabani sorgulari ve islemleri gerceklestirilir.
- Service: Is mantiginin yer aldigi katmandir. Repository'den gelen veriler burada islenir ve Controller katmanina iletilir.
- Controller: Kullanicidan gelen HTTP isteklerini yoneten katmandir. RESTful API endpoint'lerini icerir ve Service katmaniyla etkilesimde bulunur.
Kullanilan Teknolojiler
BatuBook projesinde asagidaki teknolojiler kullanilmistir:
- Spring Boot: Uygulamanin temel yapilandirmasi ve is mantigi icin kullanilmistir.
- Spring Data JPA: Veritabani ile etkilesim icin kullanilir. Repository katmanindaki CRUD islemleri Spring Data JPA tarafindan otomatik saglanir.
- HikariCP: Baglanti havuzu yonetimi icin kullanilir ve yuksek performans saglar.
- Spring Security: Uygulama guvenligini saglamak amaciyla kimlik dogrulama ve yetkilendirme islemleri gerceklestirilmistir.
- BCryptPasswordEncoder: Kullanici sifrelerini guvenli bir sekilde saklamak icin sifreleme algoritmasi olarak kullanilmistir.
- JUnit 5: Test yazimi ve birim testler icin kullanilmistir.
- Mockito: Mocking islemleri icin kullanilarak, servis ve repository katmanlari icin bagimsiz testler saglanmistir.
- PostgreSQL: Veritabani olarak kullanilmistir.
Proje Mimarisi
- Controller: HTTP isteklerini alir ve ilgili servis metotlarina yonlendirir. Controller'lar RESTful API endpoint'leri saglar.
- Service: Is mantiginin bulundugu katmandir. Controller'dan gelen veriler burada islenir ve gerektiginde Repository katmanindan veri cekilir.
- Repository: Veritabani ile iletisim kuran katmandir. Veritabani sorgulari burada gerceklestirilir.
- Entity: Veritabanindaki tablolari temsil eder ve her bir entity sinifi, veritabaninda bir tabloya karsilik gelir.
- DTO (Data Transfer Object): Entity siniflarinin tasinabilir versiyonlaridir. Kullaniciya gosterilecek veriler genellikle DTO'lar uzerinden tasinir.
- Mapper: Entity ve DTO arasinda donusum yapilmasini saglayan yardimci siniflardir.
- Exception Handling: Uygulamanin tum seviyelerinde hata yonetimi icin ozel exception siniflari ve hata donusum mekanizmalari kullanilmaktadir.
- Database Configuration: Uygulamanin veritabani baglantisi icin HikariCP kullanilmis ve Spring Profile uzerinden test ve uretim ortamlarina ozgu ayarlar yapilmistir.
- Security: Uygulamanin guvenligi icin Spring Security kullanilmis ve kullanici kimlik dogrulamasi, yetkilendirmesi yapilmistir. CSRF korumasi devre disi birakilmistir.
Proje Ozellikleri
- Kullanici Yonetimi: Kullanici kaydi, girisi ve sifre yonetimi islemleri yapilabilir. Kullanici profili guncellenebilir.
- Kitap Yonetimi: Kitaplar eklenebilir, guncellenebilir, silinebilir ve listelenebilir. Kullanicilar kitaplara yorum ve alintilar ekleyebilir.
- Kitap Etkilesimleri: Kullanicilar kitaplarla etkilesime gecebilir, kitaplari begenebilir, yorum yapabilir ve alintilar olusturabilir.
- Takip Sistemi: Kullanicilar birbirlerini takip edebilir ve takip ettikleri kullanicilarin etkilesimlerini goruntuleyebilir.
- Alinti ve Yorum Sistemi: Kullanicilar, kitaplardan alintilar yapabilir ve kitaplar hakkinda yorumlar birakabilir.
- Yetkilendirme ve Kimlik Dogrulama: Spring Security ile kullanicilarin sadece yetkili olduklari islemleri gerceklestirmesi saglanir.
Projenin Ekran Goruntuleri
Intellij Idea Run
Intellij Idea Test Run
Postman Run
Intellij Idea Test Run
Kurulum ve Calistirma
Gerekli Araclar
- JDK 17
- Maven 3
- DBeaver / PostgreSQL veritabani
- Postman
- IntelliJ IDEA (IDE)
Kurulum Adimlari
1. Projeyi Klonla
2. Bagimliliklari Yukle
3. Veritabani Konfigurasyonu
- application.properties ve application-test.properties dosyasindaki veritabani baglanti bilgilerini duzenlemek icin:
spring.datasource.username=your_db_username
spring.datasource.password=your_db_password
4. Uygulamayi Calistir
Testler
BatuBook, JUnit 5 ve Mockito kullanilarak kapsamli bir sekilde test edilmistir. Proje icerisindeki testleri calistirmak icin:
Testleri Calistir
-
Maven:
mvn test
Iletisim (Contact)
-
LinkedIn: Batuhan Baysal LinkedIn Profilim
-
Github: Batuhan Baysal GitHub Profilim