Automobile Service Time Logging & Appointment System
A comprehensive enterprise application for managing automotive service appointments, time logging, and customer interactions
Features • Tech Stack • Getting Started • Documentation • License
This is an Enterprise Application Development (EAD) project that implements a comprehensive automobile service management system. The system streamlines the process of managing vehicle service appointments, tracking service progress, and logging service times for automotive service centers and their customers.
- Develop a web-based automobile service management system
- Implement appointment booking and scheduling functionality
- Create service time logging and tracking capabilities
- Provide real-time status updates for customers
- Enable efficient management of service center operations
- Demonstrate enterprise application development best practices
- User Registration & Authentication: Secure login system with JWT and OAuth2 (Google) support
- Vehicle Management: Add, edit, and manage multiple vehicles with comprehensive details
- Appointment Booking: Schedule service appointments online with real-time slot availability checking
- Service History: View detailed past and current service records with time logs
- Real-time Status Tracking: Monitor service progress with live updates and notifications
- Notifications: Real-time SSE-based notification system for service status updates
- Chat Support: Real-time chat communication with service center staff via WebSocket
- AI Chatbot: Intelligent chatbot assistant for common queries and support
- Profile Management: Update personal information, view active sessions, and manage account security
- Service Centers: Browse nearby service centers with location mapping
- Staff Dashboard: Comprehensive dashboard to manage daily operations and assigned appointments
- Service Time Logging: Track actual time spent on services with precision time log entries
- Appointment Management: View, update status, and manage customer appointments
- Service Status Updates: Real-time status updates (PENDING, CONFIRMED, IN_PROGRESS, COMPLETED, CANCELLED)
- Shift Scheduling: Self-assign to appointments based on availability and workload
- Inventory Access: View and manage inventory items required for services
- Chat System: Real-time communication with customers for service-related queries
- Profile Management: View assigned service center and personal details
- User Management: Comprehensive user and employee account management
- Appointment Administration: View and manage all appointments (upcoming, ongoing, unassigned)
- Employee Assignment: Assign employees to appointments and service centers
- Analytics & Reports: Advanced analytics dashboard with:
- Service distribution charts
- Revenue trend analysis
- Employee performance metrics
- Customer insights and statistics
- Service Catalog Management: Full CRUD operations for services and modifications
- Inventory Management: Complete inventory system with:
- Low stock alerts
- Category-based organization
- Restock and purchase operations
- Search and filtering capabilities
- Service Center Management: Manage multiple service center locations
- Notification Center: Centralized notification management for all users
- System Configuration: Configure system settings and parameters
- Framework: React 19.1.1 with TypeScript 5.8.3
- Build Tool: Vite 7.1.2
- Styling: TailwindCSS 4.1.13 with custom animations
- Routing: React Router DOM 7.9.3
- UI Components: Radix UI, Lucide React, Framer Motion
- Charts: Recharts for analytics visualization
- Maps: Leaflet & React-Leaflet for location services
- HTTP Client: Axios 1.12.2
- Real-time Communication:
- WebSocket (SockJS + STOMP) for chat
- Server-Sent Events (SSE) for notifications
- Additional Libraries:
- React Hot Toast for notifications
- jsPDF for PDF generation
- Vercel Analytics for performance monitoring
- Features: Responsive design, real-time updates, intuitive UI, offline-ready architecture
- Framework: Spring Boot 3.5.5
- Language: Java 21
- Database: PostgreSQL (production), H2 (development/testing)
- ORM: Spring Data JPA with Hibernate
- Security: Spring Security with JWT authentication
- OAuth2: Google OAuth2 integration for social login
- Real-time Communication:
- WebSocket support for chat functionality
- Server-Sent Events (SSE) for notifications
- Email: Spring Boot Mail for password reset and notifications
- API Documentation: Swagger/OpenAPI 3
- Architecture: RESTful API, Layered Architecture (Controller → Service → Repository)
- Build Tool: Maven
- Environment Configuration: Spring Dotenv for .env file support
- Primary Database: PostgreSQL
- Development Database: H2 (in-memory for testing)
- Design: Normalized relational database schema
- Key Entities:
- User, Role (Authentication & Authorization)
- Vehicle, Appointment, TimeLog (Core Service Management)
- ServiceOrModification, ServiceCenter (Service Catalog)
- RefreshToken, PasswordResetToken (Security)
- ChatRoom, ChatMessage (Communication)
- Notification (Real-time Updates)
- InventoryItem (Inventory Management)
- EmployeeCenter, ShiftSchedules (Workforce Management)
- Features: Data integrity, ACID compliance, indexing for performance, foreign key constraints
- JWT-based authentication with refresh tokens
- Role-based access control (RBAC)
- OAuth2 integration (Google Sign-In)
- Password encryption and secure token management
- XSS and CSRF protection
- Docker & Docker Compose support
- Containerized microservices architecture
- Environment-based configuration (.env files)
| Role | Capabilities |
|---|---|
| Customer | Book appointments, track services, manage vehicles, view service history |
| Employee | Log service times, update service status, manage appointments |
| Admin | System administration, user management, analytics, inventory management |
Required Software:
- Java 21 or higher
- PostgreSQL 14 or higher
- Node.js 18+ and npm/yarn
- Docker and Docker Compose (for containerized deployment)
- Maven 3.8+ (for backend build)
# Clone the repository
git clone https://github.com/Team-Tensors/EAD-Automobile-Service-Management-System.git
cd EAD-Automobile-Service-Management-System
# Start all services with Docker Compose
docker-compose up --build
# Access the application
# Frontend: http://localhost:5173
# Backend API: http://localhost:4000Backend Setup:
# Navigate to backend directory
cd backend
# Create .env file from example
cp .env.example .env
# Edit .env file with your database credentials and configuration
# Build the application
mvn clean install
# Run the application
mvn spring-boot:run
# Backend will be available at http://localhost:4000Frontend Setup:
# Navigate to frontend directory
cd frontend
# Install dependencies
npm install
# Start development server
npm run dev
# Frontend will be available at http://localhost:5173-- Create PostgreSQL database
CREATE DATABASE automobile_service_db;
-- The application will automatically create tables on first run
-- using JPA/Hibernate auto-ddl configurationBackend (.env file):
# Database Configuration
DB_URL=jdbc:postgresql://localhost:5432/automobile_service_db
DB_USERNAME=your_username
DB_PASSWORD=your_password
# Google OAuth2 Credentials
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
# Frontend URL (for CORS)
FRONTEND_URL=http://localhost:5173
# JWT Configuration
JWT_SECRET=your_jwt_secret_key_at_least_256_bits
JWT_EXPIRATION=86400000 # 24 hours in milliseconds
JWT_REFRESH_EXPIRATION=604800000 # 7 days in milliseconds
JWT_REFRESH_MAX_TOKENS=5
# AI Chatbot (Groq API)
GROQ_API_KEY=your_groq_api_key
# Spring Profile (optional)
# SPRING_PROFILES_ACTIVE=dev # For development (default)
# SPRING_PROFILES_ACTIVE=prod # For productionNote:
- Copy
backend/.env.exampletobackend/.envand fill in your actual values - Never commit
.envfile to version control - Generate a strong JWT secret (minimum 256 bits / 32 characters)
# Backend tests
cd backend
mvn test
# Frontend tests (if configured)
cd frontend
npm testEAD-Automobile-Service-Management-System/
├── backend/ # Spring Boot backend
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/com/ead/backend/
│ │ │ │ ├── controller/ # REST API controllers
│ │ │ │ │ ├── AuthController.java
│ │ │ │ │ ├── VehicleController.java
│ │ │ │ │ ├── AppointmentBookingController.java
│ │ │ │ │ ├── CustomerAppointmentController.java
│ │ │ │ │ ├── AdminAppointmentController.java
│ │ │ │ │ ├── EmployeeController.java
│ │ │ │ │ ├── ServiceOrModificationController.java
│ │ │ │ │ ├── ServiceCenterController.java
│ │ │ │ │ ├── InventoryController.java
│ │ │ │ │ ├── AnalyticsController.java
│ │ │ │ │ ├── ChatController.java
│ │ │ │ │ ├── ChatBotController.java
│ │ │ │ │ ├── WebSocketChatController.java
│ │ │ │ │ ├── NotificationController.java
│ │ │ │ │ ├── ShiftScheduleController.java
│ │ │ │ │ └── HealthController.java
│ │ │ │ ├── service/ # Business logic layer
│ │ │ │ │ ├── AuthService.java
│ │ │ │ │ ├── AppointmentService.java
│ │ │ │ │ ├── CustomerAppointmentService.java
│ │ │ │ │ ├── EmployeeService.java
│ │ │ │ │ ├── AdminService.java
│ │ │ │ │ ├── VehicleService.java
│ │ │ │ │ ├── ServiceCenterService.java
│ │ │ │ │ ├── InventoryService.java
│ │ │ │ │ ├── AnalyticsService.java
│ │ │ │ │ ├── ChatService.java
│ │ │ │ │ ├── ChatbotService.java
│ │ │ │ │ ├── NotificationService.java
│ │ │ │ │ ├── ShiftScheduleService.java
│ │ │ │ │ ├── EmailService.java
│ │ │ │ │ ├── RefreshTokenService.java
│ │ │ │ │ ├── PasswordResetService.java
│ │ │ │ │ ├── JwtAuthorizationService.java
│ │ │ │ │ └── CustomUserDetailsService.java
│ │ │ │ ├── repository/ # Data access layer (JPA)
│ │ │ │ ├── entity/ # JPA entities
│ │ │ │ │ ├── User.java, Role.java
│ │ │ │ │ ├── Vehicle.java
│ │ │ │ │ ├── Appointment.java, TimeLog.java
│ │ │ │ │ ├── ServiceOrModification.java
│ │ │ │ │ ├── ServiceCenter.java
│ │ │ │ │ ├── EmployeeCenter.java
│ │ │ │ │ ├── ShiftSchedules.java
│ │ │ │ │ ├── InventoryItem.java
│ │ │ │ │ ├── ChatRoom.java, ChatMessage.java
│ │ │ │ │ ├── Notification.java
│ │ │ │ │ ├── RefreshToken.java
│ │ │ │ │ └── PasswordResetToken.java
│ │ │ │ ├── dto/ # Data transfer objects
│ │ │ │ ├── config/ # Configuration classes
│ │ │ │ ├── exception/ # Exception handlers
│ │ │ │ ├── filter/ # Security filters
│ │ │ │ ├── annotation/ # Custom annotations
│ │ │ │ └── util/ # Utility classes
│ │ │ └── resources/
│ │ │ ├── application.properties
│ │ │ └── ...
│ │ └── test/ # Unit and integration tests
│ ├── pom.xml # Maven dependencies
│ ├── .env.example # Environment variables template
│ └── Dockerfile # Backend Docker configuration
├── frontend/ # React frontend
│ ├── src/
│ │ ├── pages/ # Page components
│ │ │ ├── admin/ # Admin dashboard pages
│ │ │ │ ├── AdminDashboard.tsx
│ │ │ │ ├── AdminAnalytics.tsx
│ │ │ │ ├── AdminInventory.tsx
│ │ │ │ ├── AdminServiceTypes.tsx
│ │ │ │ ├── AdminEmployees.tsx
│ │ │ │ └── AdminNotifications.tsx
│ │ │ ├── CustomerDashboard.tsx
│ │ │ ├── EmployeeDashboard.tsx
│ │ │ ├── AppoinmentBookingPage.tsx
│ │ │ ├── MyAppointmentsPage.tsx
│ │ │ ├── MyVehiclesPage.tsx
│ │ │ ├── MySchedulePage.tsx
│ │ │ ├── ChatPage.tsx
│ │ │ ├── ProfilePage.tsx
│ │ │ ├── EmployeeInventory.tsx
│ │ │ ├── ShiftSchedulingPage.tsx
│ │ │ ├── NotificationsPage.tsx
│ │ │ └── ...
│ │ ├── components/ # Reusable UI components
│ │ │ ├── Chatbot/ # AI chatbot components
│ │ │ ├── Notification/ # Notification bell and SSE
│ │ │ ├── HomePage/ # Landing page components
│ │ │ └── ui/ # Shadcn UI components
│ │ ├── services/ # API service layer
│ │ │ ├── authService.ts
│ │ │ ├── appointmentService.ts
│ │ │ ├── vehicleService.ts
│ │ │ ├── inventoryService.ts
│ │ │ ├── analyticsService.ts
│ │ │ ├── chatService.ts
│ │ │ ├── notificationService.ts
│ │ │ └── ...
│ │ ├── types/ # TypeScript type definitions
│ │ ├── hooks/ # Custom React hooks
│ │ ├── utils/ # Utility functions
│ │ ├── App.tsx # Main app component
│ │ └── main.tsx # Entry point
│ ├── public/ # Static assets
│ ├── package.json # npm dependencies
│ ├── vite.config.ts # Vite configuration
│ ├── tailwind.config.js # Tailwind CSS config
│ ├── tsconfig.json # TypeScript config
│ └── Dockerfile # Frontend Docker configuration
├── diagrams/ # System design diagrams
│ ├── use_case.png # Use case diagram
│ └── er.png # Entity relationship diagram
├── documents/ # Project documentation
├── docker-compose.yml # Docker Compose configuration
├── PERFORMANCE_ISSUES.md # Performance analysis document
└── README.md # This file
- WebSocket Chat: Real-time chat between customers and service staff using SockJS and STOMP
- AI Chatbot: Intelligent chatbot for answering common questions and providing support
- Server-Sent Events: Live notification updates without polling
- Service distribution visualization
- Revenue trend analysis with charts
- Employee performance metrics
- Customer insights and statistics
- Custom analytics with filtering capabilities
- Complete CRUD operations for inventory items
- Category-based organization
- Low stock alerts and monitoring
- Restock and purchase tracking
- Search and filtering capabilities
- Employee self-assignment to appointments
- Workload balancing algorithms
- Service center assignment management
- Availability tracking
- Multi-device session management
- Refresh token rotation
- Active session monitoring
- Device information tracking
- Password reset via email with secure tokens
- Performance Optimizations: Identified and documented in
PERFORMANCE_ISSUES.md - Real-time Updates: Replaced polling with WebSocket and SSE where appropriate
- Enhanced Validation: Comprehensive input validation on both frontend and backend
- Error Handling: Consistent error responses across all endpoints
- Database Optimizations: Indexed queries and optimized relationships
- Responsive design for all screen sizes
- Real-time status updates without page refresh
- Interactive charts and data visualization
- Map integration for service center locations
- PDF generation for reports
- Toast notifications for user feedback
- Loading states and skeleton screens
We welcome contributions to improve the EAD Automobile Service Management System! Here's how you can contribute:
- 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
Please ensure your code follows the project's coding standards and includes appropriate tests.
Team Tensors - Enterprise Application Development Project
For questions or support, please open an issue in the GitHub repository.
Copyright (c) 2025 Team Tensors
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
This project is licensed under the MIT License - see above for details
- Spring Boot team for the excellent framework
- React team for the powerful UI library
- All contributors and team members who made this project possible

