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:8080
to 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.yml
file 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.