Skip to content

Prathamesh-2005/CheckPoint_webapp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

27 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš— CheckPoint - Dynamic Ride Sharing Platform

Your Trusted Ride Sharing Platform - Secure. Fast. Reliable.


🎯 About

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.

Key Highlights

  • πŸš— 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

✨ Features

For Passengers

  • πŸ” Search and book rides instantly
  • πŸ“ Real-time ride tracking
  • πŸ’¬ Chat with drivers
  • ⭐ Rate and review drivers
  • πŸ’° View ride history and expenses

For Drivers

  • πŸš— Offer rides and manage availability
  • πŸ“Š Earnings dashboard and analytics
  • 🚦 Live navigation and route optimization
  • πŸ‘₯ Manage passenger requests
  • πŸ“ˆ Performance metrics

Core Features

  • πŸ” 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

πŸ› οΈ Tech Stack

Frontend

  • βš›οΈ 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

Backend

  • β˜• Spring Boot 3.x
  • πŸ” Spring Security with JWT
  • 🌐 Spring Data JPA with Hibernate
  • πŸ”Œ WebSocket (STOMP protocol)
  • πŸ“§ JavaMailSender for emails
  • πŸ—„οΈ MySQL (AWS RDS)

Infrastructure

  • ☁️ AWS RDS MySQL for database
  • πŸš€ AWS EC2 (deployment ready)
  • πŸ—ΊοΈ Leaflet Maps
  • πŸ”‘ OAuth2 (Google Sign-In)

πŸ—οΈ System Architecture

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
Loading

πŸ—„οΈ Database Architecture

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
Loading

πŸ“¦ Installation

Prerequisites

  • β˜• Java 17 or higher
  • πŸ“¦ Node.js 18+ and npm
  • πŸ—„οΈ MySQL 8.0+
  • πŸ” Google OAuth2 Credentials

Backend Setup

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:run

Frontend Setup

cd frontend

# Install dependencies
npm install

# Configure environment variables
cp .env.example .env

# Start development server
npm run dev

βš™οΈ Configuration

Backend Configuration

Create 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=true

Frontend Configuration

Create .env:

VITE_API_URL=http://localhost:8080/api
VITE_WS_URL=ws://localhost:8080/ws

πŸš€ Usage

Starting the Application

  1. Start Backend:

    cd backend
    ./mvnw spring-boot:run
  2. Start Frontend:

    cd frontend
    npm run dev
  3. Access Application:


πŸ“š API Documentation

Authentication Endpoints

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

Ride Endpoints

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

Booking Endpoints

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

WebSocket Endpoints

Endpoint Description
/ws WebSocket connection
/topic/messages/{rideId} Subscribe to ride chat
/app/chat.sendMessage Send message

🀝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ‘¨β€πŸ’» Author

Prathamesh Jadhav


πŸ™ Acknowledgments


Made with ❀️ by Prathamesh Jadhav

About

πŸš— Full-stack ride-sharing platform with Spring Boot, React & TypeScript. Real-time matching, live GPS tracking, WebSocket chat, OAuth2 auth, and dark UI. MySQL (AWS RDS) + shadcn/ui + Tailwind CSS.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages