Spaces:
Runtime error
Runtime error
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 <stdio.h>\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 |