--- title: 42CodeRunner Backend emoji: 馃殌 colorFrom: blue colorTo: indigo sdk: docker sdk_version: latest app_file: app.py pinned: false --- # 42CodeRunner - Backend Este es el backend para 42CodeRunner, un servicio que permite compilar y ejecutar c贸digo C de forma segura a trav茅s de una API REST. ## Requisitos - Python 3.8+ - GCC (para compilar c贸digo C) - Docker (opcional, para ejecutar en contenedor) ## Instalaci贸n ### Instalaci贸n local ```bash # Clonar el repositorio git clone https://github.com/yourusername/42CodeRunner.git cd 42CodeRunner/backend # Crear entorno virtual (opcional pero recomendado) python -m venv venv # Activar entorno virtual # En Windows venv\Scripts\activate # En Linux/Mac # source venv/bin/activate # Instalar dependencias pip install -r requirements.txt # Ejecutar el servidor python app.py ``` El servidor estar谩 disponible en http://localhost:5000 ### Instalaci贸n con Docker ```bash # Construir la imagen docker build -t 42coderunner-backend . # Ejecutar el contenedor docker run -p 5000:5000 42coderunner-backend ``` ## API ### Ejecutar c贸digo C **Endpoint:** `POST /api/execute` **Cuerpo de la solicitud:** ```json { "code": "#include \n\nint main() {\n printf(\"Hello, World!\\n\");\n return 0;\n}" } ``` **Respuesta exitosa:** ```json { "success": true, "output": "Hello, World!\n", "error": "", "execution_time": 0.023 } ``` **Respuesta con error:** ```json { "success": false, "error": "main.c:3:5: error: expected ';' before 'printf'" } ``` ### Verificar estado del servicio **Endpoint:** `GET /api/health` **Respuesta:** ```json { "status": "ok" } ``` ## Seguridad El servicio implementa las siguientes medidas de seguridad: 1. L铆mite de tiempo de ejecuci贸n (5 segundos por defecto) 2. Ejecuci贸n en archivos temporales con nombres aleatorios 3. Limpieza autom谩tica de archivos temporales ## Despliegue en Hugging Face Para desplegar este servicio en Hugging Face Spaces: 1. Crea un nuevo Space en Hugging Face 2. Selecciona Docker como tipo de espacio 3. Sube los archivos del backend (incluyendo el Dockerfile) 4. Configura el espacio para exponer el puerto 5000 ## Licencia MIT