bigbasealpha
Version:
Enterprise-Grade NoSQL Database System with Modular Logger & Offline HSM Security - Complete database platform with professional text-based logging, encryption, caching, indexing, JWT authentication, auto-generated REST API, real-time dashboard, and maste
679 lines (627 loc) ⢠22.3 kB
JavaScript
import express from 'express';
import cors from 'cors';
import path from 'path';
import { fileURLToPath } from 'url';
import { dirname } from 'path';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const app = express();
const PORT = 3001;
// Middleware
app.use(cors());
app.use(express.json());
app.use(express.static(path.join(__dirname, '.')));
// Mock data generators
function generateMockData() {
const now = Date.now();
const timestamps = Array.from({length: 20}, (_, i) => now - (19 - i) * 60000);
return {
// Business Intelligence Mock Data
bi: {
summary: {
kpis: { total: 12, active: 10, warning: 2, critical: 0 },
dashboards: { total: 5, active: 4, views: 1247 },
insights: { total: 34, new: 7, confidence: 0.85 },
reports: { total: 18, generated: 15, scheduled: 3 },
dataMining: { jobs: 8, patterns: 156, anomalies: 12 }
},
kpis: [
{
id: 'revenue',
name: 'Monthly Revenue',
type: 'currency',
currentValue: 156750,
targetValue: 150000,
status: 'good',
trend: 'up',
trendPercent: 12.5,
format: 'currency'
},
{
id: 'users',
name: 'Active Users',
type: 'counter',
currentValue: 12486,
targetValue: 12000,
status: 'good',
trend: 'up',
trendPercent: 8.3,
format: 'number'
},
{
id: 'conversion',
name: 'Conversion Rate',
type: 'percentage',
currentValue: 3.7,
targetValue: 4.0,
status: 'warning',
trend: 'down',
trendPercent: -2.1,
format: 'percentage'
},
{
id: 'satisfaction',
name: 'Customer Satisfaction',
type: 'percentage',
currentValue: 94.2,
targetValue: 90.0,
status: 'good',
trend: 'up',
trendPercent: 5.8,
format: 'percentage'
},
{
id: 'response_time',
name: 'Avg Response Time',
type: 'duration',
currentValue: 187,
targetValue: 200,
status: 'good',
trend: 'down',
trendPercent: -12.3,
format: 'number'
},
{
id: 'error_rate',
name: 'Error Rate',
type: 'percentage',
currentValue: 0.12,
targetValue: 0.5,
status: 'good',
trend: 'stable',
trendPercent: 0.8,
format: 'percentage'
}
],
performanceMetrics: {
timestamps,
queryTimes: timestamps.map(() => Math.random() * 100 + 50),
memoryUsage: timestamps.map(() => Math.random() * 30 + 40)
},
dataMiningResults: [
{
id: 'dm_001',
collection: 'users',
timestamp: now - 3600000,
patterns: [
{ type: 'seasonal', description: 'Peak activity on weekends', confidence: 0.89 },
{ type: 'behavioral', description: 'Users prefer mobile app', confidence: 0.76 }
],
anomalies: [
{ type: 'outlier', description: 'Unusual spike in registrations', severity: 'medium' }
],
executionTime: 2340
},
{
id: 'dm_002',
collection: 'transactions',
timestamp: now - 7200000,
patterns: [
{ type: 'temporal', description: 'Higher transactions during lunch hours', confidence: 0.92 }
],
anomalies: [],
executionTime: 1890
}
],
reports: [
{
id: 'rpt_001',
name: 'Weekly Performance Report',
type: 'performance',
status: 'completed',
timestamp: now - 86400000
},
{
id: 'rpt_002',
name: 'Customer Behavior Analysis',
type: 'behavioral',
status: 'completed',
timestamp: now - 172800000
},
{
id: 'rpt_003',
name: 'Revenue Forecasting',
type: 'predictive',
status: 'pending',
timestamp: now - 3600000
}
],
correlations: {
correlations: [
{
field1: 'user_activity',
field2: 'revenue',
correlation: 0.87,
dataPoints: Array.from({length: 20}, () => ({
x: Math.random() * 100,
y: Math.random() * 100
}))
},
{
field1: 'response_time',
field2: 'satisfaction',
correlation: -0.65,
dataPoints: Array.from({length: 20}, () => ({
x: Math.random() * 200 + 100,
y: Math.random() * 50 + 50
}))
}
]
},
insights: [
{
id: 'insight_001',
title: 'Revenue Growth Acceleration',
description: 'Monthly revenue has increased by 12.5% compared to last month, primarily driven by new user acquisitions.',
confidence: 0.92,
timestamp: now - 3600000,
category: 'financial'
},
{
id: 'insight_002',
title: 'Mobile Usage Dominance',
description: 'Mobile app usage accounts for 78% of total user interactions, suggesting mobile-first optimization is effective.',
confidence: 0.88,
timestamp: now - 7200000,
category: 'user_behavior'
},
{
id: 'insight_003',
title: 'Weekend Activity Spike',
description: 'User activity increases by 45% during weekends, indicating leisure usage patterns.',
confidence: 0.85,
timestamp: now - 10800000,
category: 'temporal'
},
{
id: 'insight_004',
title: 'Response Time Optimization',
description: 'Recent infrastructure improvements have reduced average response time by 12.3%.',
confidence: 0.94,
timestamp: now - 14400000,
category: 'performance'
}
]
},
// Distributed Computing Mock Data
distributed: {
status: {
totalWorkers: 8,
activeWorkers: 6,
queuedJobs: 23,
runningJobs: 4,
completedJobs: 1247,
failedJobs: 12,
avgExecutionTime: 234.5,
throughput: 45.2,
systemLoad: 68.3
},
workers: [
{ id: 1, status: 'active', currentJobs: 2, maxJobs: 10, workerId: 'worker_001' },
{ id: 2, status: 'active', currentJobs: 3, maxJobs: 10, workerId: 'worker_002' },
{ id: 3, status: 'busy', currentJobs: 8, maxJobs: 10, workerId: 'worker_003' },
{ id: 4, status: 'active', currentJobs: 1, maxJobs: 10, workerId: 'worker_004' },
{ id: 5, status: 'active', currentJobs: 4, maxJobs: 10, workerId: 'worker_005' },
{ id: 6, status: 'active', currentJobs: 2, maxJobs: 10, workerId: 'worker_006' },
{ id: 7, status: 'idle', currentJobs: 0, maxJobs: 10, workerId: 'worker_007' },
{ id: 8, status: 'error', currentJobs: 0, maxJobs: 10, workerId: 'worker_008' }
],
performanceHistory: {
timestamps,
throughput: timestamps.map(() => Math.random() * 20 + 35),
responseTime: timestamps.map(() => Math.random() * 100 + 150)
},
jobs: [
{
id: 'job_001',
type: 'map',
status: 'running',
workerId: 'worker_003',
createdAt: now - 120000,
startTime: now - 60000
},
{
id: 'job_002',
type: 'reduce',
status: 'running',
workerId: 'worker_002',
createdAt: now - 180000,
startTime: now - 90000
},
{
id: 'job_003',
type: 'query',
status: 'pending',
createdAt: now - 30000
},
{
id: 'job_004',
type: 'batch',
status: 'completed',
workerId: 'worker_001',
createdAt: now - 300000,
startTime: now - 240000,
endTime: now - 180000
},
{
id: 'job_005',
type: 'map',
status: 'failed',
workerId: 'worker_008',
createdAt: now - 600000,
startTime: now - 540000,
endTime: now - 480000
}
],
resourceUsage: {
cpuUsage: 68.3,
memoryUsage: 45.7,
networkUsage: 23.1
},
loadDistribution: {
workers: [
{ id: 1, jobsProcessed: 127 },
{ id: 2, jobsProcessed: 134 },
{ id: 3, jobsProcessed: 156 },
{ id: 4, jobsProcessed: 98 },
{ id: 5, jobsProcessed: 145 },
{ id: 6, jobsProcessed: 112 },
{ id: 7, jobsProcessed: 87 },
{ id: 8, jobsProcessed: 23 }
]
},
analytics: {
efficiency: 92.3,
errorRate: 0.96,
avgQueueTime: 45.2,
workerUtilization: 75.8,
recommendations: [
{
title: 'Optimize Worker 8',
description: 'Worker 8 shows high error rate. Consider restarting or reassigning tasks.',
priority: 'high'
},
{
title: 'Scale Up Recommendation',
description: 'Current throughput suggests adding 2 more workers would improve performance by 25%.',
priority: 'medium'
},
{
title: 'Queue Management',
description: 'Consider implementing priority queuing for better job distribution.',
priority: 'low'
}
]
}
}
};
}
// Generate fresh mock data
let mockData = generateMockData();
// Refresh mock data periodically to simulate real-time updates
setInterval(() => {
mockData = generateMockData();
}, 30000);
// ===== BUSINESS INTELLIGENCE API ENDPOINTS =====
// BI Summary endpoint
app.get('/api/bi/summary', (req, res) => {
res.json(mockData.bi.summary);
});
// KPIs endpoint
app.get('/api/bi/kpis', (req, res) => {
res.json(mockData.bi.kpis);
});
// Performance metrics endpoint
app.get('/api/bi/performance-metrics', (req, res) => {
res.json(mockData.bi.performanceMetrics);
});
// Data mining results endpoint
app.get('/api/bi/data-mining-results', (req, res) => {
res.json(mockData.bi.dataMiningResults);
});
// BI Reports endpoint
app.get('/api/bi/reports', (req, res) => {
res.json(mockData.bi.reports);
});
// Correlations endpoint
app.get('/api/bi/correlations', (req, res) => {
res.json(mockData.bi.correlations);
});
// AI Insights endpoint
app.get('/api/bi/insights', (req, res) => {
res.json(mockData.bi.insights);
});
// ===== DISTRIBUTED COMPUTING API ENDPOINTS =====
// System status endpoint
app.get('/api/distributed/status', (req, res) => {
res.json(mockData.distributed.status);
});
// Workers endpoint
app.get('/api/distributed/workers', (req, res) => {
res.json(mockData.distributed.workers);
});
// Performance history endpoint
app.get('/api/distributed/performance-history', (req, res) => {
res.json(mockData.distributed.performanceHistory);
});
// Jobs endpoint
app.get('/api/distributed/jobs', (req, res) => {
res.json(mockData.distributed.jobs);
});
// Resource usage endpoint
app.get('/api/distributed/resource-usage', (req, res) => {
res.json(mockData.distributed.resourceUsage);
});
// Load distribution endpoint
app.get('/api/distributed/load-distribution', (req, res) => {
res.json(mockData.distributed.loadDistribution);
});
// System analytics endpoint
app.get('/api/distributed/analytics', (req, res) => {
res.json(mockData.distributed.analytics);
});
// ===== CONTROL ENDPOINTS =====
// Start all workers
app.post('/api/distributed/workers/start', (req, res) => {
// Simulate starting workers
mockData.distributed.workers.forEach(worker => {
if (worker.status === 'idle' || worker.status === 'error') {
worker.status = 'active';
}
});
mockData.distributed.status.activeWorkers = mockData.distributed.workers
.filter(w => w.status === 'active' || w.status === 'busy').length;
res.json({ success: true, message: 'All workers started' });
});
// Stop all workers
app.post('/api/distributed/workers/stop', (req, res) => {
// Simulate stopping workers
mockData.distributed.workers.forEach(worker => {
if (worker.status === 'active') {
worker.status = 'idle';
worker.currentJobs = 0;
}
});
mockData.distributed.status.activeWorkers = 0;
mockData.distributed.status.runningJobs = 0;
res.json({ success: true, message: 'All workers stopped' });
});
// Run test job
app.post('/api/distributed/test-job', (req, res) => {
const newJob = {
id: `job_test_${Date.now()}`,
type: req.body.type || 'map',
status: 'pending',
createdAt: Date.now(),
description: req.body.options?.description || 'Test job'
};
mockData.distributed.jobs.unshift(newJob);
mockData.distributed.status.queuedJobs++;
res.json({ success: true, jobId: newJob.id });
});
// Clear completed jobs
app.post('/api/distributed/jobs/clear-completed', (req, res) => {
const beforeCount = mockData.distributed.jobs.length;
mockData.distributed.jobs = mockData.distributed.jobs
.filter(job => job.status !== 'completed' && job.status !== 'failed');
const afterCount = mockData.distributed.jobs.length;
res.json({
success: true,
message: `Cleared ${beforeCount - afterCount} completed jobs`
});
});
// Optimize system
app.post('/api/distributed/optimize', (req, res) => {
// Simulate optimization
mockData.distributed.analytics.efficiency = Math.min(98, mockData.distributed.analytics.efficiency + 2);
mockData.distributed.analytics.errorRate = Math.max(0.1, mockData.distributed.analytics.errorRate - 0.1);
res.json({
success: true,
message: 'System optimization completed',
improvements: {
efficiency: '+2%',
errorRate: '-0.1%'
}
});
});
// ===== STATIC FILE SERVING =====
// Serve BI Dashboard
app.get('/bi-dashboard', (req, res) => {
res.sendFile(path.join(__dirname, 'bi-dashboard.html'));
});
// Serve Distributed Computing Dashboard
app.get('/distributed-dashboard', (req, res) => {
res.sendFile(path.join(__dirname, 'distributed-dashboard.html'));
});
// Main dashboard with links to both
app.get('/', (req, res) => {
res.send(`
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>BigBaseAlpha - Enterprise Dashboards</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
margin: 0;
padding: 40px;
color: #333;
}
.container {
max-width: 1200px;
margin: 0 auto;
text-align: center;
}
h1 {
color: white;
font-size: 3rem;
margin-bottom: 20px;
text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
}
.subtitle {
color: rgba(255,255,255,0.9);
font-size: 1.2rem;
margin-bottom: 50px;
}
.dashboard-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
gap: 30px;
margin: 40px 0;
}
.dashboard-card {
background: rgba(255,255,255,0.95);
backdrop-filter: blur(10px);
border-radius: 20px;
padding: 40px;
box-shadow: 0 20px 40px rgba(0,0,0,0.1);
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.dashboard-card:hover {
transform: translateY(-10px);
box-shadow: 0 30px 60px rgba(0,0,0,0.2);
}
.dashboard-icon {
font-size: 4rem;
margin-bottom: 20px;
}
.dashboard-title {
font-size: 1.5rem;
font-weight: 600;
margin-bottom: 15px;
color: #333;
}
.dashboard-description {
color: #666;
margin-bottom: 25px;
line-height: 1.6;
}
.dashboard-link {
display: inline-block;
background: linear-gradient(135deg, #667eea, #764ba2);
color: white;
text-decoration: none;
padding: 15px 30px;
border-radius: 25px;
font-weight: 500;
transition: all 0.3s ease;
box-shadow: 0 5px 15px rgba(102, 126, 234, 0.3);
}
.dashboard-link:hover {
transform: translateY(-2px);
box-shadow: 0 8px 25px rgba(102, 126, 234, 0.4);
text-decoration: none;
color: white;
}
.api-info {
background: rgba(255,255,255,0.95);
backdrop-filter: blur(10px);
border-radius: 20px;
padding: 30px;
margin-top: 40px;
text-align: left;
}
.api-endpoint {
background: #f8f9fa;
padding: 10px 15px;
border-radius: 8px;
margin: 5px 0;
font-family: 'Monaco', 'Menlo', monospace;
font-size: 0.9rem;
border-left: 3px solid #667eea;
}
</style>
</head>
<body>
<div class="container">
<h1>š BigBaseAlpha</h1>
<p class="subtitle">Enterprise-Grade Database with Advanced Analytics & Distributed Computing</p>
<div class="dashboard-grid">
<div class="dashboard-card">
<div class="dashboard-icon">š§ </div>
<div class="dashboard-title">Business Intelligence</div>
<div class="dashboard-description">
Advanced analytics dashboard with KPIs, AI insights, data mining results,
and predictive analytics for business intelligence.
</div>
<a href="/bi-dashboard" class="dashboard-link">Open BI Dashboard</a>
</div>
<div class="dashboard-card">
<div class="dashboard-icon">ā”</div>
<div class="dashboard-title">Distributed Computing</div>
<div class="dashboard-description">
Real-time monitoring and control of distributed computing systems,
worker pools, job queues, and performance analytics.
</div>
<a href="/distributed-dashboard" class="dashboard-link">Open Computing Dashboard</a>
</div>
</div>
<div class="api-info">
<h3>š Available API Endpoints</h3>
<p><strong>Business Intelligence:</strong></p>
<div class="api-endpoint">GET /api/bi/summary - BI overview statistics</div>
<div class="api-endpoint">GET /api/bi/kpis - Key Performance Indicators</div>
<div class="api-endpoint">GET /api/bi/insights - AI-generated insights</div>
<div class="api-endpoint">GET /api/bi/reports - Business intelligence reports</div>
<p><strong>Distributed Computing:</strong></p>
<div class="api-endpoint">GET /api/distributed/status - System status overview</div>
<div class="api-endpoint">GET /api/distributed/workers - Worker pool status</div>
<div class="api-endpoint">GET /api/distributed/jobs - Job queue and history</div>
<div class="api-endpoint">POST /api/distributed/workers/start - Start all workers</div>
<div class="api-endpoint">POST /api/distributed/test-job - Run test job</div>
</div>
</div>
</body>
</html>
`);
});
// ===== ERROR HANDLING =====
app.use((err, req, res, next) => {
console.error('Server error:', err);
res.status(500).json({
error: 'Internal server error',
message: err.message
});
});
// 404 handler
app.use((req, res) => {
res.status(404).json({
error: 'Not found',
message: `Endpoint ${req.method} ${req.path} not found`
});
});
// Start server
app.listen(PORT, () => {
console.log(`\nš BigBaseAlpha Dashboard Server running on http://localhost:${PORT}`);
console.log(`š Business Intelligence Dashboard: http://localhost:${PORT}/bi-dashboard`);
console.log(`ā” Distributed Computing Dashboard: http://localhost:${PORT}/distributed-dashboard`);
console.log(`š API Documentation: http://localhost:${PORT}/`);
console.log(`\nš” API Endpoints:`);
console.log(` ⢠BI Summary: http://localhost:${PORT}/api/bi/summary`);
console.log(` ⢠System Status: http://localhost:${PORT}/api/distributed/status`);
console.log(` ⢠Workers: http://localhost:${PORT}/api/distributed/workers`);
});
export default app;