Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/miagv/PlataformaEduca/llms.txt

Use this file to discover all available pages before exploring further.

PlataformaEduca is designed for secondary school management. Its data model reflects the real-world structure of a school: users who fill different roles (teacher, student, coordinator), courses assigned to classrooms and periods, and a two-level grading system that separates assessments from individual scores. Before calling the API, understanding how these entities relate to each other will save you significant debugging time.

Core entities

Usuario

The usuarios table is the single source of identity for every person in the system. All authentication and authorization flows through Usuario.
FieldTypeNotes
idLongPrimary key
nombresStringFirst name(s)
apellidosStringLast name(s)
emailStringUnique — used for login
passwordStringBCrypt-hashed
activoBooleanDefault true
Usuario has a ManyToMany relationship to Rol through the usuario_roles join table, fetched eagerly. A single user may hold multiple roles, though in practice each registered user receives one operational role.

Rol

FieldTypeNotes
idLongPrimary key
nombreStringUnique
The five seeded role values are: USER, ADMIN, COORDINADOR, DOCENTE, and ESTUDIANTE. Role assignment happens at registration and is not modifiable through the API.

Docente

FieldTypeNotes
idLongPrimary key
especialidadStringSubject specialty
usuarioOneToOneReferences usuario_id

Estudiante

FieldTypeNotes
idLongPrimary key
codigoStringStudent enrollment code
gradoManyToOneReferences Grado
usuarioOneToOneReferences usuario_id

Coordinador

FieldTypeNotes
idLongPrimary key
areaStringAdministrative area
usuarioOneToOneReferences usuario_id

Curso

FieldTypeNotes
idLongPrimary key
nombreStringCourse name
descripcionStringCourse description
creditosIntegerCredit value
estadoBooleanDefault true (active)

Grado

FieldTypeNotes
idLongPrimary key
nombreStringe.g. "1ro Secundaria"
seccionStringe.g. "A"

Aula

Stored in the salones table.
FieldTypeNotes
idLongPrimary key
nombreStringe.g. "Aula 101"
capacidadIntegerMaximum occupancy
ubicacionStringe.g. "Pabellón A"

Periodo

FieldTypeNotes
idLongPrimary key
nombreStringPeriod name
fechaInicioLocalDateStart date
fechaFinLocalDateEnd date
activoBooleanWhether the period is current

AsignacionDocente

Stored in asignaciones_docentes. This is the central scheduling entity that ties the entire system together.
FieldTypeNotes
idLongPrimary key
docenteManyToOneReferences Docente
cursoManyToOneReferences Curso
aulaManyToOneReferences Aula
periodoManyToOneReferences Periodo
An AsignacionDocente record answers the question: which teacher is delivering which course, in which classroom, during which academic period? Every downstream operation — creating evaluations, recording grades, viewing a teacher’s course load — references an AsignacionDocente ID.

Evaluacion

FieldTypeNotes
idLongPrimary key
tituloStringAssessment title
porcentajeDoubleWeight of this assessment (e.g. 0.3 for 30%)
fechaLocalDateAssessment date
cursoManyToOneReferences Curso
asignacionDocenteManyToOneReferences AsignacionDocente

Nota

FieldTypeNotes
idLongPrimary key
notaDoubleThe numeric score
observacionStringTeacher comment
evaluacionManyToOneReferences Evaluacion
estudianteManyToOneReferences Estudiante

Entity relationships

The following describes how the main entities connect:
Usuario ──(OneToOne)──► Docente ──(ManyToOne)──► AsignacionDocente
Usuario ──(OneToOne)──► Estudiante                       │
Usuario ──(OneToOne)──► Coordinador          ┌───────────┤
                                             ▼           │
Usuario ──(ManyToMany)─► Rol           Docente           │
                                       Curso ◄───────────┤
Estudiante ──(ManyToOne)──► Grado      Aula  ◄───────────┤
                                       Periodo ◄─────────┘

AsignacionDocente ◄──(ManyToOne)── Evaluacion

                              (ManyToOne)▼
                                      Nota ──(ManyToOne)──► Estudiante

The two-level grading model

Grading in PlataformaEduca works in two distinct layers:
  1. Evaluacion — the assessment itself. A teacher creates an Evaluacion tied to an AsignacionDocente. Each Evaluacion carries a porcentaje (weight), so the system can compute weighted final grades. For example, a midterm exam might have porcentaje: 40.0 (40%) and a final project porcentaje: 60.0 (60%).
  2. Nota — the individual student’s score on that assessment. A Nota record links one Evaluacion to one Estudiante, storing the numeric nota and an optional observacion comment from the teacher.
To compute a student’s final grade for a course, sum nota × porcentaje across all Nota records for that student and course within the same AsignacionDocente.
This separation means assessments are defined once at the course level and then scored per student, avoiding duplication of assessment metadata.

User profile duality

Every operational user has two records: a Usuario account and a profile record that matches their role.
When you register a new user via POST /api/auth/register, the API automatically creates the matching profile record. You do not need to call a second endpoint.
Role registeredProfile table createdExtra field set
DOCENTEdocentesespecialidad
ESTUDIANTEestudiantescodigo, grado
COORDINADORcoordinadoresarea
The Usuario.id and the profile id are independent primary keys. Relationships to Docente, Estudiante, and Coordinador always go through the profile record — not directly through Usuario — so always use the profile ID when referencing a teacher or student in scheduling and grading endpoints.

Build docs developers (and LLMs) love