MargeCode42 / README.md
ancerlop's picture
README.md en la ra铆z de tu proyecto backend con la configuraci贸n YAML correcta
b0bca3f verified
metadata
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

# 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

# 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:

{
  "code": "#include <stdio.h>\n\nint main() {\n    printf(\"Hello, World!\\n\");\n    return 0;\n}"
}

Respuesta exitosa:

{
  "success": true,
  "output": "Hello, World!\n",
  "error": "",
  "execution_time": 0.023
}

Respuesta con error:

{
  "success": false,
  "error": "main.c:3:5: error: expected ';' before 'printf'"
}

Verificar estado del servicio

Endpoint: GET /api/health

Respuesta:

{
  "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