Descubre el diseño modular y extensible que hace de Kursor una plataforma única
Kursor está construido siguiendo principios de arquitectura limpia y diseño modular:
Interfaz gráfica desarrollada con JavaFX que proporciona una experiencia de usuario moderna e intuitiva.
KursorApplication.java
- Aplicación principalCursoSessionManager.java
- Gestión de sesionesCursoDialog.java
- Diálogos modalesEstadisticasDialog.java
- Visualización de estadísticasOrquesta la lógica de negocio y coordina las operaciones entre las diferentes capas.
CursoPreviewService.java
- Vista previa de cursosCursoManager.java
- Gestión de cursosModuleManager.java
- Gestión de módulosPreguntaFactory.java
- Creación de preguntasContiene las entidades principales y la lógica de negocio del sistema de aprendizaje.
Curso.java
- Entidad principal del cursoBloque.java
- Agrupación de preguntasPregunta.java
- Pregunta baseSesion.java
- Sesión de aprendizajeGestiona el almacenamiento y recuperación de datos utilizando JPA/Hibernate con SQLite.
SQLiteDialect.java
- Dialecto para SQLitepersistence.xml
- Configuración JPAUtilizado para crear diferentes tipos de preguntas de manera uniforme, permitiendo la extensibilidad del sistema.
public class PreguntaFactory {
public static Pregunta crearPregunta(String tipo, Map<String, Object> datos) {
// Lógica para crear preguntas según el tipo
}
}
Implementado para las estrategias de aprendizaje, permitiendo cambiar el comportamiento de la presentación de preguntas.
EstrategiaSecuencial.java
EstrategiaAleatoria.java
EstrategiaRepeticionEspaciada.java
Utilizado para construir objetos complejos como cursos de manera fluida y legible.
CursoBuilder.java
- Construcción de cursosKursor utiliza un sistema modular basado en el patrón Service Provider Interface (SPI) de Java, permitiendo la extensión dinámica de tipos de preguntas.
Module.java
- Interfaz principalPregunta.java
- Implementación específicaservices/
- Registro SPIpom.xml
- Dependenciaspublic interface PreguntaModule {
String getTipo();
Pregunta crearPregunta(Map<String, Object> datos);
boolean validarPregunta(Pregunta pregunta);
ComponenteUI crearComponenteUI(Pregunta pregunta);
}
El modelo de dominio de Kursor representa las entidades principales del sistema de aprendizaje interactivo:
id: curso_ejemplo
titulo: "Curso de Ejemplo Completo"
descripcion: "Un curso que demuestra todas las capacidades"
bloques:
- id: bloque_flashcards
titulo: "Flashcards de Vocabulario"
descripcion: "Aprende vocabulario básico"
tipo: "flashcard"
preguntas:
- pregunta: "¿Qué significa 'Hello'?"
respuesta: "Hola"
metadatos:
categoria: "saludos"
dificultad: "facil"
- id: bloque_multiple
titulo: "Preguntas de Opción Múltiple"
descripcion: "Elige la respuesta correcta"
tipo: "multiplechoice"
preguntas:
- pregunta: "¿Cuál es la capital de España?"
opciones:
- "Madrid"
- "Barcelona"
- "Valencia"
- "Sevilla"
respuesta_correcta: 0
explicacion: "Madrid es la capital de España desde 1561"
- id: bloque_huecos
titulo: "Completar Huecos"
descripcion: "Rellena los espacios en blanco"
tipo: "fillblanks"
preguntas:
- texto: "La capital de España es ___."
huecos:
- respuesta: "Madrid"
alternativas: ["Madrid", "madrid"]
- id: bloque_truefalse
titulo: "Verdadero o Falso"
descripcion: "Determina si es verdadero o falso"
tipo: "truefalse"
preguntas:
- pregunta: "Madrid es la capital de España."
respuesta: true
explicacion: "Madrid es efectivamente la capital de España"
La persistencia de Kursor está prácticamente completa con JPA + SQLite, solo falta el EstrategiaStateManager.
Sistema robusto con JPA/Hibernate + SQLite completamente implementado y probado.
Kursor está diseñado para ser altamente extensible. Aquí te mostramos cómo crear un nuevo módulo:
public class MiNuevoModule implements PreguntaModule {
@Override
public String getTipo() {
return "mi_nuevo_tipo";
}
@Override
public Pregunta crearPregunta(Map<String, Object> datos) {
// Implementar lógica de creación
return new MiNuevaPregunta(datos);
}
}
# META-INF/services/com.kursor.modules.PreguntaModule
com.kursor.mimodulo.MiNuevoModule
Únete al desarrollo de Kursor y ayuda a mejorar la plataforma