Skip to content

Reference

El sistema Maius está desarrollado bajo una arquitectura monolítica, utilizando las siguientes tecnologías:

  • Backend: PHP 7.4 con el framework Laravel 6.
  • Frontend administrativo y académico: React 16 integrado dentro de la aplicación Laravel.
  • Aplicaciones adicionales:
    • App web para estudiantes (React 16).
    • App web para docentes (React 16).
    • App web para pre-inscripciones (React 16).

El sistema y sus aplicaciones relacionadas están alojados en un servidor dentro de la institución, desde donde se da servicio a otras dos sedes.


  • Administrativo

    • Gestión de cuotas de estudiantes y aranceles por inscripción.
    • Pagos a funcionarios y docentes.
    • Submódulo de facturación electrónica que emite facturas conforme a la documentación oficial de SIFEN, enviando comprobantes por correo electrónico a los estudiantes al momento de realizar un pago.
  • Académico

    • Gestión de carreras, semestres, materias e inscripciones.
    • Registro de asistencias y calificaciones de estudiantes.
  • Financiero

    • Informes y reportes para gerencia.

Nota: cada módulo dispone de endpoints propios, aunque existen casos de uso compartidos. Por ejemplo, administración puede consultar la lista de materias de un alumno para validar pagos de exámenes, mientras que secretaría académica puede acceder a la misma información para gestión académica.


El sistema expone una API REST, utilizada tanto por el frontend administrativo como por las aplicaciones externas (estudiantes, docentes, pre-inscripciones).

  • Autenticación y autorización:
    Basada en roles y permisos mediante el paquete spatie/laravel-permission.

  • Endpoints:

    • [TODO: agregar lista de endpoints principales]

  • Motor: PostgreSQL.
  • Tablas principales:
    • [TODO: agregar lista de tablas]
  • Relaciones clave:
    • [TODO: agregar relaciones entre tablas]
  • Convenciones: actualmente no existe una convención formal, aunque se está intentando aplicar una de manera progresiva.

El sistema utiliza variables de entorno para parametrización.

Terminal window
APP_NAME='Maius - development'
APP_ENV=local
APP_KEY=base64:HuKqGPZe6vQArzNzq7Wwiml7mKkHgWq4sZfxz/H6/p8=
APP_DEBUG=true
APP_URL=192.168.0.14:8001
ASSET_URL=192.168.0.14:8001
CERT_PASS=''
QR_IDCSC='1'
QR_PKEY_PROD=''
QR_PKEY_TEST='ABCD0000000000000000000000000000'
QR_ENDPOIND_PROD='https://ekuatia.set.gov.py/consultas/qr'
QR_ENDPOIND_TEST='https://ekuatia.set.gov.py/consultas-test/qr'
EVENT_ENDPOIND_TEST='https://sifen-test.set.gov.py/de/ws/eventos/evento.wsdl'
EVENT_ENDPOIND_PROD='https://sifen.set.gov.py/de/ws/eventos/evento.wsdl'
CONSULT_LOTE_ENDPOIND_PROD='https://sifen.set.gov.py/de/ws/consultas/consulta-lote.wsdl'
CONSULT_LOTE_ENDPOIND_TEST='https://sifen-test.set.gov.py/de/ws/consultas/consulta-lote.wsdl'
CONSULT_DE_ENDPOIND_PROD='https://sifen.set.gov.py/de/ws/consultas/consulta.wsdl'
CONSULT_DE_ENDPOIND_TEST='https://sifen-test.set.gov.py/de/ws/consultas/consulta.wsdl'
SEND_LOTE_ENDPOIND_TEST='https://sifen-test.set.gov.py/de/ws/async/recibe-lote.wsdl'
SEND_LOTE_ENDPOIND_PROD='https://sifen.set.gov.py/de/ws/async/recibe-lote.wsdl'
SEND_DE_ENDPOIND_TEST='https://sifen-test.set.gov.py/de/ws/sync/recibe.wsd'
SEND_DE_ENDPOIND_PROD='https://sifen.set.gov.py/de/ws/sync/recibe.wsdl'
LOG_CHANNEL=json
DB_CONNECTION=pgsql
SANCTUM_STATEFUL_DOMAINS=192.168.0.14
SESSION_DOMAIN=192.168.0.14
DB_HOST=192.168.0.6
DB_PORT=5433
DB_DATABASE=bk_maius2025-07-29
DB_USERNAME=postgres
DB_PASSWORD=postgres
APPJS_VERSION=app.20240418.js
BANCARD_IP_APROVED="192.168.0.14"
BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=database
SESSION_DRIVER=file
SESSION_LIFETIME=120
REDIS_HOST=192.168.0.14
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_FOR_TEST=""
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=''
MAIL_PASSWORD=''
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=''
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

Existen configuraciones distintas para desarrollo, test y producción.


  • Método de autenticación actual: basado en cookies.
  • Implementación en progreso: JWT (JSON Web Token).
  • Auditoría:
    • Logs de errores generados por el sistema.
    • Auditoría general para todas las tablas mediante el paquete laravel-audits.