# dayn131/glotty architecture

> Architecture diagram of the GitHub repository dayn131/glotty, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dayn131/glotty
- Repository: https://github.com/dayn131/glotty

## Overview

Glotty is a Laravel system for managing English-course enrollment, with separate student, professor, and coordinator experiences. Students register or sign in, browse level-appropriate groups, request enrollment, and view grades and documents; coordinators manage course resources and enrollment decisions; professors work with their groups and students. PostgreSQL is the documented database. Sampled controllers show authentication, student enrollment, and group management; other listed capabilities are represented from the repository tree, with unverified links marked dashed.

Main entry points: [`app/Models/Grupo.php`](https://github.com/dayn131/glotty/blob/main/app/Models/Grupo.php) (Course Groups), [`app/Http/Controllers/AuthController.php`](https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/AuthController.php) (Authentication), [`app/Http/Controllers/AlumnoInscripcionController.php`](https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/AlumnoInscripcionController.php) (Student Enrollment), [`app/Http/Controllers/GrupoController.php`](https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/GrupoController.php) (Group Management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity &amp; Access"]
  node_auth["Authentication<br/>[AuthController.php]"]
  node_register_view["Registration Form<br/>[register.blade.php]"]
  node_usuario["User Account<br/>[Usuario.php]"]
  node_user["Generic User<br/>[User.php]"]
  node_middleware["Auth Redirect"]
end

subgraph group_student["Student Services"]
  node_enrollment["Student Enrollment"]
  node_enrollment_views["Enrollment &amp; Grades<br/>[index.blade.php]"]
  node_grades["Grade Records<br/>[index.blade.php]"]
  node_documents["Student Documents<br/>[index.blade.php]"]
end

subgraph group_coord["Coordinator Operations"]
  node_coord_enrollment["Enrollment Review"]
  node_group_admin["Group Management"]
  node_group_views["Group Screens<br/>[index.blade.php]"]
  node_room_admin["Room Management<br/>[AulaController.php]"]
  node_schedule_admin["Schedule Management"]
  node_teacher_admin["Professor Management"]
  node_document_admin["Document Uploads"]
end

subgraph group_teaching["Teaching &amp; Domain"]
  node_alumno["Student Profile<br/>[Alumno.php]"]
  node_profesor["Professor Profile<br/>[Profesor.php]"]
  node_coordinador["Coordinator Profile<br/>[Coordinador.php]"]
  node_groups["Course Groups<br/>[Grupo.php]"]
  node_inscriptions["Enrollment Records<br/>[Inscripcion.php]"]
  node_rooms["Classrooms<br/>[Aula.php]"]
  node_schedules["Schedules<br/>[Horario.php]"]
  node_periods["Periods<br/>[Periodo.php]"]
  node_preregistration["Pre-registration<br/>[Preregistro.php]"]
end

node_visitor(("User"))
node_postgres[("PostgreSQL")]
node_routes["Web Routes<br/>[web.php]"]
node_base_controller["Base Controller<br/>[Controller.php]"]

node_visitor -->|"submits credentials"| node_auth
node_visitor -.->|"opens registration"| node_register_view
node_register_view -.->|"submits registration"| node_auth
node_auth -->|"creates account"| node_usuario
node_auth -->|"checks credentials"| node_profesor
node_auth -->|"checks credentials"| node_coordinador
node_auth -->|"registers student"| node_alumno
node_routes -->|"routes to"| node_auth
node_routes -->|"applies"| node_middleware
node_routes -.->|"routes controllers"| node_base_controller
node_enrollment -->|"queries groups"| node_groups
node_enrollment -->|"creates records"| node_inscriptions
node_enrollment -->|"renders"| node_enrollment_views
node_enrollment -->|"reads student"| node_alumno
node_enrollment -->|"renders grades"| node_grades
node_enrollment -.->|"serves documents"| node_documents
node_coord_enrollment -.->|"reviews records"| node_inscriptions
node_group_admin -->|"manages groups"| node_groups
node_group_admin -->|"loads professors"| node_profesor
node_group_admin -->|"loads rooms"| node_rooms
node_group_admin -->|"loads schedules"| node_schedules
node_group_admin -->|"renders"| node_group_views
node_room_admin -->|"manages rooms"| node_rooms
node_schedule_admin -->|"manages schedules"| node_schedules
node_teacher_admin -->|"manages profiles"| node_profesor
node_document_admin -.->|"handles uploads"| node_documents
node_groups -->|"has enrollments"| node_inscriptions
node_groups -->|"belongs to"| node_profesor
node_groups -->|"belongs to"| node_rooms
node_groups -->|"belongs to"| node_schedules
node_alumno -->|"has enrollments"| node_inscriptions
node_usuario -->|"extends"| node_user
node_profesor -->|"extends"| node_user
node_coordinador -->|"extends"| node_user
node_groups -.->|"persists data"| node_postgres
node_inscriptions -.->|"persists data"| node_postgres
node_periods -.->|"persists data"| node_postgres
node_preregistration -.->|"persists data"| node_postgres

click node_auth "https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/AuthController.php"
click node_register_view "https://github.com/dayn131/glotty/blob/main/resources/views/register.blade.php"
click node_alumno "https://github.com/dayn131/glotty/blob/main/app/Models/Alumno.php"
click node_usuario "https://github.com/dayn131/glotty/blob/main/app/Models/Usuario.php"
click node_profesor "https://github.com/dayn131/glotty/blob/main/app/Models/Profesor.php"
click node_coordinador "https://github.com/dayn131/glotty/blob/main/app/Models/Coordinador.php"
click node_user "https://github.com/dayn131/glotty/blob/main/app/Models/User.php"
click node_middleware "https://github.com/dayn131/glotty/blob/main/app/Http/Middleware/RedirectIfAuthenticated.php"
click node_enrollment "https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/AlumnoInscripcionController.php"
click node_enrollment_views "https://github.com/dayn131/glotty/blob/main/resources/views/alumno/inscripciones/index.blade.php"
click node_grades "https://github.com/dayn131/glotty/blob/main/resources/views/alumno/calificaciones/index.blade.php"
click node_documents "https://github.com/dayn131/glotty/blob/main/resources/views/alumno/documentos/index.blade.php"
click node_coord_enrollment "https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/CoordInscripcionController.php"
click node_group_admin "https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/GrupoController.php"
click node_group_views "https://github.com/dayn131/glotty/blob/main/resources/views/coordinador/grupos/index.blade.php"
click node_room_admin "https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/AulaController.php"
click node_schedule_admin "https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/HorarioController.php"
click node_teacher_admin "https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/ProfesorController.php"
click node_document_admin "https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/DocumentController.php"
click node_groups "https://github.com/dayn131/glotty/blob/main/app/Models/Grupo.php"
click node_inscriptions "https://github.com/dayn131/glotty/blob/main/app/Models/Inscripcion.php"
click node_rooms "https://github.com/dayn131/glotty/blob/main/app/Models/Aula.php"
click node_schedules "https://github.com/dayn131/glotty/blob/main/app/Models/Horario.php"
click node_periods "https://github.com/dayn131/glotty/blob/main/app/Models/Periodo.php"
click node_preregistration "https://github.com/dayn131/glotty/blob/main/app/Models/Preregistro.php"
click node_routes "https://github.com/dayn131/glotty/blob/main/routes/web.php"
click node_base_controller "https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/Controller.php"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_auth,node_register_view,node_usuario,node_user,node_middleware,node_visitor toneBlue
class node_enrollment,node_enrollment_views,node_grades,node_documents,node_postgres toneAmber
class node_coord_enrollment,node_group_admin,node_group_views,node_room_admin,node_schedule_admin,node_teacher_admin,node_document_admin,node_routes toneMint
class node_alumno,node_profesor,node_coordinador,node_groups,node_inscriptions,node_rooms,node_schedules,node_periods,node_preregistration toneRose
class node_base_controller toneTeal
```

## Components

### Identity & Access

- [Authentication](https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/AuthController.php): `app/Http/Controllers/AuthController.php`
- [Registration Form](https://github.com/dayn131/glotty/blob/main/resources/views/register.blade.php): `resources/views/register.blade.php`
- [User Account](https://github.com/dayn131/glotty/blob/main/app/Models/Usuario.php): `app/Models/Usuario.php`
- [Generic User](https://github.com/dayn131/glotty/blob/main/app/Models/User.php): `app/Models/User.php`
- [Auth Redirect](https://github.com/dayn131/glotty/blob/main/app/Http/Middleware/RedirectIfAuthenticated.php): `app/Http/Middleware/RedirectIfAuthenticated.php`

### Student Services

- [Student Enrollment](https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/AlumnoInscripcionController.php): `app/Http/Controllers/AlumnoInscripcionController.php`
- [Enrollment & Grades](https://github.com/dayn131/glotty/blob/main/resources/views/alumno/inscripciones/index.blade.php): `resources/views/alumno/inscripciones/index.blade.php`
- [Grade Records](https://github.com/dayn131/glotty/blob/main/resources/views/alumno/calificaciones/index.blade.php): `resources/views/alumno/calificaciones/index.blade.php`
- [Student Documents](https://github.com/dayn131/glotty/blob/main/resources/views/alumno/documentos/index.blade.php): `resources/views/alumno/documentos/index.blade.php`

### Coordinator Operations

- [Enrollment Review](https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/CoordInscripcionController.php): `app/Http/Controllers/CoordInscripcionController.php`
- [Group Management](https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/GrupoController.php): `app/Http/Controllers/GrupoController.php`
- [Group Screens](https://github.com/dayn131/glotty/blob/main/resources/views/coordinador/grupos/index.blade.php): `resources/views/coordinador/grupos/index.blade.php`
- [Room Management](https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/AulaController.php): `app/Http/Controllers/AulaController.php`
- [Schedule Management](https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/HorarioController.php): `app/Http/Controllers/HorarioController.php`
- [Professor Management](https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/ProfesorController.php): `app/Http/Controllers/ProfesorController.php`
- [Document Uploads](https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/DocumentController.php): `app/Http/Controllers/DocumentController.php`

### Teaching & Domain

- [Student Profile](https://github.com/dayn131/glotty/blob/main/app/Models/Alumno.php): `app/Models/Alumno.php`
- [Professor Profile](https://github.com/dayn131/glotty/blob/main/app/Models/Profesor.php): `app/Models/Profesor.php`
- [Coordinator Profile](https://github.com/dayn131/glotty/blob/main/app/Models/Coordinador.php): `app/Models/Coordinador.php`
- [Course Groups](https://github.com/dayn131/glotty/blob/main/app/Models/Grupo.php): `app/Models/Grupo.php`
- [Enrollment Records](https://github.com/dayn131/glotty/blob/main/app/Models/Inscripcion.php): `app/Models/Inscripcion.php`
- [Classrooms](https://github.com/dayn131/glotty/blob/main/app/Models/Aula.php): `app/Models/Aula.php`
- [Schedules](https://github.com/dayn131/glotty/blob/main/app/Models/Horario.php): `app/Models/Horario.php`
- [Periods](https://github.com/dayn131/glotty/blob/main/app/Models/Periodo.php): `app/Models/Periodo.php`
- [Pre-registration](https://github.com/dayn131/glotty/blob/main/app/Models/Preregistro.php): `app/Models/Preregistro.php`

### Other components

- **User**
- **PostgreSQL**
- [Web Routes](https://github.com/dayn131/glotty/blob/main/routes/web.php): `routes/web.php`
- [Base Controller](https://github.com/dayn131/glotty/blob/main/app/Http/Controllers/Controller.php): `app/Http/Controllers/Controller.php`

## Connections

- User → Authentication: submits credentials
- User → Registration Form: opens registration
- Registration Form → Authentication: submits registration
- Authentication → User Account: creates account (evidence: `app/Http/Controllers/AuthController.php`)
- Authentication → Professor Profile: checks credentials (evidence: `app/Http/Controllers/AuthController.php`)
- Authentication → Coordinator Profile: checks credentials (evidence: `app/Http/Controllers/AuthController.php`)
- Authentication → Student Profile: registers student
- Web Routes → Authentication: routes to (evidence: `routes/web.php`)
- Web Routes → Auth Redirect: applies (evidence: `routes/web.php`)
- Web Routes → Base Controller: routes controllers
- Student Enrollment → Course Groups: queries groups (evidence: `app/Http/Controllers/AlumnoInscripcionController.php`)
- Student Enrollment → Enrollment Records: creates records (evidence: `app/Http/Controllers/AlumnoInscripcionController.php`)
- Student Enrollment → Enrollment & Grades: renders (evidence: `app/Http/Controllers/AlumnoInscripcionController.php`)
- Student Enrollment → Student Profile: reads student (evidence: `app/Http/Controllers/AlumnoInscripcionController.php`)
- Student Enrollment → Grade Records: renders grades (evidence: `app/Http/Controllers/AlumnoInscripcionController.php`)
- Student Enrollment → Student Documents: serves documents
- Enrollment Review → Enrollment Records: reviews records
- Group Management → Course Groups: manages groups (evidence: `app/Http/Controllers/GrupoController.php`)
- Group Management → Professor Profile: loads professors (evidence: `app/Http/Controllers/GrupoController.php`)
- Group Management → Classrooms: loads rooms (evidence: `app/Http/Controllers/GrupoController.php`)
- Group Management → Schedules: loads schedules (evidence: `app/Http/Controllers/GrupoController.php`)
- Group Management → Group Screens: renders (evidence: `app/Http/Controllers/GrupoController.php`)
- Room Management → Classrooms: manages rooms (evidence: `app/Http/Controllers/AulaController.php`)
- Schedule Management → Schedules: manages schedules (evidence: `app/Http/Controllers/HorarioController.php`)
- Professor Management → Professor Profile: manages profiles (evidence: `app/Http/Controllers/ProfesorController.php`)
- Document Uploads → Student Documents: handles uploads
- Course Groups → Enrollment Records: has enrollments (evidence: `app/Models/Grupo.php`)
- Course Groups → Professor Profile: belongs to (evidence: `app/Models/Grupo.php`)
- Course Groups → Classrooms: belongs to (evidence: `app/Models/Grupo.php`)
- Course Groups → Schedules: belongs to (evidence: `app/Models/Grupo.php`)
- Student Profile → Enrollment Records: has enrollments (evidence: `app/Models/Alumno.php`)
- User Account → Generic User: extends (evidence: `app/Models/Usuario.php`)
- Professor Profile → Generic User: extends (evidence: `app/Models/Profesor.php`)
- Coordinator Profile → Generic User: extends (evidence: `app/Models/Coordinador.php`)
- Course Groups → PostgreSQL: persists data
- Enrollment Records → PostgreSQL: persists data
- Periods → PostgreSQL: persists data
- Pre-registration → PostgreSQL: persists data
