Skip to content

Vayu-143/Online-Complaint-Management-System-Java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛡️ Online Complaint Management System — Java

Java Maven JUnit Security Architecture License

A Secure, Role-Based and SLA-Aware Complaint Lifecycle Management System Built with Core Java

A complete console-based complaint management solution featuring secure authentication, role-based access control, persistent storage, controlled complaint workflows, SLA tracking, automatic escalation, audit logging, analytics, feedback management, and automated testing.

FeaturesArchitectureInstallationUsageTestingDocumentation


📌 Project Overview

The Online Complaint Management System is an industry-oriented Core Java application designed to manage the complete lifecycle of complaints in a secure, structured, and transparent manner.

The system provides separate User and Administrator roles.

Users can register securely, log in, submit complaints, receive unique complaint IDs, track complaint progress, view status history, and provide feedback after resolution.

Administrators can manage complaints through assignment, priority updates, status transitions, resolution handling, filtering, SLA monitoring, escalation, closure, and analytics.

Unlike a basic CRUD application, this project focuses on real-world software engineering concepts including:

  • Layered architecture
  • Secure password management
  • Authentication and authorization
  • Business workflow validation
  • Persistent application data
  • SLA-based complaint monitoring
  • Auditability and status history
  • Automated unit testing

✨ Key Features

👤 User Management

  • Secure user registration
  • User authentication
  • Unique user ID generation
  • Password hashing using PBKDF2
  • Random password salts
  • Role-Based Access Control
  • Complaint ownership validation

📝 Complaint Management

  • Submit new complaints
  • Automatic unique complaint ID generation
  • Multiple complaint categories
  • Priority-based classification
  • Track complaint status
  • View personal complaints
  • View complete complaint history
  • Persistent complaint storage

🛠️ Administrator Management

  • View all complaints
  • Search complaints by ID
  • Assign complaints
  • Update complaint status
  • Change complaint priority
  • Add resolution details
  • Filter complaints
  • Close resolved complaints
  • View complaint analytics

⏱️ SLA Management

The system automatically associates an SLA target with each priority.

Priority SLA Target
🔵 LOW 72 Hours
🟢 MEDIUM 48 Hours
🟠 HIGH 24 Hours
🔴 CRITICAL 4 Hours

The system can identify complaints that are:

  • Within SLA
  • Near deadline
  • SLA breached
  • Escalated

🔐 Security

  • PBKDF2 with HMAC-SHA256 password hashing
  • Random cryptographic salts
  • No plain-text password storage
  • Role-based authorization
  • Complaint ownership protection
  • Input validation
  • Controlled complaint state transitions

📊 Additional Features

  • Complaint status history
  • User feedback and ratings
  • Administrative analytics
  • Automatic escalation support
  • Audit logging
  • Persistent file-based storage
  • Custom exception handling
  • JUnit 5 automated tests

🔄 Complaint Lifecycle

The primary complaint workflow follows:

┌──────────┐
│   OPEN   │
└────┬─────┘
     │
     ▼
┌────────────┐
│  ASSIGNED  │
└─────┬──────┘
      │
      ▼
┌────────────────┐
│  IN_PROGRESS   │
└───────┬────────┘
        │
        ▼
┌────────────┐
│  RESOLVED  │
└─────┬──────┘
      │
      ▼
┌──────────┐
│  CLOSED  │
└──────────┘

The system also supports controlled alternative transitions such as reopening a resolved complaint when additional work is required.

Invalid transitions are blocked through business rules and custom exception handling.


🏗️ System Architecture

The project follows a layered architecture:

┌─────────────────────────────────────────┐
│              USER / ADMIN               │
└────────────────────┬────────────────────┘
                     │
                     ▼
┌─────────────────────────────────────────┐
│            PRESENTATION LAYER           │
│                 Main.java               │
│        Menus • Input • Output           │
└────────────────────┬────────────────────┘
                     │
                     ▼
┌─────────────────────────────────────────┐
│              SERVICE LAYER              │
│                                         │
│     UserService • ComplaintService      │
│                                         │
│ Authentication • Authorization          │
│ Workflow • SLA • Analytics              │
└────────────────────┬────────────────────┘
                     │
                     ▼
┌─────────────────────────────────────────┐
│             REPOSITORY LAYER            │
│                                         │
│            FileRepository<T>            │
└────────────────────┬────────────────────┘
                     │
                     ▼
┌─────────────────────────────────────────┐
│                DATA LAYER               │
│                                         │
│       users.dat • complaints.dat        │
└─────────────────────────────────────────┘

This architecture provides:

  • Separation of concerns
  • Better maintainability
  • Improved testability
  • Reusable components
  • Easier database migration
  • Future REST API integration support

📂 Project Structure

Online-Complaint-Management-System-Java/
│
├── src/
│   ├── main/
│   │   └── java/
│   │       └── com/
│   │           └── complaintmanagement/
│   │               │
│   │               ├── enums/
│   │               ├── exception/
│   │               ├── model/
│   │               ├── repository/
│   │               ├── service/
│   │               ├── utility/
│   │               └── Main.java
│   │
│   └── test/
│       └── java/
│           └── com/
│               └── complaintmanagement/
│                   └── ComplaintServiceTest.java
│
├── data/
├── docs/
│   ├── ARCHITECTURE.md
│   ├── PROJECT_DOCUMENTATION.md
│   ├── TESTING.md
│   └── USER_GUIDE.md
│
├── logs/
├── outputs/
├── screenshots/
│   ├── user-registration.png
│   ├── user-login-dashboard.png
│   ├── complaint-submitted.png
│   ├── complaint-tracking.png
│   ├── admin-dashboard.png
│   ├── complaint-assigned.png
│   ├── complaint-in-progress.png
│   ├── complaint-resolved.png
│   ├── complaint-history.png
│   ├── feedback-submitted.png
│   ├── complaint-closed.png
│   └── analytics-dashboard.png
│
├── .gitignore
├── pom.xml
└── README.md

🧰 Technology Stack

Technology Usage
Java Core application development
OOP Modular application design
Java Collections In-memory data management
Java Streams Filtering and analytics
Java Serialization Persistent file storage
PBKDF2 Secure password hashing
JUnit 5 Automated unit testing
Apache Maven Build and dependency management
Git Version control
GitHub Source-code hosting and project portfolio
VS Code Development environment

🧠 Core Concepts Demonstrated

This project demonstrates practical implementation of:

  • Object-Oriented Programming
  • Encapsulation and abstraction
  • Layered software architecture
  • Java Collections Framework
  • Java Stream API
  • Generic programming
  • Java Serialization
  • File handling
  • Authentication and authorization
  • Password hashing and salting
  • Role-Based Access Control
  • Input validation
  • Custom exception handling
  • State transition management
  • SLA monitoring
  • Audit logging
  • Unit testing
  • Maven project management

🚀 Installation & Setup

Prerequisites

Ensure the following are installed:

  • Java JDK 17 or later
  • Apache Maven
  • Git
  • VS Code with Extension Pack for Java

Verify the installations:

java --version
javac --version
mvn --version
git --version

1. Clone the Repository

git clone https://github.com/Vayu-143/Online-Complaint-Management-System-Java.git

Navigate to the project:

cd Online-Complaint-Management-System-Java

2. Compile the Project

mvn clean compile

3. Run Automated Tests

mvn test

4. Start the Application

mvn exec:java

💻 Application Workflow

User Workflow

Register Account
      ↓
Secure Login
      ↓
Submit Complaint
      ↓
Receive Unique Complaint ID
      ↓
Track Complaint
      ↓
View Status History
      ↓
View Resolution
      ↓
Submit Feedback

Administrator Workflow

Admin Login
     ↓
View/Search Complaints
     ↓
Assign Complaint
     ↓
Update to IN_PROGRESS
     ↓
Add Resolution
     ↓
Mark as RESOLVED
     ↓
User Provides Feedback
     ↓
Close Complaint
     ↓
View Analytics

🖥️ Application Screenshots

User Registration

User Registration

User Dashboard

User Login Dashboard

Complaint Submission

Complaint Submitted

Complaint Tracking

Complaint Tracking

Administrator Dashboard

Admin Dashboard

Complaint Assignment

Complaint Assigned

Complaint In Progress

Complaint In Progress

Complaint Resolution

Complaint Resolved

Complaint History

Complaint History

User Feedback

Feedback Submitted

Complaint Closure

Complaint Closed

Analytics Dashboard

Analytics Dashboard


🧪 Testing

The project uses JUnit 5 for automated testing.

Run:

mvn clean test

Current test result:

Tests run: 5
Failures: 0
Errors: 0
Skipped: 0

BUILD SUCCESS

Tested Components

  • Password validation
  • Feedback rating validation
  • Default complaint status
  • Critical-priority SLA configuration
  • Automatic complaint history creation

Additional manual testing covers:

  • User registration
  • Duplicate account prevention
  • Authentication
  • Complaint submission
  • Complaint ownership
  • Administrator operations
  • Status transitions
  • Resolution workflow
  • Feedback submission
  • Complaint closure
  • Persistent storage

💾 Data Persistence

Application data is stored locally using Java object serialization.

data/
├── users.dat
└── complaints.dat

The repository layer is designed separately from the business logic, making future migration to technologies such as JDBC, MySQL, PostgreSQL, or Spring Data JPA easier.

Runtime .dat files are excluded from version control to prevent local user and complaint records from being committed to the repository.


🔒 Security Design

Password Protection

User Password
      │
      ▼
Random Salt Generation
      │
      ▼
PBKDF2WithHmacSHA256
      │
      ▼
Derived Password Hash
      │
      ▼
Store Hash + Salt

Passwords are never intentionally stored as plain text.

Access Control

Authenticated Account
        │
        ▼
     Role Check
     /        \
   USER      ADMIN
    │          │
    ▼          ▼
Personal     System-Wide
Complaints   Management

📈 Analytics

The administrator analytics module provides information such as:

  • Total number of complaints
  • Complaint count by status
  • Critical complaint count
  • Escalated complaint count
  • User feedback statistics
  • Average complaint rating

This demonstrates how operational complaint data can be transformed into useful management insights.


📚 Documentation

Detailed project documentation is available inside the docs/ directory:

Document Description
PROJECT_DOCUMENTATION.md Complete project explanation and technical overview
ARCHITECTURE.md System architecture, package structure, and data flow
TESTING.md Automated and manual testing strategy
USER_GUIDE.md Installation and complete application usage guide

⚠️ Current Limitations

The current version is designed as a Core Java portfolio and learning project.

Current limitations include:

  • Console-based interface
  • Local file-based persistence
  • Single-machine execution
  • No external relational database
  • No real-time email or SMS notifications
  • No web-based frontend

These limitations provide clear opportunities for future development.


🔮 Future Enhancements

Planned and possible improvements include:

  • MySQL/PostgreSQL database integration
  • JDBC persistence layer
  • Spring Boot backend
  • REST API development
  • JWT-based authentication
  • React or Angular frontend
  • JavaFX desktop interface
  • Email and SMS notifications
  • Automated complaint assignment
  • Scheduled SLA monitoring
  • AI-based complaint categorization
  • Sentiment analysis
  • Duplicate complaint detection
  • PDF report generation
  • Advanced analytics dashboard
  • Docker containerization
  • Cloud deployment
  • CI/CD with GitHub Actions

🎯 Learning Outcomes

Through this project, I strengthened my understanding of:

  • Building structured applications with Core Java
  • Designing maintainable layered architectures
  • Implementing real-world business workflows
  • Applying OOP concepts in practical applications
  • Designing secure authentication mechanisms
  • Implementing role-based authorization
  • Managing persistent application data
  • Designing controlled state transitions
  • Implementing SLA-based business rules
  • Writing automated tests using JUnit
  • Managing Java projects using Maven
  • Using Git and GitHub for version control

👨‍💻 About the Developer

Vayunandan Mishra

Electronics and Communication Engineering (ECE) student with an interest in Java development, software engineering, IoT, embedded systems, AI, and emerging technologies.

I enjoy building practical, industry-oriented projects that strengthen my understanding of programming, system design, problem-solving, and real-world technology applications.

This project was developed as part of my continuous learning journey and portfolio development.


🤝 Contributions

Contributions, suggestions, and improvements are welcome.

If you would like to contribute:

  1. Fork the repository.
  2. Create a new feature branch.
  3. Make your changes.
  4. Commit your improvements.
  5. Push the branch.
  6. Open a Pull Request.

⭐ Support

If you find this project useful or interesting, consider giving the repository a ⭐ Star.

Your support encourages continued learning and development of more practical engineering and software projects.


Built with ☕ Java and a focus on practical software engineering

Developed by Vayunandan Mishra

ECE Student | Java • Software Development • IoT • Embedded Systems • AI

Star this repository if you found it useful!

About

An industry-oriented Online Complaint Management System built with Core Java, featuring secure authentication, role-based access control, complaint lifecycle management, SLA tracking, escalation, audit logging, file persistence, analytics, and JUnit testing.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages