Files
insta-portal/package.json
T
Uriel JarethandClaude Opus 5 0b9c9c1dc2 Portal interno INSTA: base de conocimiento con Magic Login y permisos por rol
Base de conocimiento para el personal del Instituto Santiago Tapia: oferta
educativa (en tarjetas y en tabla), requisitos y titulacion, becas y fechas
de inscripcion, links de clases de Google Meet, preguntas frecuentes,
mensajes listos y datos del instituto.

Acceso con Magic Login: enlace de un solo uso, 15 minutos de vigencia, y en
la base solo se guarda el SHA-256 del token. El canje es atomico, asi que dos
canjes simultaneos del mismo enlace no pueden crear dos sesiones.

Tres roles con 19 permisos. El catalogo lo edita direccion; los links de
clases, direccion y administracion; el resto del equipo consulta. El menu se
pinta con lo que el servidor autoriza y cada endpoint exige la misma clave,
asi que no hay pantallas alcanzables escribiendo la direccion a mano.

Toda edicion pasa por una lista blanca de campos validados y queda en la
bitacora. Un precio vacio no se guarda como cero, un link que no es una
direccion se rechaza, y no se puede marcar una validez oficial como
confirmada sin numero de acuerdo.

Pensado para leerse comodo: texto de 17 px, contraste AA, areas de toque de
44 px, tema claro y bloques plegados en telefono.

La oferta, los costos, las becas, los requisitos y el contacto son los reales
del instituto, tomados del CSV de oferta educativa y de la base de
conocimiento. Los usuarios de acceso y los links de Meet son de demostracion.

Verificado: 103 comprobaciones de API y 51 pruebas en WebKit escritorio y
iPhone 13.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
2026-07-29 23:20:34 -06:00

26 lines
799 B
JSON

{
"name": "insta-portal",
"version": "2.0.0",
"private": true,
"type": "module",
"description": "Portal interno del Instituto Santiago Tapia — base de conocimiento con Magic Login y permisos por rol",
"scripts": {
"start": "node server/index.mjs",
"dev": "node --watch server/index.mjs",
"db:reset": "node db/seed.mjs",
"reiniciar": "powershell -ExecutionPolicy Bypass -File scripts/reiniciar.ps1",
"test": "playwright test",
"test:webkit": "playwright test --project=webkit",
"test:api": "node tests/api.mjs",
"capturas": "node tests/capturas.mjs",
"codificacion": "node scripts/revisar-codificacion.mjs"
},
"dependencies": {
"express": "^4.21.2",
"mysql2": "^3.11.5"
},
"devDependencies": {
"@playwright/test": "^1.49.1"
}
}