Skip to content

Scalable CRM application with user roles, pipeline tracking, tasks, and sales automation — secured with JWT & Spring Security.

License

Notifications You must be signed in to change notification settings

vippium/CRM-Software-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CRM-Software-Project

✨ Features

  • 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

📁 Project Structure

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

🛠️ Getting Started

📋 Prerequisites

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)

1️⃣ Clone the Repository

git clone https://github.com/your-username/crm-software.git
cd crm-software

2️⃣ Backend Setup

cd crm-backend
npm install
node index.js

3️⃣ Frontend Setup (React.js Vite)

cd crm-frontend
npm install
npm run dev

📘 API Documentation (Swagger)

The 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.

🌐 Local Swagger Access

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

🗺️ Project Roadmap

  • 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

🙌 Acknowledgments

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.

🎗 License

This project is protected under the MIT License. For more details, refer to the LICENSE file.

About

Scalable CRM application with user roles, pipeline tracking, tasks, and sales automation — secured with JWT & Spring Security.

Resources

License

Stars

Watchers

Forks