Nova Ride is a ride-booking app built using Spring Boot and designed with a robust microservices architecture. This project showcases the use of several advanced technologies and best practices that have shaped the backend development of the application.
- Managed entities such as OTP, Passenger, Driver, and more.
- Used Flyway migrations for managing database versioning.
- Followed DTOs and structured APIs for efficient data transfer and maintainable code.
- Fetched and cached nearby drivers using Redis geospatial data to ensure real-time performance.
- After receiving the passenger’s location, it returns available drivers from the cache, reducing the database load.
- Source Code: NovaRideLocationService.
- Created new bookings and assigned drivers.
- Utilized Retrofit for asynchronous communication to fetch nearby drivers.
- Integrated WebSockets using the STOMP protocol for real-time updates.
- Implemented Kafka to handle high-volume asynchronous requests for smoother performance.
- Source Code:NovaRideBookingService
- Used JWT for user authentication and bcrypt for password encryption.
- Developed custom filters to validate users and secure communication across services.
- Source Code:NovaRideAuthService
- Handled reviews between passengers and drivers, ensuring that reviews are only created for completed bookings.
- Source Code:NovaRideReviewService
- Implemented Netflix Eureka for seamless service discovery, enabling dynamic communication between microservices.
- Source Code:NovaRideDiscoveryService
- Real-time messaging between services using WebSockets and STOMP protocol.
- Used Kafka to manage asynchronous communication during high-load times for better scalability.
- Source Code:NovaRideSocketService
- Followed SOLID principles to ensure a clean and maintainable codebase.
- Implemented MVC architecture to separate concerns and improve the structure.
- Used Builder and Adapter patterns for efficient service integration and object creation.
- Spring Boot for building microservices
- JWT for authentication and bcrypt for security
- Redis for caching and geospatial data
- Kafka for asynchronous communication and high-volume processing
- Retrofit for async API calls
- Flyway migrations for managing database versions
- Spring Data JPA for database interaction
- WebSockets (STOMP) for real-time communication
- Netflix Eureka for service discovery