A scalable Car Care Service platform backend built with Spring Boot, featuring role-based access, booking workflows, and real-time notifications.
- Features
- Tech Stack
- Architecture
- Project Structure
- API Endpoints
- Setup & Installation
- Postman Collection
- Contributors
- Role-Based Access Control: Admin, Provider, Customer
- Authentication & Authorization: JWT
- Service Management: Add, update, delete, and search services
- Booking System: Create, track, and cancel service requests
- Notifications: Broadcast and targeted alerts
- Reviews & Ratings: Manage customer feedback
- Admin Dashboard APIs: User management, audit logs, settings
- Backend: Java 21, Spring Boot 3.x
- Database: MySQL
- Authentication: Spring Security, JWT
- Tools: Postman, IntelliJ IDEA, Jira
- API Testing: Postman Collection included
Controller → Service → Repository → MySQL
Authentication → Spring Security + JWT
src/main/java/org/os/carcareservice/
├── config/ # Configuration classes
├── controller/ # REST Controllers
├── dto/ # Data Transfer Objects
├── entity/ # JPA Entities
├── exception/ # Custom exceptions
├── mappers/ # Object mappers
├── repository/ # Data access layer
├── service/ # Business logic
└── specification/ # JPA Specifications
POST /api/auth/register/admin- Register a new adminPOST /api/auth/register/customer- Register a new customerPOST /api/auth/register/provider- Register a new service providerPOST /api/auth/login- User loginPOST /api/auth/refresh-token- Refresh access token
GET /api/users/profile- Get current user profilePATCH /api/users/profile- Update current user profilePATCH /api/users/password- Change passwordGET /api/users- Get all users (Admin only)GET /api/users/{id}- Get user by IDPATCH /api/users/{id}/role- Update user role (Admin only)DELETE /api/users/{id}- Delete user (Admin only)
GET /api/services- Get all servicesGET /api/services/{id}- Get service by IDPOST /api/services- Create new service (Provider only)PUT /api/services/{id}- Update service (Provider only)DELETE /api/services/{id}- Delete service (Provider only)
POST /api/requests- Create new service request (Customer only)GET /api/requests/{id}- Get request by IDGET /api/requests/customer- Get current customer's requestsGET /api/requests/provider- Get requests for current providerPATCH /api/requests/{id}/status- Update request statusGET /api/requests/{id}/history- Get request status history
GET /api/customer-cars- Get all customer carsGET /api/customer-cars/{id}- Get customer car by IDPOST /api/customer-cars- Add new car (Customer only)PUT /api/customer-cars/{id}- Update car details (Owner only)DELETE /api/customer-cars/{id}- Delete car (Owner only)
GET /api/providers- Get all service providersGET /api/providers/{id}- Get provider by IDGET /api/providers/{id}/services- Get services by providerGET /api/providers/{id}/reviews- Get provider reviews
POST /api/reviews- Add new review (Customer only)GET /api/reviews/provider/{providerId}- Get reviews for a providerGET /api/reviews/customer- Get current user's reviewsPUT /api/reviews/{id}- Update review (Owner only)DELETE /api/reviews/{id}- Delete review (Owner/Admin only)
GET /api/notifications- Get current user's notificationsGET /api/notifications/unread-count- Get unread notifications countPATCH /api/notifications/{id}/read- Mark notification as readPATCH /api/notifications/read-all- Mark all notifications as read
-
Clone the repository:
git clone https://github.com/Nada-ibrahim12/CarCareService cd CarCareService -
Configure the environment:
- Create a
.envfile in the project root directory - Copy the contents from
.env.exampleto.env - Update the following variables in the
.envfile:DB_URL=your_database_url DB_USERNAME=your_mysql_username DB_PASSWORD=your_mysql_password API_PORT=your_api_port JWT_SECRET=your_jwt_secret_key_here JWT_EXPIRATION=your_jwt_expiration - Replace
your_database_url,your_mysql_username,your_mysql_password,your_api_port,your_jwt_secret_key_hereandyour_jwt_expirationwith your actual values - Make sure MySQL is running and the specified database exists
- Create a
-
Build the application:
mvn clean install
-
Run the application:
mvn spring-boot:run
The application will start on http://localhost:8080
- Nada Ibrahim – Team Lead & Backend Developer | GitHub Profile | LinkedIn Profile
- Ephraim Youssef – Backend Developer | GitHub Profile | LinkedIn Profile
- Abdelrahman Kadry – Backend Developer | GitHub Profile | LinkedIn Profile
- Roqaia Hassan – Backend Developer | GitHub Profile
- Malak Madboly – Backend Developer | GitHub Profile
- Salma Abd-Elsamie – Backend Developer | GitHub Profile
- Mohamed Mahmoud – Backend Developer | GitHub Profile