Team Ai
Apppublic

Ratankumar10/code-execution-engine

sourceHugging Faceupdated 8mo agoView on Hugging Face
0likes
index.js69 linesDownload Raw Back to src
1require("dotenv").config();2 3const app = require("./app");4const config = require("./config");5const logger = require("./utils/logger.util");6const { ensureDir } = require("./utils/file.util");7const { verifyDocker, buildSandboxImage } = require("./utils/docker.util");8 9async function bootstrap() {10  logger.info("═══════════════════════════════════════════════");11  logger.info("  🚀 Code Execution Engine — Starting...");12  logger.info("═══════════════════════════════════════════════");13 14  // Step 1: Verify Docker is available15  await verifyDocker();16 17  // Step 2: Build sandbox image if needed18  await buildSandboxImage();19 20  // Step 3: Ensure temp directory exists21  await ensureDir(config.TEMP_DIR);22 23  // Step 4: Start HTTP server24  app.listen(config.PORT, "0.0.0.0", () => {25    logger.info("───────────────────────────────────────────────");26    logger.info(`  ✅ Server running on http://0.0.0.0:${config.PORT}`);27    logger.info(`  📋 Environment:    ${config.NODE_ENV}`);28    logger.info(`  🐳 Sandbox image:  ${config.SANDBOX_IMAGE}`);29    logger.info(`  ⚡ Max concurrent: ${config.MAX_CONCURRENT}`);30    logger.info(`  🔒 Memory limit:   ${config.MAX_MEMORY_LIMIT}MB`);31    logger.info(`  ⏱️  Time limit:     ${config.MAX_TIME_LIMIT}s`);32    logger.info(`  🌐 Languages:      C, C++, Python`);33    logger.info("───────────────────────────────────────────────");34    logger.info("  API Endpoints:");35    logger.info("    GET  /api/health      → Health check");36    logger.info("    GET  /api/languages   → Supported languages");37    logger.info("    POST /api/execute     → Run code");38    logger.info("    POST /api/judge       → Judge with test cases");39    logger.info("    POST /api/batch-judge → Batch judge");40    logger.info("═══════════════════════════════════════════════");41  });42}43 44// Graceful shutdown45process.on("SIGTERM", () => {46  logger.info("🛑 SIGTERM received. Shutting down...");47  process.exit(0);48});49 50process.on("SIGINT", () => {51  logger.info("🛑 SIGINT received. Shutting down...");52  process.exit(0);53});54 55process.on("uncaughtException", (err) => {56  logger.error("Uncaught Exception:", err.message);57  process.exit(1);58});59 60process.on("unhandledRejection", (reason) => {61  logger.error("Unhandled Rejection:", reason);62  process.exit(1);63});64 65bootstrap().catch((err) => {66  logger.error("❌ Failed to start server:", err.message);67  process.exit(1);68});69