Reference
Arquitectura general
Section titled “Arquitectura general”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.
Módulos principales
Section titled “Módulos principales”-
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 paquetespatie/laravel-permission. -
Endpoints:
- [TODO: agregar lista de endpoints principales]
Base de datos
Section titled “Base de datos”- 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.
Configuración
Section titled “Configuración”El sistema utiliza variables de entorno para parametrización.
APP_NAME='Maius - development'APP_ENV=localAPP_KEY=base64:HuKqGPZe6vQArzNzq7Wwiml7mKkHgWq4sZfxz/H6/p8=APP_DEBUG=trueAPP_URL=192.168.0.14:8001ASSET_URL=192.168.0.14:8001CERT_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.14SESSION_DOMAIN=192.168.0.14DB_HOST=192.168.0.6DB_PORT=5433DB_DATABASE=bk_maius2025-07-29DB_USERNAME=postgresDB_PASSWORD=postgres
APPJS_VERSION=app.20240418.js
BANCARD_IP_APROVED="192.168.0.14"
BROADCAST_DRIVER=logCACHE_DRIVER=fileQUEUE_CONNECTION=databaseSESSION_DRIVER=fileSESSION_LIFETIME=120
REDIS_HOST=192.168.0.14REDIS_PASSWORD=nullREDIS_PORT=6379MAIL_FOR_TEST=""MAIL_MAILER=smtpMAIL_HOST=smtp.gmail.comMAIL_PORT=465MAIL_USERNAME=''MAIL_PASSWORD=''MAIL_ENCRYPTION=sslMAIL_FROM_ADDRESS=''MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=AWS_SECRET_ACCESS_KEY=AWS_DEFAULT_REGION=us-east-1AWS_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.
Seguridad
Section titled “Seguridad”- 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.