Files
openccb/README.md
T

3.8 KiB

OpenCCB: Open Comprehensive Course Backbone

OpenCCB es una infraestructura de código abierto para plataformas de gestión de aprendizaje y contenido (LMS/CMS), construida con rendimiento, seguridad y escalabilidad en mente.

🚀 Estado del Proyecto

El sistema se encuentra en una fase madura (Phase 5 completada), con una API robusta para la gestión de cursos, autenticación segura y análisis de datos.

Consulta el archivo ROADMAP.md para ver el desglose detallado de funcionalidades.

🛠 Stack Tecnológico

  • Core: Rust (Edition 2024)
  • API Framework: Axum
  • Base de Datos: PostgreSQL (con sqlx)
  • Autenticación: JWT + RBAC (Roles: Admin, Instructor, Student)
  • Infraestructura: Docker & Docker Compose

🔌 API Reference (CMS Service)

El servicio CMS expone una API RESTful en el puerto 3001. A continuación se detallan los contratos de los endpoints principales.

🔐 Autenticación

Registrar Usuario

  • URL: POST /auth/register
  • Descripción: Crea una nueva cuenta de usuario.
  • Body (JSON):
    {
      "email": "string (email format)",
      "password": "string (min 8 chars)",
      "role": "string ('instructor' | 'student')",
      "organization_name": "string (optional)"
    }
    

Iniciar Sesión

  • URL: POST /auth/login
  • Descripción: Autentica un usuario y devuelve un token JWT.
  • Body (JSON):
    {
      "email": "string",
      "password": "string"
    }
    

📚 Gestión de Cursos

Listar Cursos

  • URL: GET /courses
  • Descripción: Obtiene la lista de cursos visibles para el usuario.

Crear Curso

  • URL: POST /courses
  • Descripción: Inicializa un nuevo curso.
  • Body (JSON):
    {
      "title": "string",
      "description": "string (optional)",
      "passing_percentage": "integer (0-100, default: 70)"
    }
    

Actualizar Curso

  • URL: PUT /courses/{id}
  • Descripción: Modifica metadatos del curso.
  • Body (JSON):
    {
      "title": "string",
      "description": "string",
      "passing_percentage": "integer",
      "certificate_template": "string (HTML content)"
    }
    

Publicar Curso

  • URL: POST /courses/{id}/publish
  • Descripción: Sincroniza el curso y su contenido con el servicio LMS.
  • Body: {} (Vacío)

📦 Contenido (Módulos y Lecciones)

Crear Módulo

  • URL: POST /modules
  • Body (JSON):
    {
      "course_id": "uuid",
      "title": "string",
      "order_index": "integer"
    }
    

Crear Lección

  • URL: POST /lessons
  • Body (JSON):
    {
      "module_id": "uuid",
      "title": "string",
      "content_type": "string ('video' | 'article' | 'quiz')",
      "max_attempts": "integer (optional, null = unlimited)",
      "allow_retry": "boolean (default: true)"
    }
    

Actualizar Lección

  • URL: PUT /lessons/{id}
  • Body (JSON):
    {
      "title": "string",
      "content_blocks": "array (JSON objects)",
      "max_attempts": "integer",
      "allow_retry": "boolean"
    }
    

Transcripción AI (Simulado)

  • URL: POST /lessons/{id}/transcribe
  • Descripción: Inicia el proceso de generación de subtítulos/resumen.
  • Body: {} (Vacío)

📂 Sistema & Assets

Subir Archivo

  • URL: POST /assets/upload
  • Tipo: multipart/form-data
  • Campo: file (Binary)

Logs de Auditoría

  • URL: GET /audit-logs
  • Query Params: ?page=1&limit=50

📦 Configuración y Ejecución

  1. Variables de Entorno: Asegúrate de tener configurado DATABASE_URL en tu archivo .env.

  2. Base de Datos: El sistema utiliza migraciones automáticas de sqlx al iniciar.

  3. Ejecutar Servicio:

    cargo run --bin cms-service
    

    O mediante Docker:

    docker-compose up --build