Light Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

BatuhanBaysal/bookverse-rest-api

Repository files navigation

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

git clone https://github.com/BatuhanBaysal/BatuBook.git

2. Bagimliliklari Yukle

mvn clean install

3. Veritabani Konfigurasyonu

  • application.properties ve application-test.properties dosyasindaki veritabani baglanti bilgilerini duzenlemek icin:
spring.datasource.url=jdbc:postgresql://localhost:5432/batubook
spring.datasource.username=your_db_username
spring.datasource.password=your_db_password

4. Uygulamayi Calistir

mvn spring-boot:run

Testler

BatuBook, JUnit 5 ve Mockito kullanilarak kapsamli bir sekilde test edilmistir. Proje icerisindeki testleri calistirmak icin:

Testleri Calistir

  • Maven:

    mvn test

Iletisim (Contact)

About

High-performance RESTful API for a book-centric social platform. Built with Spring Boot, PostgreSQL, and secured with JWT.

Topics

Resources

Readme

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages