A backend ride booking system built using Java, Spring Boot, Spring Security, JWT, Spring Data JPA, MySQL, Docker, and Apache Kafka.
BikeRide was developed as a personal project to gain hands-on experience with enterprise Java backend development. The project covers everything from Core Java concepts to modern backend technologies, following RESTful API design principles and industry best practices.
https://github.com/Luffy992/BikeRide
- User Registration
- User Login
- JWT Authentication
- Secure Password Encryption (BCrypt)
- Role-Based Authorization
- Profile Management
- Book a Ride
- Cancel Ride
- View Ride History
- Ride Status Management
- Bike Availability Check
- Add Bike
- Update Bike
- Delete Bike
- View Available Bikes
- Bike Availability Management
- Manage Users
- Manage Bikes
- Manage Bookings
- Monitor Ride Information
- Spring Security
- JWT Authentication
- Role-Based Access Control
- Password Encryption
- Protected REST APIs
- RESTful API Design
- DTO Pattern
- Validation
- Global Exception Handling
- Layered Architecture
- Clean Code Practices
- Docker Support
- Docker Compose
- Kafka Integration
- Maven Build System
Client
β
βΌ
REST API Requests
β
βΌ
Spring Security Filter
β
βΌ
Controllers
β
βΌ
Services
β
βΌ
Spring Data JPA
β
βΌ
MySQL Database
Kafka (Event Messaging)
BikeRide
β
βββ src
β βββ main
β β βββ java
β β β βββ config
β β β βββ controller
β β β βββ dto
β β β βββ entity
β β β βββ exception
β β β βββ repository
β β β βββ security
β β β βββ service
β β β βββ util
β β β
β β βββ resources
β β βββ application.properties
β β βββ application.yml
β β
β βββ test
β
βββ Dockerfile
βββ docker-compose.yml
βββ docker-compose-kafka.yml
βββ pom.xml
βββ README.md
- Java 21
- Spring Boot
- Spring MVC
- Spring Security
- Spring Data JPA
- Hibernate
- MySQL
- JWT
- BCrypt Password Encoder
- Apache Kafka
- Docker
- Docker Compose
- Maven
- Git
- GitHub
BikeRide uses JWT (JSON Web Token) for secure authentication.
Workflow:
- User logs in.
- Server validates credentials.
- JWT Token is generated.
- Client stores the token.
- Token is sent with every protected request.
- Spring Security validates the token before granting access.
- Register User
- Login User
- View Profile
- Update Profile
- Add Bike
- Update Bike
- Delete Bike
- Get Available Bikes
- Book Ride
- Cancel Ride
- Ride History
- Ride Details
- Manage Users
- Manage Bikes
- Manage Bookings
The application uses MySQL as the primary database.
Main Entities:
- User
- Role
- Bike
- Booking
Relationships are managed using Spring Data JPA and Hibernate.
Docker is used to containerize the application.
Run the application using Docker:
docker-compose up --buildRun Kafka services:
docker-compose -f docker-compose-kafka.yml upgit clone https://github.com/Luffy992/BikeRide.gitcd BikeRideUpdate:
application.propertieswith your MySQL credentials.
mvn clean installmvn spring-boot:runConfigure:
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
jwt.secret=
spring.kafka.bootstrap-servers=Planned enhancements:
- Payment Gateway Integration
- Email Notifications
- SMS Notifications
- Live Ride Tracking
- Redis Caching
- API Gateway
- Microservices Architecture
- Kubernetes Deployment
- CI/CD Pipeline
- Monitoring with Prometheus & Grafana
This project helped strengthen practical knowledge of:
- Core Java
- Object-Oriented Programming
- Spring Boot
- Spring MVC
- Spring Security
- JWT Authentication
- Spring Data JPA
- Hibernate
- REST API Design
- Validation
- Exception Handling
- MySQL
- Docker
- Kafka
- Git & GitHub
The project can be extended into a production-ready ride booking platform by adding:
- Payment Gateway
- Driver Management
- Real-Time Tracking
- Notifications
- Ratings & Reviews
- Ride Scheduling
- Surge Pricing
- Analytics Dashboard
- Mobile Application
- Cloud Deployment
M Luffy
GitHub: https://github.com/Luffy992
LinkedIn: www.linkedin.com/in/somesh-ramola
This project is developed for learning purposes and personal portfolio.
Feel free to fork, explore, and enhance it.