PROMPT MAESTRO — PLATAFORMA EDUCATIVA PHP + MYSQL

 

PROMPT MAESTRO — PLATAFORMA EDUCATIVA PHP + MYSQL

Quiero desarrollar desde cero una plataforma educativa web en PHP + MySQL, inicialmente sencilla y minimalista, pero con una arquitectura correctamente diseñada para poder crecer posteriormente.

La plataforma comenzará como un blog educativo, pero debe estar preparada para convertirse posteriormente en una plataforma de aprendizaje interactivo con:

  • Blog educativo.

  • Temas.

  • Subtemas.

  • Contenido educativo.

  • Imágenes.

  • Videos.

  • Preguntas.

  • Respuestas.

  • Exámenes.

  • Flashcards.

  • Quiz Visual.

  • Memorama.

  • Registro de resultados.

  • Estadísticas.

  • Y posteriormente una IA educativa.

La primera versión NO debe implementar IA.

La prioridad es construir una base sólida, sencilla, modular y fácil de entender.


1. FILOSOFÍA DEL PROYECTO

El proyecto debe ser:

  • Minimalista.

  • Funcional.

  • Fácil de mantener.

  • Fácil de modificar.

  • Fácil de ampliar.

  • Bien organizado.

  • Seguro.

  • Sin frameworks innecesarios.

  • Sin diseño visual complejo.

No quiero que se pierda tiempo creando un diseño bonito.

Quiero que primero funcione correctamente.

El CSS debe limitarse a lo estrictamente necesario para:

  • estructura;

  • formularios;

  • tablas;

  • botones;

  • navegación;

  • tarjetas;

  • actividades;

  • distribución;

  • responsive básico.

NO utilizar:

  • Bootstrap.

  • Tailwind.

  • Materialize.

  • Foundation.

  • Frameworks CSS.

  • Plantillas administrativas.

  • Librerías visuales externas.

Utilizar CSS propio y mínimo.

Posteriormente se podrá crear un diseño visual completamente diferente sin tener que modificar la lógica de la aplicación.


2. TECNOLOGÍAS

Utilizar:

  • PHP 8+

  • MySQL 8+

  • PDO

  • HTML5

  • CSS3

  • JavaScript Vanilla

No utilizar:

  • Laravel.

  • Symfony.

  • CodeIgniter.

  • WordPress.

  • ORM.

  • Frameworks PHP.

La conexión a MySQL debe utilizar PDO.

Todas las consultas que reciban datos externos deben utilizar consultas preparadas.


3. ARQUITECTURA

Utilizar una arquitectura modular sencilla.

Propuesta:

/blog-educativo

/admin
    /index.php

    /temas
    /subtemas
    /contenidos
    /multimedia
    /preguntas
    /flashcards
    /examenes
    /usuarios

/config

/controllers

/models

/views

/includes

/assets
    /css
    /js

/uploads
    /imagenes
    /videos

/public

/actividades

    /examenes
    /flashcards
    /quiz-visual
    /memorama

/index.php

La estructura puede modificarse si existe una alternativa técnicamente mejor.

Explicar primero la arquitectura propuesta antes de generar todo el código.


4. BASE DE DATOS

Crear:

database.sql

que genere toda la base de datos.

Nombre:

blog_educativo

La base de datos debe utilizar:

  • InnoDB.

  • UTF8MB4.

  • Claves primarias.

  • Claves foráneas.

  • Índices.

  • Timestamps cuando sean necesarios.

No crear una tabla diferente para cada tema.

NO crear:

matematicas
espanol
historia

como tablas.

Debe existir una sola tabla:

temas

Y otra:

subtemas

relacionadas mediante claves foráneas.


5. TABLA USUARIOS

Crear:

usuarios

Campos:

  • id

  • nombre

  • email

  • password

  • rol

  • activo

  • fecha_creacion

  • fecha_actualizacion

El campo rol puede utilizar inicialmente:

admin

y posteriormente:

alumno

profesor

etc.

Las contraseñas deben utilizar:

password_hash()

y:

password_verify()

Nunca guardar contraseñas en texto plano.


6. TABLA TEMAS

Crear:

temas

Campos:

  • id

  • nombre

  • slug

  • descripcion

  • imagen_id

  • activo

  • fecha_creacion

  • fecha_actualizacion

Ejemplo:

Matemáticas

Español

Historia

Inglés

Ciencias

Programación


7. TABLA SUBTEMAS

Crear:

subtemas

Campos:

  • id

  • tema_id

  • nombre

  • slug

  • descripcion

  • imagen_id

  • activo

  • fecha_creacion

  • fecha_actualizacion

Relación:

temas.id

subtemas.tema_id

Un tema puede tener muchos subtemas.

Ejemplo:

MATEMÁTICAS

Fracciones
Decimales
Porcentajes
Ecuaciones
Geometría

8. CONTENIDOS

Crear:

contenidos

Campos:

  • id

  • tema_id

  • subtema_id

  • titulo

  • slug

  • resumen

  • contenido

  • imagen_destacada_id

  • orden

  • activo

  • fecha_creacion

  • fecha_actualizacion

Reglas:

Todo contenido pertenece obligatoriamente a un tema.

El subtema puede ser NULL.

Ejemplo:

Tema:

Matemáticas

Subtema:

Fracciones

Contenido:

"Fracciones equivalentes"


9. MULTIMEDIA

Crear una biblioteca central de multimedia.

Tabla:

multimedia

Campos:

  • id

  • tema_id

  • subtema_id

  • contenido_id

  • tipo

  • nombre_original

  • nombre_archivo

  • ruta

  • extension

  • mime_type

  • tamaño

  • titulo

  • descripcion

  • alt_text

  • orden

  • activo

  • fecha_creacion

El campo:

tipo

podrá contener inicialmente:

imagen

video


10. IMPORTANTE — REUTILIZACIÓN DE MULTIMEDIA

Las imágenes y videos deben poder reutilizarse.

Una imagen subida una sola vez debe poder utilizarse en:

  • contenido;

  • Flashcard;

  • Quiz Visual;

  • Memorama;

  • imagen destacada;

  • posteriormente otras actividades.

NO crear copias físicas innecesarias.

Ejemplo:

Una imagen:

perro.jpg

puede utilizarse en:

Contenido: "Los mamíferos"

Flashcard: "Dog"

Quiz Visual: "¿Qué animal aparece?"

Memorama: "Animales"


11. SUBIDA DE IMÁGENES Y VIDEOS

Crear un administrador de multimedia.

Permitir:

  • subir imagen;

  • subir video;

  • seleccionar tema;

  • seleccionar subtema;

  • opcionalmente asociarlo a un contenido.

Guardar físicamente:

/uploads/imagenes/

/uploads/videos/

En MySQL guardar únicamente los metadatos.

Nunca utilizar directamente el nombre original como nombre físico.

Generar nombres únicos.

Ejemplo:

20260811_a83k91.jpg


12. SEGURIDAD DE ARCHIVOS

Validar:

  • extensión;

  • MIME;

  • tamaño;

  • nombre;

  • directorio de destino.

No permitir que dentro de uploads puedan ejecutarse archivos PHP.

Crear medidas mediante:

.htaccess

o configuración equivalente del servidor.


13. PREGUNTAS

Crear:

preguntas

Campos:

  • id

  • tema_id

  • subtema_id

  • multimedia_id

  • tipo

  • pregunta

  • explicacion

  • dificultad

  • activo

  • fecha_creacion

  • fecha_actualizacion

Relaciones:

tema_id → temas.id

subtema_id → subtemas.id

multimedia_id → multimedia.id

Los últimos dos pueden ser NULL.


14. TIPOS DE PREGUNTAS

El campo:

tipo

debe permitir inicialmente:

multiple_choice

visual

Pero diseñar el sistema para posteriormente poder agregar:

verdadero_falso

respuesta_abierta

ordenar

relacionar

completar

etc.

No implementar esos tipos todavía.


15. PREGUNTAS NORMALES

Ejemplo:

Tema:

Matemáticas

Subtema:

Multiplicación

Pregunta:

¿Cuánto es 5 × 5?


16. PREGUNTAS VISUALES

Si:

preguntas.multimedia_id

contiene una imagen, la pregunta puede utilizarse como:

Quiz Visual.

Ejemplo:

Imagen:

[foto de un animal]

Pregunta:

¿Qué animal aparece en la imagen?

Las respuestas se obtienen de la tabla:

respuestas


17. TABLA RESPUESTAS

Crear:

respuestas

Campos:

  • id

  • pregunta_id

  • respuesta

  • es_correcta

  • orden

  • activo

  • fecha_creacion

Relación:

preguntas.id

respuestas.pregunta_id

Una pregunta puede tener cualquier número de respuestas.

Por ejemplo:

2
3
4
5
6
etc.

No limitar la tabla a cuatro respuestas.


18. CREACIÓN DINÁMICA DE RESPUESTAS

En el administrador:

/admin/preguntas/

crear:

Crear pregunta

Debe permitir:

  • seleccionar tema;

  • seleccionar subtema;

  • seleccionar tipo;

  • seleccionar dificultad;

  • seleccionar imagen opcional;

  • escribir pregunta;

  • escribir explicación;

  • agregar respuestas dinámicamente.

Botón:

  • Agregar respuesta

JavaScript debe permitir agregar y eliminar respuestas sin recargar la página.

Ejemplo:

Pregunta:

¿Cuánto es 5 × 5?

[ 25 ] [✓ Correcta] [Eliminar]

[ 20 ] [Incorrecta] [Eliminar]

[ 30 ] [Incorrecta] [Eliminar]

[ 15 ] [Incorrecta] [Eliminar]

[ + Agregar respuesta ]


19. VALIDACIÓN DE RESPUESTAS

Para una pregunta de opción múltiple:

  • mínimo 2 respuestas;

  • exactamente 1 correcta.

No permitir guardar:

  • ninguna respuesta;

  • una sola respuesta;

  • ninguna correcta;

  • varias correctas.

Validar en:

JavaScript

Y obligatoriamente también en:

PHP

Nunca confiar únicamente en JavaScript.


20. EXÁMENES

Crear:

examenes

Campos:

  • id

  • titulo

  • descripcion

  • tema_id

  • subtema_id

  • numero_preguntas

  • numero_opciones

  • activo

  • fecha_creacion

  • fecha_actualizacion


21. PREGUNTAS DEL EXAMEN

Crear:

examen_preguntas

Campos:

  • id

  • examen_id

  • pregunta_id

  • orden

Relaciones:

examenes.id

examen_preguntas.examen_id

y:

preguntas.id

examen_preguntas.pregunta_id


22. BANCO DE PREGUNTAS

Las preguntas deben funcionar como un banco reutilizable.

Una misma pregunta puede utilizarse en diferentes exámenes.

No duplicar preguntas.

Ejemplo:

Pregunta #25

"¿Cuánto es 5 × 5?"

Puede utilizarse en:

Examen 1

Examen 2

Examen de repaso

Quiz

etc.


23. GENERACIÓN ALEATORIA DE EXÁMENES

Permitir generar un examen utilizando:

  • tema;

  • subtema;

  • número de preguntas;

  • número de opciones.

Ejemplo:

Tema:

Matemáticas

Subtema:

Fracciones

Preguntas:

10

Opciones:

4

El sistema seleccionará preguntas aleatoriamente.


24. SELECCIÓN DE RESPUESTAS

Las respuestas deben salir exclusivamente de:

respuestas

Nunca inventarlas automáticamente.

Cada pregunta debe tener:

1 respuesta correcta

y varias incorrectas.


25. FUNCIÓN PARA GENERAR OPCIONES

Crear una función reutilizable:

obtenerOpcionesPregunta($preguntaId, $numeroOpciones)

Debe:

  1. Buscar respuesta correcta.

  2. Buscar respuestas incorrectas.

  3. Verificar que existan suficientes.

  4. Seleccionar aleatoriamente las incorrectas necesarias.

  5. Agregar la correcta.

  6. Mezclar las opciones.

  7. Devolverlas.

Ejemplo:

Banco:

25 correcta
20 incorrecta
30 incorrecta
15 incorrecta
35 incorrecta

Examen con 4 opciones:

A) 30
B) 25
C) 15
D) 35

Otro intento:

A) 20
B) 35
C) 25
D) 30

La correcta siempre será:

25

pero su posición cambia.


26. FLASHCARDS

Crear módulo:

/actividades/flashcards/

Las Flashcards deben poder asociarse a:

  • tema;

  • subtema;

  • imagen;

  • texto;

  • respuesta.

Crear:

flashcards

Campos:

  • id

  • tema_id

  • subtema_id

  • multimedia_id

  • frente

  • reverso

  • orden

  • activo

  • fecha_creacion

  • fecha_actualizacion


27. FUNCIONAMIENTO DE FLASHCARDS

Ejemplo:

Tema:

Inglés

Subtema:

Animales

Frente:

[Imagen de perro]

What is this?

Botón:

Mostrar respuesta

Después:

DOG

Botones:

Anterior

Siguiente

Barajar

Reiniciar


28. FLASHCARDS CON O SIN IMAGEN

Una Flashcard debe poder funcionar:

solo con texto

o:

texto + imagen

Ejemplo sin imagen:

Frente:

What is the opposite of hot?

Reverso:

Cold

Ejemplo con imagen:

[imagen]

What is this?

Dog


29. QUIZ VISUAL

Crear:

/actividades/quiz-visual/

El Quiz Visual debe utilizar preguntas existentes cuyo:

tipo = visual

y que tengan:

multimedia_id


30. FUNCIONAMIENTO DEL QUIZ VISUAL

Ejemplo:

[IMAGEN]

¿Qué animal aparece?

A) Perro
B) Gato
C) Caballo
D) León

La respuesta correcta debe provenir de:

respuestas

No crear respuestas separadas exclusivamente para Quiz Visual.


31. REUTILIZACIÓN DE PREGUNTAS

Una pregunta visual debe poder utilizarse posteriormente en:

  • Quiz Visual;

  • Examen;

  • repaso;

  • estadísticas.

No duplicar la pregunta.


32. MEMORAMA

Crear:

/actividades/memorama/

El Memorama utilizará imágenes existentes en:

multimedia

No duplicar las imágenes.


33. GENERACIÓN DEL MEMORAMA

El usuario podrá seleccionar:

Tema

Subtema

Número de parejas

Ejemplo:

Tema:

Animales

Subtema:

Animales salvajes

Parejas:

8

El sistema seleccionará 8 imágenes.

Cada imagen aparecerá exactamente 2 veces.

Ejemplo:

Imagen A
Imagen A

Imagen B
Imagen B

Imagen C
Imagen C

etc.

Después mezclar aleatoriamente todas las cartas.


34. FUNCIONAMIENTO DEL MEMORAMA

Inicialmente todas las cartas estarán ocultas.

Al hacer clic:

  1. Mostrar primera.

  2. Mostrar segunda.

  3. Comparar.

  4. Si son iguales:

    • mantener visibles.

  5. Si son diferentes:

    • esperar brevemente;

    • ocultarlas.

Mostrar:

  • movimientos;

  • parejas encontradas;

  • parejas totales;

  • tiempo;

  • botón reiniciar.

El juego debe funcionar con JavaScript Vanilla.


35. REGLA PARA EL MEMORAMA

Las imágenes utilizadas deben pertenecer al mismo:

tema

y opcionalmente:

subtema

Evitar seleccionar imágenes aleatorias de toda la plataforma.


36. ACTIVIDADES

Crear:

/actividades/

Página:

ACTIVIDADES

[ Exámenes ]

[ Flashcards ]

[ Quiz Visual ]

[ Memorama ]


37. ACTIVIDADES POR TEMA

Desde un tema:

/tema/matematicas

poder mostrar:

Contenido

Subtemas

Exámenes

Flashcards

Quiz Visual

Memorama

si existen recursos disponibles.


38. PANEL ADMINISTRATIVO

Crear:

/admin/

Menú:

Inicio

Temas

Subtemas

Contenidos

Multimedia

Preguntas

Flashcards

Exámenes

Usuarios


39. CRUD

Implementar CRUD para:

Temas

Subtemas

Contenidos

Multimedia

Preguntas

Flashcards

Exámenes

Usuarios

Operaciones:

Crear

Listar

Ver

Editar

Eliminar

Preferir eliminación lógica:

activo = 0

cuando corresponda.


40. PÁGINA PÚBLICA

Crear:

/

/temas

/tema/{slug}

/contenido/{slug}

/actividades

/actividades/examenes

/actividades/flashcards

/actividades/quiz-visual

/actividades/memorama

Utilizar URLs amigables mediante:

.htaccess


41. CONTENIDO EDUCATIVO

Los contenidos deben permitir:

  • título;

  • resumen;

  • texto;

  • imagen;

  • videos;

  • multimedia relacionada.

No instalar inicialmente un editor WYSIWYG.

Utilizar textarea.

Si se permite HTML, explicar claramente cómo sanitizarlo.


42. BIBLIOTECA DE MULTIMEDIA

Crear una pantalla:

/admin/multimedia/

que permita:

  • listar imágenes;

  • listar videos;

  • subir;

  • editar información;

  • eliminar;

  • filtrar por tema;

  • filtrar por subtema;

  • visualizar.


43. ESTRUCTURA RELACIONAL

La estructura principal debe quedar conceptualmente así:

                BLOG EDUCATIVO
                      |
    +-----------------+-----------------+
    |                                   |
  TEMAS                             MULTIMEDIA
    |                                   |
 SUBTEMAS                         imágenes/videos
    |
    +----------------+
    |                |
CONTENIDOS       PREGUNTAS
    |                |
    |             RESPUESTAS
    |
MULTIMEDIA

Y las actividades:

TEMAS
|
+---- EXÁMENES
| |
| +---- EXAMEN_PREGUNTAS
|
+---- FLASHCARDS
|
+---- QUIZ VISUAL
|
+---- MEMORAMA
|
+---- MULTIMEDIA


44. PRINCIPIO DE REUTILIZACIÓN

Este principio es MUY IMPORTANTE.

No crear información duplicada.

Ejemplo:

Una imagen de un perro se almacena una sola vez.

Esa misma imagen puede utilizarse en:

Contenido

Flashcard

Quiz Visual

Memorama

Una pregunta puede utilizarse en:

Examen

Quiz Visual

Repaso

etc.

Una respuesta pertenece a una pregunta y puede aparecer cada vez que esa pregunta sea utilizada.


45. RESULTADOS DE LOS EXÁMENES

Aunque inicialmente el sistema puede funcionar sin alumnos registrados, preparar la arquitectura para almacenar resultados.

Crear posteriormente:

intentos_examen

Campos:

  • id

  • examen_id

  • usuario_id

  • fecha_inicio

  • fecha_fin

  • calificacion

Y:

respuestas_examen

Campos:

  • id

  • intento_id

  • pregunta_id

  • respuesta_id

  • es_correcta

Esto permitirá posteriormente conocer:

  • preguntas acertadas;

  • preguntas falladas;

  • respuestas seleccionadas;

  • puntuación;

  • número de intentos;

  • tiempo.


46. PROGRESO EDUCATIVO FUTURO

Dejar preparada la arquitectura para posteriormente registrar:

  • alumno;

  • actividad;

  • tema;

  • subtema;

  • pregunta;

  • respuesta;

  • resultado;

  • tiempo;

  • puntuación;

  • intento;

  • fecha.

Esto permitirá posteriormente construir:

  • estadísticas;

  • progreso;

  • historial;

  • fortalezas;

  • debilidades;

  • recomendaciones.

NO implementar todavía un sistema avanzado de aprendizaje adaptativo.


47. FUTURA IA EDUCATIVA

IMPORTANTE:

NO IMPLEMENTAR IA EN ESTA VERSIÓN.

Solamente diseñar la plataforma pensando en una futura versión.

La IA posteriormente podría utilizar:

  • temas;

  • subtemas;

  • contenidos;

  • multimedia;

  • preguntas;

  • respuestas;

  • Flashcards;

  • resultados;

  • errores;

  • progreso.

La futura IA podría:

  • explicar conceptos;

  • responder preguntas del alumno;

  • generar ejercicios;

  • generar preguntas;

  • generar Flashcards;

  • recomendar contenidos;

  • detectar temas débiles;

  • adaptar la dificultad;

  • crear planes de estudio;

  • analizar errores;

  • proporcionar tutoría personalizada.

Pero nada de esto debe implementarse todavía.


48. PREPARACIÓN DE LA BASE PARA IA

No crear todavía:

tabla_ia

ni:

tabla_chatgpt

ni:

tabla_openai

La arquitectura debe ser independiente de cualquier proveedor de IA.

La futura IA debe poder conectarse mediante una capa independiente.

Por ejemplo:

/services/AIService.php

pero NO es necesario implementarlo todavía.


49. POSIBLE ARQUITECTURA FUTURA

Preparar conceptualmente:

            PLATAFORMA EDUCATIVA
                     |
   +-----------------+----------------+
   |                 |                |
 BLOG            ACTIVIDADES       PROGRESO
   |                 |                |
   |          +------+------+         |
   |          |      |      |         |
   |       Examen Flash Quiz       Resultados
   |               |   Visual         |
   |               |                 |
   +---------------+-----------------+
                   |
              CONTENIDO
                   |
             IA EDUCATIVA
                   |
      +------------+-------------+
      |            |             |
   Tutor        Generador     Analizador
      |          ejercicios    progreso

La IA será una segunda etapa.


50. SEGURIDAD

Implementar:

  • PDO.

  • Prepared Statements.

  • password_hash().

  • password_verify().

  • sesiones.

  • protección de rutas administrativas.

  • CSRF.

  • htmlspecialchars().

  • validación POST.

  • validación GET.

  • validación de archivos.

  • protección de uploads.

  • nombres únicos de archivos.

  • MIME validation.

  • límites de tamaño.

No confiar en JavaScript para seguridad.


51. CSS

Crear solamente:

/assets/css/style.css

El CSS debe ser pequeño.

No utilizar estilos decorativos innecesarios.

Debe proporcionar:

  • layout;

  • grid;

  • flex;

  • formularios;

  • tablas;

  • botones;

  • tarjetas;

  • navegación;

  • actividades;

  • responsive básico.

El diseño debe parecer más una aplicación funcional que una página comercial.


52. JAVASCRIPT

Utilizar JavaScript Vanilla.

Crear:

/assets/js/app.js

Y otros archivos cuando sea necesario:

flashcards.js

memorama.js

preguntas.js

examen.js

No utilizar jQuery salvo que exista una razón técnica importante.


53. MEMORAMA CON JAVASCRIPT

El JavaScript del Memorama debe controlar:

  • selección de cartas;

  • bloqueo temporal;

  • comparación;

  • parejas;

  • movimientos;

  • cronómetro;

  • reinicio;

  • finalización.

No depender del servidor para cada clic.


54. FLASHCARDS CON JAVASCRIPT

Controlar:

  • mostrar respuesta;

  • siguiente;

  • anterior;

  • barajar;

  • reiniciar.


55. EXÁMENES

El examen debe poder:

  • mostrar preguntas;

  • mostrar opciones;

  • registrar respuesta;

  • avanzar;

  • retroceder si se decide permitirlo;

  • finalizar;

  • calcular resultado.

Al finalizar:

mostrar:

Preguntas:

10

Correctas:

8

Incorrectas:

2

Calificación:

80%


56. DISEÑO DEL CÓDIGO

Separar:

MODELOS

para consultas y acceso a datos.

CONTROLADORES

para lógica.

VISTAS

para HTML.

CONFIGURACIÓN

para conexión y parámetros.

SERVICIOS

para funciones reutilizables.

Por ejemplo:

/models/Pregunta.php

/controllers/PreguntaController.php

/services/ExamenService.php

/services/FlashcardService.php

/services/MemoramaService.php


57. FUNCIONES REUTILIZABLES

Crear servicios reutilizables.

Ejemplos:

obtenerOpcionesPregunta()

obtenerPreguntasAleatorias()

obtenerMultimediaPorTema()

obtenerMultimediaPorSubtema()

generarParejasMemorama()

obtenerFlashcards()

calcularResultadoExamen()

Estas funciones deben evitar duplicar código.


58. BASE DE DATOS PRIMERO

Antes de generar PHP:

  1. Explicar el modelo relacional.

  2. Mostrar las tablas.

  3. Mostrar las relaciones.

  4. Explicar las claves foráneas.

  5. Explicar los índices.

  6. Explicar cómo se reutilizará multimedia.

  7. Explicar cómo se reutilizarán preguntas.

  8. Explicar cómo funcionará el Memorama.

  9. Explicar cómo funcionará la futura integración de IA.

Después generar:

database.sql


59. GENERACIÓN DEL PROYECTO

Generar el proyecto de forma progresiva.

PRIMERA ETAPA:

  • arquitectura;

  • base de datos;

  • database.sql;

  • conexión PDO;

  • configuración.

SEGUNDA ETAPA:

  • autenticación;

  • administración;

  • temas;

  • subtemas.

TERCERA ETAPA:

  • contenidos;

  • multimedia;

  • subida de archivos.

CUARTA ETAPA:

  • preguntas;

  • respuestas dinámicas;

  • banco de preguntas.

QUINTA ETAPA:

  • exámenes;

  • selección aleatoria;

  • calificación.

SEXTA ETAPA:

  • Flashcards.

SÉPTIMA ETAPA:

  • Quiz Visual.

OCTAVA ETAPA:

  • Memorama.

NOVENA ETAPA:

  • resultados y preparación para estadísticas.

No intentar generar absolutamente todo en un único bloque si esto provoca código incompleto.

Es preferible generar cada etapa completamente funcional antes de continuar.


60. FORMATO DE ENTREGA

Cuando generes código:

Indicar siempre el archivo.

Ejemplo:

/config/database.php

<?php

...

Después:

/models/Tema.php

<?php

...

No mezclar varios archivos en un mismo bloque.

Explicar brevemente para qué sirve cada archivo.


61. INSTALACIÓN

Crear un archivo:

README.md

con instrucciones para:

  1. Crear base de datos.

  2. Ejecutar database.sql.

  3. Configurar usuario MySQL.

  4. Configurar contraseña.

  5. Configurar host.

  6. Configurar URL.

  7. Configurar uploads.

  8. Configurar permisos.

  9. Crear usuario administrador.

  10. Iniciar el proyecto.

Debe funcionar inicialmente en:

XAMPP

Laragon

Apache + PHP + MySQL


62. DATOS DE PRUEBA

Crear opcionalmente:

database_seed.sql

con datos de prueba.

Ejemplo:

Temas:

Matemáticas

Español

Inglés

Ciencias

Subtemas:

Fracciones

Multiplicaciones

Gramática

Animales

Agregar algunas:

  • preguntas;

  • respuestas;

  • Flashcards;

  • imágenes de ejemplo mediante rutas ficticias;

  • exámenes.

No incluir archivos binarios de imágenes dentro del SQL.


63. PRUEBAS

Después de implementar cada módulo, indicar cómo probarlo.

Por ejemplo:

PRUEBA DE TEMAS

  1. Entrar a administración.

  2. Crear Matemáticas.

  3. Crear Fracciones.

  4. Verificar relación.

  5. Editar.

  6. Desactivar.

PRUEBA DE PREGUNTAS

  1. Crear pregunta.

  2. Agregar 4 respuestas.

  3. Marcar una correcta.

  4. Guardar.

  5. Editar.

  6. Verificar respuestas.

PRUEBA DE EXAMEN

  1. Crear preguntas.

  2. Crear examen.

  3. Seleccionar 5 preguntas.

  4. Generar examen.

  5. Verificar aleatoriedad.

  6. Resolver.

  7. Verificar calificación.

PRUEBA DE MEMORAMA

  1. Subir imágenes.

  2. Asociarlas a tema.

  3. Seleccionar tema.

  4. Seleccionar número de parejas.

  5. Jugar.

  6. Verificar parejas.


64. REGLA PRINCIPAL DEL PROYECTO

No sacrificar la estructura de la base de datos por hacer el código rápidamente.

La base de datos debe permitir posteriormente crecer hacia una plataforma educativa completa.

La aplicación debe ser:

SIMPLE AHORA

pero:

ESCALABLE DESPUÉS.


65. RESULTADO FINAL ESPERADO

La primera versión debe permitir:

BLOG

  • Temas.

  • Subtemas.

  • Contenidos.

  • Imágenes.

  • Videos.

BANCO EDUCATIVO

  • Preguntas.

  • Respuestas.

  • Diferentes tipos de preguntas.

  • Explicaciones.

  • Dificultad.

EXÁMENES

  • Crear examen.

  • Seleccionar preguntas.

  • Generar preguntas aleatoriamente.

  • Seleccionar respuestas incorrectas.

  • Incluir respuesta correcta.

  • Mezclar opciones.

  • Resolver examen.

  • Calificar.

FLASHCARDS

  • Crear tarjetas.

  • Texto.

  • Imagen.

  • Frente.

  • Reverso.

  • Barajar.

  • Estudiar.

QUIZ VISUAL

  • Utilizar imágenes existentes.

  • Preguntas visuales.

  • Respuestas existentes.

  • Selección aleatoria.

MEMORAMA

  • Utilizar imágenes existentes.

  • Seleccionar tema.

  • Seleccionar subtema.

  • Seleccionar número de parejas.

  • Generar parejas automáticamente.

  • Mezclar.

  • Contabilizar movimientos.

  • Contabilizar tiempo.

FUTURO

Preparar la arquitectura para:

  • alumnos;

  • profesores;

  • progreso;

  • estadísticas;

  • historial;

  • recomendaciones;

  • IA educativa.

La IA NO debe implementarse en esta primera versión.


66. PRINCIPIO ARQUITECTÓNICO FINAL

El sistema debe entenderse como una plataforma donde existe un:

BANCO CENTRAL DE CONTENIDO

que alimenta diferentes formas de aprendizaje.

Por ejemplo:

                BANCO DE CONTENIDO
                       |
   +-------------------+-------------------+
   |                   |                   |
CONTENIDO           PREGUNTAS          MULTIMEDIA
   |                   |                   |
   |              RESPUESTAS              |
   |                   |                   |
   +-------------------+-------------------+
                       |
                ACTIVIDADES
                       |
      +----------------+----------------+
      |                |                |
   EXAMEN         FLASHCARDS       QUIZ VISUAL
                                       |
                                   MEMORAMA
                       

Y posteriormente:

                BANCO DE CONTENIDO
                       |
                 PROGRESO ALUMNO
                       |
                IA EDUCATIVA
                       |
             APRENDIZAJE ADAPTATIVO

La información debe almacenarse una sola vez y reutilizarse en las diferentes actividades.

La plataforma debe diseñarse desde el inicio siguiendo este principio.

Comentarios

Entradas más populares de este blog

PROMPT MAESTRO — PLATAFORMA EDUCATIVA PHP + MYSQL

bd-2

La Estructura que Simula una Base de Datos en PHP