This project is a Customer Relationship Management (CRM) system designed to manage customer and user data efficiently. It provides an interface for creating, updating, and managing customers and users through a simple web application.
-
✅ Customer Management: Add, edit, and delete customers, with fields for name, email, region, and registration dates.
-
✅ User Management: Manage user accounts with roles like admin and user, alongside their respective regions.
-
✅ Responsive Forms: Interactive forms for creating or updating customers and users.
-
✅ Unit Tests with JUnit & Mockito: Comprehensive tests for services ensuring reliability of the code.
-
✅ Docker Integration: The project is containerized using Docker for easy setup and deployment.
-
✅ MySQL Database: The system uses MySQL for data storage.
-
⚙️ API as a Service: Runs outside of Docker to ease debugging during development.
-
⏳ Authentication System: Will be added in the future using Spring Security for role-based access control.
- Java 22
- Spring Boot 3.3.1: A framework for building Java applications.
- JSP: Used for frontend rendering.
- MySQL: The database management system.
- Hibernate: For managing the database through Java.
- Docker: Containerization of the project for easier deployment.
- Bootstrap: For responsive design of the forms and tables.
- JUnit 5: Used for unit testing.
- Mockito: Mocking framework to isolate and test service logic.
- Java 22 or later
- Maven: To manage dependencies and build the project.
- Docker: For containerizing the application and database.
- MySQL: The project uses MySQL for database management.
-
Clone the repository:
git clone <https://github.com/ATalhaTimur/CRMSystem> cd CRMSystem
-
Build the project:
./mvnw clean install
-
Run the project using Docker:
docker-compose up --build
-
Access the application:
- Navigate to
http://localhost:8080to access the web interface.
- Navigate to
-
Database setup: The MySQL database container will automatically set up the database required for this project. You can modify the database credentials in the
docker-compose.ymlfile if needed.
- Customer Table: Contains information about customers such as
firstName,lastName,email,region,registrationDate, and timestamps for updates. - User Table: Stores user data including
username,password,role,region, and timestamps.
We have added comprehensive unit tests to validate the service layer, ensuring the correctness of our business logic. The unit tests are written using JUnit 5 and Mockito to mock the repository layer.
- JUnit is used to structure the tests, making sure that all methods behave as expected.
- Mockito is used to mock dependencies and simulate interactions with the data repository, ensuring isolated tests of the service logic.
- Authentication: Add security to the application using Spring Security for role-based access.
- Search Functionality: Implement search filters on customer and user lists.




