@startuml c4-context
!theme plain
skinparam rectangleBackgroundColor #F8F9FA
skinparam rectangleBorderColor #495057

title Sistema de Registro de Estudiantes - Diagrama de Contexto (C4 Level 1)

skinparam rectangle {
    RoundCorner 10
}

actor "Estudiante" as student <<Persona>>
actor "Administrador" as admin <<Persona>>

rectangle "Sistema de Inscripción\nAcadémica" as system <<Software System>> #lightblue {
}

rectangle "Base de Datos\nSQL Server" as database <<External System>> #lightgray {
}

rectangle "Servidor SMTP\n(Email)" as smtp <<External System>> #lightgray {
}

student --> system : Se registra, activa cuenta,\nse inscribe en materias,\nve compañeros de clase
admin --> system : Gestiona estudiantes\n(CRUD completo)
system --> database : Lee y escribe\ndatos de usuarios,\nestudiantes e inscripciones
system --> smtp : Envía códigos\nde activación

note right of student
  <b>Estudiante</b>
  Usuario del sistema que:
  - Se registra y activa cuenta
  - Se inscribe en materias (máx 3)
  - Ve sus compañeros de clase
  - Consulta sus inscripciones
  - Accede a su dashboard personal
end note

note left of admin
  <b>Administrador</b>
  Usuario privilegiado que:
  - Gestiona todos los estudiantes
  - Crea, edita, elimina registros
  - Visualiza todo el sistema
end note

note right of system
  <b>Sistema de Inscripción Académica</b>
  Aplicación web que permite:
  - Autenticación (JWT + PBKDF2)
  - CRUD de estudiantes
  - Inscripción en materias
  - Validación de reglas de negocio
  - Visualización de compañeros

  <b>Stack:</b>
  Frontend: Angular 21
  Backend: .NET 10 + GraphQL
  Auth: JWT + Roles (Admin/Student)
end note

note right of database
  <b>SQL Server 2022</b>
  Almacena:
  - Usuarios (auth)
  - Estudiantes
  - Profesores
  - Materias
  - Inscripciones
end note

note right of smtp
  <b>Servicio de Email</b>
  Para:
  - Códigos de activación
  - Notificaciones
end note

@enduml
