Proje microservice mimarisi olarak tasarlanmıştır.
-
api-gateway --> auth-servisten aldığı token ile servislere erişimi belirler ve yönlendirir.
-
auth-service --> Kullanıcı register ve login işlemleri.
-
user-service --> Kullanıcı bilgilerini görme, role atama ve kullanıcılar ile ilgili işlemler içerir.
-
journey-service --> Admin sefer ekleyebilir, iptal edebilir ve satış raporu oluşturabilir.
-
ticket-search-service --> Kullanıcı şehre, tarihe ve taşıt türüne göre arama yapabilir. Bilet kodu ile sefer bilgilerine bakabilir.
-
basket-service --> Kullanıcı sepete bilet ekleyebilir, silebilir ve sepetini görüntüleyebilir. Sepete ekledikleri biletleri kredi kartı veya banka transferi ile ödeme yapabilir.
-
payment-service --> Ödeme işlemlerini basket-service ile senkron gerçekleştirir.
-
journey-index-service --> journey-serviste kaydedilen sefer bilgilerini elasticsearch veritabanına kaydeder.
-
exception-log-service --> Bütün serviste oluşan exception ve logları mongodb'ye kaydeder.
-
notification-service --> Sms gönderimi, mail gönderimi ve push notification işlerini içerir.
- Java
- Spring Security
- Spring WebFlux
- Spring Boot
- Open Feign
- Eureka Server
- Redis
- ElasticSearch
- RabbitMQ
- Apache Kafka
- PostgreSQL
- MongoDB
- JUnit5
-
Projenin ihtiyaç duyduğu teknolojiler ve veritabanları için docker-compose dosyası çalıştırılır. --> "docker-compose up -d"
-
Projedeki servisler ayağa kaldırılır. --> "localhost:9000/"
-
Projenin endpointlerine API Kullanımı bölümünden detaylarına ulaşabilirsiniz.
POST http://localhost:9000/api/v1/auth/register
POST http://localhost:9000/api/v1/auth/login
POST http://localhost:9000/api/v1/auth/changeRole
POST http://localhost:9000/api/v1/journeys/
POST http://localhost:9000/api/v1/journeys/cancelled
GET http://localhost:9000/api/v1/journeys/getSalesReport
GET http://localhost:9000/api/v1/searches/searchByCity
GET http://localhost:9000/api/v1/searches/searchByCityAndVehicleType
GET http://localhost:9000/api/v1/searches/searchByCityAndDepartureDate
GET http://localhost:9000/api/v1/searches/{ticketCode}
POST http://localhost:9000/api/v1/baskets
POST http://localhost:9000/api/v1/baskets/clear
GET http://localhost:9000/api/v1/baskets
POST http://localhost:9000/api/v1/baskets/paymentToBankAccountNumber
POST http://localhost:9000/api/v1/baskets/paymentToCreditCard