Angular-based web application for the Ride Matching platform. Supports Admin, Driver, and Rider roles with separate dashboards, authentication, and workflows.
- Angular 18
- Bootstrap 5 & ng-bootstrap
- Chart.js / ng2-charts for dashboards
- JWT (
@auth0/angular-jwt,jwt-decode) for auth - RxJS, Moment.js, UUID
- Node.js 18+ and npm
- Backend API running at
http://localhost:8082(see rideMatchingApplication README)
npm installnpm startOr:
ng serveOpen http://localhost:4200/ in your browser. The app reloads automatically on file changes.
npm run buildOutput goes to dist/ride-matching-ui/.
src/app/
├── components/ # UI components
│ ├── admin/ # Admin dashboard, user/rides/bookings management
│ ├── driver/ # Driver dashboard, rides, bookings, earnings, profile
│ ├── rider/ # Rider ride details, bookings, payments, feedback, profile
│ ├── landing-page/ # Home / landing
│ ├── login/ # Login (driver, rider, admin)
│ ├── signup-page/ # Signup flow
│ ├── driver-signup/ # Driver registration
│ └── rider-signup/ # Rider registration
├── guards/ # Auth guard (role-based)
├── interceptors/ # HTTP interceptors (e.g. JWT)
├── models/ # TypeScript models
├── services/ # API client, resolvers
└── app-routing.module # Routes and role-based access
- Dashboard – Metrics and overview
- User management – View and manage users
- Rides management – View and manage rides
- Bookings management – View and manage bookings
- Dashboard – Overview of rides and bookings
- Rides – Create, edit, and manage rides
- Bookings – View and manage bookings per ride
- Earnings – Payment history
- Ratings & feedback – Driver feedback
- Profile – Edit profile, vehicles
- Ride details – Browse and view ride details
- My bookings – View and manage bookings
- Payments – Payment history
- Feedback – Rate and review
- Profile – Edit profile
| Path | Role | Description |
|---|---|---|
/ |
— | Landing page |
/login, /signup |
— | Auth |
/driver-signup, /rider-signup |
— | Role-specific signup |
/driver-login, /rider-login, /admin-login |
— | Role-specific login |
/driver/dashboard |
Driver | Driver dashboard |
/driver/rides |
Driver | Manage rides |
/driver/bookings/:rideId |
Driver | Bookings for a ride |
/driver/earnings |
Driver | Earnings |
/driver/profile |
Driver | Driver profile |
/rider/ride-details |
Rider | Browse rides |
/rider/ride-details/:rideId |
Rider | Ride details |
/rider/my-bookings |
Rider | Rider bookings |
/rider/payments |
Rider | Payment history |
/rider/profile |
Rider | Rider profile |
/admin/dashboard |
Admin | Admin dashboard |
/admin/usermanagement |
Admin | User management |
/admin/ridesmanagement |
Admin | Rides management |
/admin/bookingsmanagement |
Admin | Bookings management |
The UI talks to the Ride Matching backend at http://localhost:8082.
Configure the base URL in src/app/services/auth.service.ts if your API runs elsewhere.
ng testRuns unit tests with Karma.
=======================================================================================================================================================
Spring Boot REST API for the Ride Matching platform. Handles Admin, Driver, and Rider flows: authentication, rides, bookings, payments, vehicles, and user management.
- Java 21
- Spring Boot 3.4
- Spring Security + JWT (JJWT 0.11.5)
- Spring Data MongoDB
- Spring Mail
- Lombok
- Maven
- JDK 21
- Maven 3.6+
- MongoDB (local or Atlas)
- SMTP config (e.g. Gmail) for emails
Edit src/main/resources/application.properties:
spring.data.mongodb.uri=mongodb+srv://<username>:<password>@cluster0.xxxxx.mongodb.net/database?retryWrites=true&w=majority
spring.data.mongodb.database=rideMatchingApplicationReplace <username>, <password>, and the cluster URL for your MongoDB instance.
server.port=8082jwt.secret=your_secret_key
jwt.expiration=3600000Use a strong, unique jwt.secret in production.
file.upload-dir=uploads
spring.web.resources.static-locations=file:uploads/Profile pictures and similar files are stored under uploads/.
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=trueAdjust for your SMTP provider. For Gmail, use an App Password.
mvn clean installmvn spring-boot:runOr run the packaged JAR:
java -jar target/rideMatchingApplication-0.0.1-SNAPSHOT.jarAPI base: http://localhost:8082
src/main/java/com/adbProject/rideMatchingApplication/
├── RideMatchingApplication.java # Entry point
├── config/ # CORS, Security
├── controller/ # REST endpoints
│ ├── AdminController
│ ├── AuthController
│ ├── BookingController
│ ├── DriverController
│ ├── PaymentController
│ ├── RideController
│ ├── RiderController
│ └── VehicleController
├── dto/ # Request/response DTOs
├── exception/ # Custom exceptions
├── filter/ # JWT filter
├── model/ # Domain entities
├── repository/ # MongoDB repositories
└── service/ # Business logic
| Area | Endpoints | Description |
|---|---|---|
| Auth | /auth/signin, /auth/signup, /auth/users, etc. |
Login, signup, user CRUD, profile picture upload |
| Admin | /admin/dashboard-metrics |
Dashboard metrics |
| Drivers | /drivers/* |
Driver signup, profile, by email/ID |
| Riders | /riders/* |
Rider signup, profile, by email |
| Rides | /rides |
CRUD, by driver, by ID, by IDs |
| Bookings | /bookings |
Create, update, cancel, by rider/ride |
| Payments | /payments |
Create, update, complete, by driver/rider/ride |
| Vehicles | /vehicles |
CRUD, by driver |
Protected routes use JWT in the Authorization header. The UI expects the backend at http://localhost:8082.
mvn testCORS is configured for the Angular UI (e.g. http://localhost:4200). See CorsConfig and SecurityConfig to adjust origins.