- JWT Authentication – Secure login, register, and logout with protected routes
- Role-Based Access Control – Admin with full access, Sales Rep with limited access
- Dashboard Overview – Centralized view of leads, customers, tasks, and sales
- Customer Management – Add, edit, delete, and assign customers to sales reps
- Lead Tracking – Manage leads with contact info, source, status, and assignments
- Task Management – Create, assign, and update tasks with due dates & priorities
- Sales Pipeline – Track deals, amounts, dates, statuses, and responsible reps
- Relational Database – MySQL schema linking users, customers, leads, tasks & sales
- API Documentation – Interactive Swagger UI for testing and integration
- Responsive Frontend – React.js interface with role-based UI rendering
- Secure Backend – Spring Boot with Spring Security for authorization
- Protected Routes – React Router with token validation for frontend security
- Optional Enhancements – Notifications, reminders, reports export
CRM-Software-Project/
├── crm-backend/
│ ├── .env.local
│ ├── controllers/
│ │ ├── authController.js
│ │ ├── customerController.js
│ │ ├── leadController.js
│ │ ├── notificationController.js
│ │ ├── saleController.js
│ │ ├── taskController.js
│ │ └── userController.js
│ ├── index.js
│ ├── middleware/
│ │ ├── auth.js
│ │ └── roleCheck.js
│ ├── models/
│ │ ├── Customer.js
│ │ ├── Lead.js
│ │ ├── Notification.js
│ │ ├── Sale.js
│ │ ├── Task.js
│ │ └── User.js
│ ├── package-lock.json
│ ├── package.json
│ ├── routes/
│ │ ├── auth.js
│ │ ├── customers.js
│ │ ├── leads.js
│ │ ├── notifications.js
│ │ ├── sales.js
│ │ ├── tasks.js
│ │ └── users.js
│ └── utils/
│ └── logger.js
├── crm-frontend/
│ ├── eslint.config.js
│ ├── index.html
│ ├── package-lock.json
│ ├── package.json
│ ├── postcss.config.js
│ ├── public/
│ │ ├── crm_logo.png
│ │ ├── restricted_access.png
│ │ └── vite.svg
│ ├── README.md
│ ├── src/
│ │ ├── App.jsx
│ │ ├── assets/
│ │ │ ├── crm_logo.png
│ │ │ └── react.svg
│ │ ├── components/
│ │ │ ├── DataTable.jsx
│ │ │ ├── FormInput.jsx
│ │ │ ├── FormSelect.jsx
│ │ │ ├── FormTextarea.jsx
│ │ │ ├── GlassCard.jsx
│ │ │ ├── GlassNavbar.jsx
│ │ │ ├── Navbar.jsx
│ │ │ ├── NotificationBell.jsx
│ │ │ └── NotificationContext.jsx
│ │ ├── index.css
│ │ ├── main.jsx
│ │ ├── pages/
│ │ │ ├── Customers.jsx
│ │ │ ├── Dashboard.jsx
│ │ │ ├── form_pages/
│ │ │ │ ├── CustomerForm.jsx
│ │ │ │ ├── LeadForm.jsx
│ │ │ │ ├── SaleForm.jsx
│ │ │ │ └── TaskForm.jsx
│ │ │ ├── Leads.jsx
│ │ │ ├── Login.jsx
│ │ │ ├── Register.jsx
│ │ │ ├── Reports.jsx
│ │ │ ├── Sales.jsx
│ │ │ └── Tasks.jsx
│ │ └── services/
│ │ ├── api.js
│ │ ├── auth.js
│ │ └── notifications.js
│ ├── tailwind.config.js
│ └── vite.config.js
├── .gitignore
├── LICENSE.md
└── README.md
Make sure you have the following installed on your system with latest version:
- Node.js
- MongoDB Account
- Java JDK
- Maven
- Git (for cloning the repository)
git clone https://github.com/your-username/crm-software.git
cd crm-softwarecd crm-backend
npm install
node index.jscd crm-frontend
npm install
npm run devThe backend provides a fully interactive Swagger UI for testing and exploring all CRM API endpoints. This includes routes for authentication, users, customers, leads, tasks, sales, and notifications — all protected with JWT authorization.
After running the backend, open your browser and go to: http://localhost:5000/api-docs
Here you can:
- View all available endpoints grouped by module
- Test secured routes by entering your JWT token
- See example request & response bodies for each API
- Automatically generate cURL and Postman snippets
- ✅ Authentication & Authorization – Secure JWT login, registration, and role-based access (Admin & Sales Rep)
- ✅ User Management – Manage users with protected routes and role-based restrictions
- ✅ Customer Management – Full CRUD operations with assignment to sales reps
- ✅ Lead Management – Track leads with contact details, source, status, and rep assignments
- ✅ Task Management – Create, assign, and update tasks with due dates, priorities, and statuses
- ✅ Sales Management – Record deals with customer mapping, amount, status, and assigned rep
- ✅ Dashboard UI – Centralized overview of sales, leads, customers, and tasks
- ✅ Database Schema (MySQL) – Structured relational tables for users, customers, leads, tasks, and sales
- ✅ API Documentation (Swagger) – Interactive API docs at
/swagger-ui.html - ✅ Testing & QA – Unit tests (JUnit + Mockito), API tests (Postman, Swagger), and frontend validation
- ✅ Frontend (React.js) – Responsive, role-based UI with React Router protection
- ✅ Backend (Spring Boot) – Secure, scalable APIs with Spring Security & JWT
- ✅ Deployment-Ready Codebase – Complete repo with frontend & backend setup instructions
I've used these platforms and libraries in my project:
- MongoDB – Relational database for structured and scalable data storage.
- Node.js + Postman – Backend framework for building secure and scalable APIs.
- Spring Security – Role-based authentication and authorization with JWT.
- Vite React.js – Frontend framework for building an interactive user interface.
- Axios – Simplified HTTP client for making API requests from the frontend.
- JUnit + Mockito – Backend unit testing framework.
- React Router – Frontend routing with protected routes for role-based access.
- TailwindCSS (optional) – Utility-first CSS framework for styling UI.
- Chart.js / ApexCharts (optional) – Dashboard charts and data visualizations.
This project is protected under the MIT License. For more details, refer to the LICENSE file.