Skip to content

Prabhakar1116/CRM-FE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project Structure Overview:

Controllers: Contains handler functions for each route or entity (e.g., userController.js, authController.js). Database: Configuration file (config.js) for MongoDB connection. Middleware: Contains middleware functions (authJWT.js, verifySignup.js, etc.) for handling authentication, request validation, etc. Models: Defines Mongoose schemas (userSchema.js, ticketSchema.js, etc.). Routers: Defines routes for each entity (userRoute.js, ticketRoute.js, etc.). Script: Scripts related to user registration (authScript.js). Utils: Utility functions (mail.js, randomString.js, etc.). Root files: Main files (index.js, server.js) and configuration files (package.json, .env). Key Controllers:

authController.js: Handles user signup, activation, and signin functionalities. It integrates with authScript.js for email content generation and NotificationClient.js for email sending. ticketController.js: Manages CRUD operations for tickets. It includes validation middleware (verifyTicketReqBody.js) for request body validation. userController.js: Manages CRUD operations for users. communicationController.js and customerController.js: Manage communications and customers respectively, with basic CRUD operations. Middleware:

Authentication Middleware: authJWT.js handles token verification (verifyToken) and checks if a user is an admin or has appropriate permissions (isAdmin, isAdminOrOwnUser). Request Body Validation: verifySignup.js, verifyTicketReqBody.js, and verifyCustomerReqBody.js ensure that request bodies meet certain criteria before processing. Models:

Defines Mongoose schemas (User, Ticket, Customer, Communication) for MongoDB interactions. Routes:

Each entity (user, ticket, customer, etc.) has its own route file (userRoute.js, ticketRoute.js, etc.) that defines endpoints and integrates with controllers and middleware. Configuration and Utilities:

Configuration: .env for environment variables (MONGODB_URL, TOKEN_SECRET, etc.) and config.js for MongoDB connection. Utilities: mail.js, randomString.js, etc., provide reusable functions (sendEmail, generateRandomString, etc.). Analysis:

Security: Middleware like authJWT.js ensures authentication and authorization using JSON Web Tokens (JWT). Structure: Well-organized structure with separation of concerns (controllers, models, routes, middleware) enhances readability and maintainability. Error Handling: Basic error handling (try-catch blocks) in controllers ensures robustness. Scalability: Modular approach allows for easy addition of new features or endpoints.


Data Models User Model (userSchema.js):

Data Sent to DB (during creation/update): name, username, email, password, userTypes, userStatus, activationToken, purchaseHistory, preferences, contactInformation. Data Received from DB: Entire user object. Ticket Model (ticketSchema.js):

Data Sent to DB (during creation/update): customerName, issue, status, priority, assignedTo. Data Received from DB: Entire ticket object. Communication Model (communicationSchema.js):

Data Sent to DB (during creation/update): customerId, subject, content, type. Data Received from DB: Entire communication object. Customer Model (customerSchema.js):

Data Sent to DB (during creation/update): name, email, contactInformation, purchaseHistory, preferences. Data Received from DB: Entire customer object. Controllers userController.js:

Functions handle CRUD operations for users (createUser, getAllUsers, getUserById, updateUser, deleteUser). ticketController.js:

Functions handle CRUD operations for tickets (createTicket, getAllTickets, getTicketById, updateTicketById). communicationController.js:

Functions handle CRUD operations for communications (createCommunication, getAllCommunications, getCommunicationById). customerController.js:

Functions handle CRUD operations for customers (createCustomer, getAllCustomers, getCustomerById, updateCustomer, deleteCustomer). analyticsController.js:

Contains getLeadConversionRate function to fetch analytics data related to ticket conversion rate. Routes Routers: Each model has its own router (userRoute.js, ticketRoute.js, communicationRoute.js, customerRoute.js) that defines endpoints for creating, reading, updating, and deleting data associated with that model. Middleware authJWT.js:

Contains middleware functions (verifyToken, isAdmin, isAdminOrOwnUser) to verify JSON Web Tokens (JWT) and user roles for authentication and authorization purposes. verifySignup.js:

Middleware functions (verifySignUpRequest, checkDuplicateUsernameOrEmail) to validate user signup requests and check for duplicate usernames or emails before creating a new user. verifyTicketReqBody.js:

Middleware functions (validateTicketRequestBody, validateTicketRequestStatus) to validate ticket request body fields and status before creating or updating tickets. verifyCustomerReqBody.js:

Middleware function (verifyCustomerReqBody) to validate customer request body fields before creating or updating customers. Other Components Constants (constants.js):

Defines constants for userTypes, userStatus, ticketStatus, etc., used across the application. Script (authScript.js):

Provides a function (userRegistration) to generate email content for user registration. Database Configuration Database Configuration (config.js): Configures MongoDB connection using Mongoose, with environment variables loaded from .env.