- name
- enterprise-user-management-system-ai
- description
- Full-stack user management system with AI-powered analytics for task tracking, ticket management, and predictive insights
- triggers
- ["set up enterprise user management with AI analytics","create user management dashboard with AI features","implement task tracking with burnout detection","build support ticket system with AI classification","add AI-powered risk detection to user system","configure user management with kanban board","integrate ML analytics for project insights","deploy user management system with FastAPI ML"]
# Enterprise User Management System with AI Analytics
> Skill by [ara.so](https://ara.so) — Data Skills collection.
A full-stack enterprise user management platform combining React frontend, Node.js backend, and FastAPI ML service. Provides role-based access control, task management with Kanban boards, support ticket system, and AI-powered analytics including risk detection, anomaly detection, burnout analysis, and predictive project insights.
## What It Does
- **User Management**: JWT-authenticated system with role-based access (Admin/User)
- **Task Tracking**: Kanban board (To Do → In Progress → Done) with time tracking
- **Support Tickets**: AI-classified ticket routing and management
- **AI Analytics**: Risk prediction, anomaly detection, burnout analysis, project delay prediction
- **Real-time Insights**: Dashboard with performance metrics and alerts
## Installation
### Prerequisites
```bash
# Required
node >= 14.x
python >= 3.8
mongodb >= 4.x
```
### Clone and Setup
```bash
git clone https://github.com/Nareshkumar2583/Enterprise-User-Management-System-with-AI-Analytics.git
cd Enterprise-User-Management-System-with-AI-Analytics
```
### Backend Setup
```bash
cd backend
npm install
```
Create `backend/.env`:
```env
PORT=5000
MONGODB_URI=mongodb://localhost:27017/enterprise-user-mgmt
JWT_SECRET=your_jwt_secret_key
ML_SERVICE_URL=http://localhost:8000
NODE_ENV=development
```
Start backend:
```bash
npm start
# Runs at http://localhost:5000
```
### ML Service Setup
```bash
cd ml-service
pip install -r requirements.txt
```
Create `ml-service/.env`:
```env
MODEL_PATH=./models
LOG_LEVEL=INFO
BACKEND_URL=http://localhost:5000
```
Start ML service:
```bash
uvicorn main:app --reload --port 8000
# Runs at http://localhost:8000
```
### Frontend Setup
```bash
cd frontend
npm install
```
Create `frontend/.env`:
```env
REACT_APP_API_URL=http://localhost:5000
REACT_APP_ML_API_URL=http://localhost:8000
```
Start frontend:
```bash
npm start
# Runs at http://localhost:3000
```
## Key API Endpoints
### Authentication (Backend)
```javascript
// POST /api/auth/register
{
"name": "John Doe",
"email": "john@company.com",
"password": "securepass123",
"role": "user" // or "admin"
}
// POST /api/auth/login
{
"email": "john@company.com",
"password": "securepass123"
}
// Returns: { token: "jwt_token", user: {...} }
```
### User Management (Backend)
```javascript
// GET /api/users - List all users (Admin only)
// GET /api/users/:id - Get user by ID
// PUT /api/users/:id - Update user
// DELETE /api/users/:id - Delete user (Admin only)
```
### Task Management (Backend)
```javascript
// GET /api/tasks - Get user's tasks
// POST /api/tasks - Create task
{
"title": "Implement login feature",
"description": "Add JWT authentication",
"assignedTo": "user_id",
"status": "todo", // todo, in_progress, done
"priority": "high",
"dueDate": "2026-05-01"
}
// PATCH /api/tasks/:id - Update task status
{
"status": "in_progress",
"timeSpent": 120 // minutes
}
```
### Support Tickets (Backend)
```javascript
// POST /api/tickets - Create ticket
{
"title": "Unable to access dashboard",
"description": "Getting 403 error",
"priority": "high",
"category": "technical"
}
// GET /api/tickets - Get tickets
// PATCH /api/tickets/:id - Update ticket
{
"status": "in_progress",
"assignedTo": "admin_id"
}
```
### AI Analytics (ML Service)
```python
# POST /api/ml/classify-ticket
{
"title": "Password reset not working",
"description": "Clicked forgot password but no email received"
}
# Returns: { "category": "technical", "priority": "medium", "confidence": 0.89 }
# POST /api/ml/detect-risk
{
"userId": "user_id",
"failedLogins": 5,
"unusualActivity": true,
"accessPatterns": ["night", "weekend"]
}
# Returns: { "riskScore": 0.76, "riskLevel": "high", "factors": [...] }
# POST /api/ml/detect-burnout
{
"userId": "user_id",
"tasksCompleted": 45,
"hoursWorked": 65,
"overtimeHours": 15,
"missedDeadlines": 3
}
# Returns: { "burnoutScore": 0.82, "recommendation": "reduce_workload" }
# POST /api/ml/predict-delay
{
"projectId": "proj_123",
"tasksRemaining": 12,
"averageCompletionTime": 4.5,
"teamSize": 5,
"complexityScore": 7
}
# Returns: { "delayProbability": 0.65, "estimatedDelay": 5 }
```
## Frontend Integration Examples
### Authentication Flow
```javascript
// src/services/authService.js
import axios from 'axios';
const API_URL = process.env.REACT_APP_API_URL;
export const login = async (email, password) => {
const response = await axios.post(`${API_URL}/api/auth/login`, {
email,
password
});
if (response.data.token) {
localStorage.setItem('token', response.data.token);
localStorage.setItem('user', JSON.stringify(response.data.user));
}
return response.data;
};
export const logout = () => {
localStorage.removeItem('token');
localStorage.removeItem('user');
};
export const getAuthHeader = () => {
const token = localStorage.getItem('token');
return token ? { Authorization: `Bearer ${token}` } : {};
};
```
### Task Management Component
```javascript
// src/components/KanbanBoard.jsx
import React, { useState, useEffect } from 'react';
import axios from 'axios';
import { getAuthHeader } from '../services/authService';
const KanbanBoard = () => {
const [tasks, setTasks] = useState({
todo: [],
in_progress: [],
done: []
});
const API_URL = process.env.REACT_APP_API_URL;
useEffect(() => {
fetchTasks();
}, []);
const fetchTasks = async () => {
try {
const response = await axios.get(`${API_URL}/api/tasks`, {
headers: getAuthHeader()
});
const grouped = response.data.reduce((acc, task) => {
acc[task.status] = acc[task.status] || [];
acc[task.status].push(task);
return acc;
}, {});
setTasks(grouped);
} catch (error) {
console.error('Failed to fetch tasks:', error);
}
};
const updateTaskStatus = async (taskId, newStatus) => {
try {
await axios.patch(
`${API_URL}/api/tasks/${taskId}`,
{ status: newStatus },
{ headers: getAuthHeader() }
);
fetchTasks(); // Refresh
} catch (error) {
console.error('Failed to update task:', error);
}
};
return (
<div className="kanban-board">
{['todo', 'in_progress', 'done'].map(status => (
<div key={status} className="kanban-column">
<h3>{status.replace('_', ' ').toUpperCase()}</h3>
{tasks[status]?.map(task => (
<div key={task._id} className="task-card">
<h4>{task.title}</h4>
<p>{task.description}</p>
<select
value={task.status}
onChange={(e) => updateTaskStatus(task._id, e.target.value)}
>
<option value="todo">To Do</option>
<option value="in_progress">In Progress</option>
<option value="done">Done</option>
</select>
</div>
))}
</div>
))}
</div>
);
};
export default KanbanBoard;
```
### AI-Powered Ticket Classification
```javascript
// src/components/CreateTicket.jsx
import React, { useState } from 'react';
import axios from 'axios';
import { getAuthHeader } from '../services/authService';
const CreateTicket = () => {
const [formData, setFormData] = useState({
title: '',
description: ''
});
const [aiSuggestion, setAiSuggestion] = useState(null);
const API_URL = process.env.REACT_APP_API_URL;
const ML_API_URL = process.env.REACT_APP_ML_API_URL;
const classifyWithAI = async () => {
try {
const response = await axios.post(
`${ML_API_URL}/api/ml/classify-ticket`,
{
title: formData.title,
description: formData.description
}
);
setAiSuggestion(response.data);
} catch (error) {
console.error('AI classification failed:', error);
}
};
const submitTicket = async (e) => {
e.preventDefault();
try {
await axios.post(
`${API_URL}/api/tickets`,
{
...formData,
category: aiSuggestion?.category || 'general',
priority: aiSuggestion?.priority || 'medium'
},
{ headers: getAuthHeader() }
);
alert('Ticket created successfully!');
setFormData({ title: '', description: '' });
setAiSuggestion(null);
} catch (error) {
console.error('Failed to create ticket:', error);
}
};
return (
<div className="create-ticket">
<form onSubmit={submitTicket}>
<input
type="text"
placeholder="Ticket Title"
value={formData.title}
onChange={(e) => setFormData({...formData, title: e.target.value})}
/>
<textarea
placeholder="Description"
value={formData.description}
onChange={(e) => setFormData({...formData, description: e.target.value})}
/>
<button type="button" onClick={classifyWithAI}>
Get AI Classification
</button>
{aiSuggestion && (
<div className="ai-suggestion">
<p>Category: {aiSuggestion.category}</p>
<p>Priority: {aiSuggestion.priority}</p>
<p>Confidence: {(aiSuggestion.confidence * 100).toFixed(1)}%</p>
</div>
)}
View on GitHub