Your Trusted Ride Sharing Platform - Secure. Fast. Reliable.
CheckPoint is a modern, full-stack ride-sharing platform that connects drivers and passengers seamlessly. Built with Spring Boot and React, it offers real-time ride matching, live location tracking, in-app messaging, and secure payment processing.
- π Dynamic ride-sharing with real-time matching
- π Live GPS tracking and route optimization
- π¬ Real-time chat between drivers and passengers
- π³ Secure payment integration
- π JWT-based authentication with OAuth2 support
- πΊοΈ Leaflet Maps integration for accurate navigation
- π± Responsive, modern UI with dark mode
- π Search and book rides instantly
- π Real-time ride tracking
- π¬ Chat with drivers
- β Rate and review drivers
- π° View ride history and expenses
- π Offer rides and manage availability
- π Earnings dashboard and analytics
- π¦ Live navigation and route optimization
- π₯ Manage passenger requests
- π Performance metrics
- π Secure authentication (Email/Password + Google OAuth2)
- πΊοΈ Leaflet Maps integration for live tracking
- π¬ Real-time WebSocket messaging
- π Push notifications for ride updates
- π³ Payment processing (Razorpay ready)
- π± Progressive Web App (PWA) ready
- π Dark mode UI
- βοΈ React 18 with TypeScript
- π¨ Tailwind CSS for styling
- π§© shadcn/ui component library
- πΊοΈ Leaflet for maps and geolocation
- π WebSocket for real-time features
- π¦ Vite for blazing-fast builds
- π Framer Motion for animations
- β Spring Boot 3.x
- π Spring Security with JWT
- π Spring Data JPA with Hibernate
- π WebSocket (STOMP protocol)
- π§ JavaMailSender for emails
- ποΈ MySQL (AWS RDS)
- βοΈ AWS RDS MySQL for database
- π AWS EC2 (deployment ready)
- πΊοΈ Leaflet Maps
- π OAuth2 (Google Sign-In)
graph TB
subgraph "Frontend Layer"
A[React App] --> B[Auth Pages]
A --> C[Dashboard]
A --> D[Find Ride]
A --> E[Offer Ride]
A --> F[Chat System]
A --> G[Live Tracking]
end
subgraph "API Gateway"
H[Spring Boot Backend]
H --> I[REST Controllers]
H --> J[WebSocket Handlers]
H --> K[Security Layer]
end
subgraph "Business Logic"
L[User Service]
M[Ride Service]
N[Matching Service]
O[Payment Service]
P[Notification Service]
Q[Chat Service]
end
subgraph "External Services"
R[Leaflet Maps]
S[OAuth2 Providers]
T[Email Service]
U[Payment Gateway]
end
subgraph "Data Layer"
V[(AWS RDS MySQL)]
end
A --> H
I --> L
I --> M
I --> N
I --> O
J --> Q
K --> S
L --> V
M --> V
N --> V
O --> V
Q --> V
M --> R
N --> R
G --> R
P --> T
O --> U
style A fill:#61dafb,color:#000
style H fill:#6db33f,color:#fff
style V fill:#00758f,color:#fff
style R fill:#199900,color:#fff
erDiagram
USER ||--o{ RIDE : offers
USER ||--o{ BOOKING : books
USER ||--o{ MESSAGE : sends
USER ||--o{ REVIEW : writes
USER ||--|| VEHICLE_DETAILS : has
RIDE ||--o{ BOOKING : contains
RIDE ||--o{ REVIEW : receives
BOOKING ||--o{ PAYMENT : has
USER {
bigint id PK
string email UK
string password
string firstName
string lastName
string phoneNumber
string profileImageUrl
datetime createdAt
datetime updatedAt
enum role
}
VEHICLE_DETAILS {
bigint id PK
bigint userId FK
string vehicleNumber UK
string vehicleModel
string vehicleColor
int seatingCapacity
string vehicleType
}
RIDE {
bigint id PK
bigint driverId FK
string fromLocation
string toLocation
double fromLatitude
double fromLongitude
double toLatitude
double toLongitude
datetime departureTime
int availableSeats
decimal pricePerSeat
enum status
datetime createdAt
}
BOOKING {
bigint id PK
bigint rideId FK
bigint passengerId FK
int seatsBooked
decimal totalPrice
enum status
datetime bookedAt
}
MESSAGE {
bigint id PK
bigint senderId FK
bigint receiverId FK
bigint rideId FK
string content
datetime sentAt
boolean isRead
}
REVIEW {
bigint id PK
bigint rideId FK
bigint reviewerId FK
bigint reviewedUserId FK
int rating
string comment
datetime createdAt
}
PAYMENT {
bigint id PK
bigint bookingId FK
decimal amount
string transactionId
enum paymentMethod
enum status
datetime paidAt
}
style USER fill:#4CAF50,color:#fff
style RIDE fill:#2196F3,color:#fff
style BOOKING fill:#FF9800,color:#000
style MESSAGE fill:#9C27B0,color:#fff
style PAYMENT fill:#F44336,color:#fff
- β Java 17 or higher
- π¦ Node.js 18+ and npm
- ποΈ MySQL 8.0+
- π Google OAuth2 Credentials
cd backend
# Configure application.properties
cp src/main/resources/application.properties.example src/main/resources/application.properties
# Install dependencies and run
./mvnw clean install
./mvnw spring-boot:runcd frontend
# Install dependencies
npm install
# Configure environment variables
cp .env.example .env
# Start development server
npm run devCreate application.properties:
# Database (AWS RDS MySQL)
spring.datasource.url=jdbc:mysql://your-rds-endpoint:3306/checkpoint
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# JPA
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
# JWT
jwt.secret=your_jwt_secret_key_here
jwt.expiration=86400000
# Google OAuth2
spring.security.oauth2.client.registration.google.client-id=your_client_id
spring.security.oauth2.client.registration.google.client-secret=your_client_secret
spring.security.oauth2.client.registration.google.redirect-uri={baseUrl}/login/oauth2/code/google
spring.security.oauth2.client.registration.google.scope=profile,email
# Email
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=your_email@gmail.com
spring.mail.password=your_app_password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=trueCreate .env:
VITE_API_URL=http://localhost:8080/api
VITE_WS_URL=ws://localhost:8080/ws-
Start Backend:
cd backend ./mvnw spring-boot:run -
Start Frontend:
cd frontend npm run dev -
Access Application:
- Frontend: http://localhost:5173
- Backend API: http://localhost:8080
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register |
Register new user |
| POST | /api/auth/login |
Login user |
| GET | /api/auth/me |
Get current user |
| POST | /api/auth/logout |
Logout user |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/rides |
Create new ride |
| GET | /api/rides/search |
Search available rides |
| GET | /api/rides/my-rides |
Get user's rides |
| PUT | /api/rides/{id} |
Update ride |
| DELETE | /api/rides/{id} |
Cancel ride |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/bookings |
Book a ride |
| GET | /api/bookings/my-bookings |
Get user's bookings |
| PUT | /api/bookings/{id}/cancel |
Cancel booking |
| Endpoint | Description |
|---|---|
/ws |
WebSocket connection |
/topic/messages/{rideId} |
Subscribe to ride chat |
/app/chat.sendMessage |
Send message |
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Prathamesh Jadhav
- GitHub: @Prathamesh-2005
- Email: prathameshjadhav0198@gmail.com
Made with β€οΈ by Prathamesh Jadhav