feat: web admin panel + better-sqlite3 migration + Docker fixes
- Added Express.js admin panel on port 3001 (ADMIN_PORT env) - Dashboard: stats (users, products, purchases, revenue) - Users: list, details, ban/unban toggle - Products: CRUD by category - Wallets: list with balances - Purchases: history with filters - Audit log: view audit trail - Auth: token-based login with ADMIN_SECRET env var - Migrated sqlite3 → better-sqlite3 - database.js: async adapter (runAsync/allAsync/getAsync) - purchaseService.js: lastID → lastInsertRowid - userService.js: lastID → lastInsertRowid - Removed sqlite3 from package.json - Fixed: dotenv/config import added to index.js - Fixed: ENCRYPTION_KEY validation (32+ char hex) - Fixed: Dockerfile multi-stage build (no python needed) - Fixed: Docker DNS (network: host in build) - Fixed: docker-compose port 3001, healthcheck on 3001 - Added express, cookie-parser, pino-pretty, better-sqlite3 deps
This commit is contained in:
17
src/index.js
17
src/index.js
@@ -1,3 +1,4 @@
|
||||
import 'dotenv/config';
|
||||
import { runMigrations, cleanUpInvalidForeignKeys } from './migrations/runner.js';
|
||||
import './router/routes.js';
|
||||
import bot from './context/bot.js';
|
||||
@@ -71,17 +72,5 @@ process.on('unhandledRejection', (error) => {
|
||||
|
||||
logger.info('Bot is running...');
|
||||
|
||||
// Health check endpoint for Docker
|
||||
import http from 'http';
|
||||
const healthServer = http.createServer((req, res) => {
|
||||
if (req.url === '/health') {
|
||||
res.writeHead(200, { 'Content-Type': 'application/json' });
|
||||
res.end(JSON.stringify({ status: 'ok', uptime: process.uptime() }));
|
||||
} else {
|
||||
res.writeHead(404);
|
||||
res.end('Not found');
|
||||
}
|
||||
});
|
||||
healthServer.listen(3000, () => {
|
||||
logger.info({ port: 3000 }, 'Health check server started');
|
||||
});
|
||||
import { startAdminPanel } from './admin/server.js';
|
||||
startAdminPanel();
|
||||
|
||||
Reference in New Issue
Block a user