05/09 · Sitio corporativo
PIMSA Web
Sitio público de una recicladora de plásticos de ingeniería, con el panel que lo opera: Marketing atiende leads y catálogo de stock, RRHH lleva una bolsa de trabajo que recibe CVs, y ningún área ve los datos de la otra.
Público, en producción- 8
tipos de schema.org
- 3
roles en el panel
- 8
tablas MySQL
- 0
librerías de animación
Sobre el proyecto
El rol se lee de la base de datos en cada petición en vez de viajar en el token de sesión, así que cambiar a alguien de área surte efecto al instante. Esa misma consulta corta las sesiones de una cuenta borrada, y un claim del token con la versión de la contraseña las corta cuando se restablece. Los controles de acceso corren en cada página, cada server action y la ruta de descarga de CVs; ocultar un enlace es solo cosmético.
Un lead o una postulación se guarda antes de enviar cualquier correo, así que, si falla el SMTP, no se pierde ninguno. Los destinatarios y la cuenta de envío se cambian desde el panel sin redesplegar, y la contraseña SMTP se almacena cifrada con AES-256-GCM. Cada intento, incluidos los envíos de prueba, queda registrado en una bitácora como enviado, fallido u omitido, y en los dos últimos casos se anota el motivo.
Cada vacante guarda lugar, sueldo y fecha de cierre como campos separados en vez de texto libre, con valores de schema.org para la jornada y el periodo de pago, de modo que un solo registro alimenta su página, los datos JobPosting que lee Google y un feed XML en formato Indeed para las bolsas de trabajo. En todo el sitio, ocho tipos de schema.org describen a la empresa, sus servicios, sus preguntas frecuentes y sus vacantes.
Hecho para reemplazar el sitio en WordPress de la empresa, renderiza en el servidor por defecto y no necesita librería de animación. El ORM queda fuera de los bundles del cliente, y las fotografías que pasan de los originales de cámara al sitio lo hacen por un script con sharp que aplica la rotación EXIF, limita el lado largo a 2000 px y elimina los datos GPS. Corre como app de Node en Hostinger sobre MySQL, desplegada desde main.