- name
- enterprise-user-management-ai-system
- description
- Full-stack user management system with AI-powered analytics, task tracking, and intelligent ticket routing
- triggers
- ["set up enterprise user management with AI","implement user management system with task tracking","create admin dashboard with AI analytics","build user management app with ticket system","add AI-based risk detection to user management","integrate ML service for user behavior analysis","configure Kanban board with time tracking","deploy enterprise user management system"]
# Enterprise User Management AI System
> Skill by [ara.so](https://ara.so) — Data Skills collection.
A full-stack enterprise user management system featuring AI-powered analytics, task management with Kanban boards, support ticket handling, and intelligent insights including risk detection, anomaly detection, and burnout analysis.
## What It Does
This system provides:
- **User Management**: Role-based access control, authentication with JWT
- **Task Management**: Kanban boards (To Do → In Progress → Done) with time tracking
- **Support System**: Ticket creation, tracking, and AI-based classification
- **AI Analytics**: Risk prediction, anomaly detection, burnout analysis, project delay prediction
- **Admin Controls**: User CRUD operations, audit logs, organization analytics
- **Real-time Insights**: Performance metrics, workload analysis, suspicious activity alerts
## Installation
### Prerequisites
```bash
# Node.js 14+ for backend/frontend
# Python 3.8+ for ML service
# MongoDB running locally or remote connection
```
### 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 .env file
cat > .env << EOF
PORT=5000
MONGODB_URI=mongodb://localhost:27017/enterprise-user-mgmt
JWT_SECRET=${JWT_SECRET}
JWT_EXPIRE=7d
ML_SERVICE_URL=http://localhost:8000
EOF
npm start
# Backend runs at http://localhost:5000
```
### ML Service Setup
```bash
cd ml-service
pip install -r requirements.txt
# Create .env file for ML service
cat > .env << EOF
MODEL_PATH=./models
LOG_LEVEL=INFO
EOF
uvicorn main:app --reload --host 0.0.0.0 --port 8000
# ML service runs at http://localhost:8000
```
### Frontend Setup
```bash
cd frontend
npm install
# Create .env file
cat > .env << EOF
REACT_APP_API_URL=http://localhost:5000/api
REACT_APP_ML_URL=http://localhost:8000
EOF
npm start
# Frontend runs at http://localhost:3000
```
## Key API Endpoints
### Authentication
```javascript
// Register new user
POST /api/auth/register
{
"name": "John Doe",
"email": "john@example.com",
"password": "securepass123",
"role": "user" // or "admin"
}
// Login
POST /api/auth/login
{
"email": "john@example.com",
"password": "securepass123"
}
// Returns: { token, user: { id, name, email, role } }
```
### User Management (Admin)
```javascript
// Get all users
GET /api/users
Headers: { Authorization: "Bearer ${JWT_TOKEN}" }
// Update user
PUT /api/users/:userId
{
"name": "Updated Name",
"role": "admin",
"status": "active"
}
// Delete user
DELETE /api/users/:userId
```
### Task Management
```javascript
// Create task
POST /api/tasks
{
"title": "Implement new feature",
"description": "Build user profile page",
"assignedTo": "userId",
"status": "todo", // todo, inprogress, done
"priority": "high",
"dueDate": "2026-05-01"
}
// Update task status
PATCH /api/tasks/:taskId/status
{
"status": "inprogress",
"timeSpent": 3600 // seconds
}
// Get user tasks
GET /api/tasks/user/:userId
```
### Support Tickets
```javascript
// Create ticket
POST /api/tickets
{
"subject": "Login issue",
"description": "Cannot access dashboard",
"priority": "high",
"category": "technical"
}
// Get tickets (admin)
GET /api/tickets?status=open&priority=high
// Update ticket
PATCH /api/tickets/:ticketId
{
"status": "resolved",
"resolution": "Password reset sent"
}
```
### AI Analytics Endpoints
```javascript
// Risk prediction
POST /api/ai/risk-prediction
{
"userId": "user123",
"taskLoad": 15,
"overdueCount": 3,
"avgCompletionTime": 72
}
// Returns: { riskLevel: "high", probability: 0.78, factors: [...] }
// Anomaly detection
POST /api/ai/anomaly-detection
{
"userId": "user123",
"loginTime": "2026-04-15T03:30:00Z",
"location": "unusual-ip",
"activityPattern": [...]
}
// Returns: { isAnomaly: true, score: 0.85, reason: "..." }
// Burnout analysis
POST /api/ai/burnout-analysis
{
"userId": "user123",
"weeklyHours": 65,
"taskCount": 25,
"overtimeFrequency": 0.8
}
// Returns: { burnoutRisk: "high", recommendation: "..." }
// Project delay prediction
POST /api/ai/project-prediction
{
"projectId": "proj123",
"tasksCompleted": 40,
"tasksRemaining": 60,
"averageVelocity": 8,
"deadline": "2026-06-01"
}
// Returns: { delayProbability: 0.65, estimatedCompletion: "2026-06-15" }
```
## Frontend Integration Examples
### Authentication Hook
```javascript
// hooks/useAuth.js
import { useState, useEffect } from 'react';
import axios from 'axios';
const API_URL = process.env.REACT_APP_API_URL;
export const useAuth = () => {
const [user, setUser] = useState(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
const token = localStorage.getItem('token');
if (token) {
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
fetchUser();
} else {
setLoading(false);
}
}, []);
const fetchUser = async () => {
try {
const res = await axios.get(`${API_URL}/auth/me`);
setUser(res.data.user);
} catch (error) {
localStorage.removeItem('token');
} finally {
setLoading(false);
}
};
const login = async (email, password) => {
const res = await axios.post(`${API_URL}/auth/login`, { email, password });
localStorage.setItem('token', res.data.token);
axios.defaults.headers.common['Authorization'] = `Bearer ${res.data.token}`;
setUser(res.data.user);
return res.data;
};
const logout = () => {
localStorage.removeItem('token');
delete axios.defaults.headers.common['Authorization'];
setUser(null);
};
return { user, loading, login, logout, isAdmin: user?.role === 'admin' };
};
```
### Kanban Board Component
```javascript
// components/KanbanBoard.jsx
import React, { useState, useEffect } from 'react';
import axios from 'axios';
import './KanbanBoard.css';
const API_URL = process.env.REACT_APP_API_URL;
const KanbanBoard = ({ userId }) => {
const [tasks, setTasks] = useState({ todo: [], inprogress: [], done: [] });
const [loading, setLoading] = useState(true);
useEffect(() => {
fetchTasks();
}, [userId]);
const fetchTasks = async () => {
try {
const res = await axios.get(`${API_URL}/tasks/user/${userId}`);
const grouped = res.data.reduce((acc, task) => {
acc[task.status].push(task);
return acc;
}, { todo: [], inprogress: [], done: [] });
setTasks(grouped);
} catch (error) {
console.error('Error fetching tasks:', error);
} finally {
setLoading(false);
}
};
const updateTaskStatus = async (taskId, newStatus) => {
try {
await axios.patch(`${API_URL}/tasks/${taskId}/status`, { status: newStatus });
fetchTasks();
} catch (error) {
console.error('Error updating task:', error);
}
};
const TaskCard = ({ task, status }) => (
<div className="task-card" draggable>
<h4>{task.title}</h4>
<p>{task.description}</p>
<div className="task-meta">
<span className={`priority ${task.priority}`}>{task.priority}</span>
<span className="due-date">{new Date(task.dueDate).toLocaleDateString()}</span>
</div>
<select
value={status}
onChange={(e) => updateTaskStatus(task._id, e.target.value)}
>
<option value="todo">To Do</option>
<option value="inprogress">In Progress</option>
<option value="done">Done</option>
</select>
</div>
);
if (loading) return <div>Loading tasks...</div>;
return (
<div className="kanban-board">
{['todo', 'inprogress', 'done'].map(status => (
<div key={status} className="kanban-column">
<h3>{status.replace(/([A-Z])/g, ' $1').toUpperCase()}</h3>
<div className="task-list">
{tasks[status].map(task => (
<TaskCard key={task._id} task={task} status={status} />
))}
</div>
</div>
))}
</div>
);
};
export default KanbanBoard;
```
### AI Risk Dashboard Component
```javascript
// components/AIRiskDashboard.jsx
import React, { useState, useEffect } from 'react';
import axios from 'axios';
const API_URL = process.env.REACT_APP_API_URL;
const AIRiskDashboard = ({ userId }) => {
const [riskData, setRiskData] = useState(null);
const [burnoutData, setBurnoutData] = useState(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
fetchAIAnalytics();
}, [userId]);
const fetchAIAnalytics = async () => {
try {
const [riskRes, burnoutRes] = await Promise.all([
axios.post(`${API_URL}/ai/risk-prediction`, { userId }),
axios.post(`${API_URL}/ai/burnout-analysis`, { userId })
]);
setRiskData(riskRes.data);
setBurnoutData(burnoutRes.data);
} catch (error) {
console.error('Error fetching AI analytics:', error);
} finally {
setLoading(false);
}
};
if (loading) return <div>Analyzing data...</div>;
return (
<div className="ai-dashboard">
<div className="risk-card">
<h3>Risk Level</h3>
<div className={`risk-indicator ${riskData.riskLevel}`}>
Voir sur GitHub