Rediseño hecho en sesión aparte con el skill impeccable. Se registran
las especificaciones y ajustes visuales al sistema ya en producción.
Añade:
- BrandMark.astro con el escudo/logo del laboratorio.
- Favicon actualizado (svg + ico).
- Páginas propias 403 y 404 consistentes con el sistema visual.
- DESIGN.md y PRODUCT.md documentando decisiones.
- .impeccable/design.json con el design system tokenizado.
Ajusta componentes existentes (modales, autocomplete, layout, login,
solicitudes, mis-préstamos, middleware) para alinearse a los tokens
del design system.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Alumno:
- Modal de solicitud: campo "Notas" renombrado a "Motivo del préstamo",
ahora requerido, con hint sobre uso (para qué clase o proyecto).
Admin:
- Bandeja de solicitudes pendientes, activos y devoluciones ahora
muestran el motivo del alumno (en tabla desktop y tarjetas móvil).
- /admin/inventario se convirtió en "Estadísticas": grid de KPIs del
día (solicitadas, aprobadas, rechazadas, devoluciones, en préstamo,
vencidos) arriba del inventario existente. Los cambios de estado se
cuentan desde audit_log, el rango del día se calcula automáticamente
en timezone America/Tijuana con DST via Intl API (src/lib/date.ts).
Rediseño móvil:
- Sidebar desktop se puede colapsar con botón hamburguesa. Estado
persiste en localStorage sin flash (script is:inline bloqueante).
- Nav móvil reemplazado por dock píldora flotante con iconos SVG
inline (heroicons outline). Respeta safe-area-inset-bottom.
Notificaciones estilo Sileo:
- Componente Toaster global (React island client:idle) que escucha
CustomEvents. Toasts con backdrop-blur, animación de entrada
translateY+opacity, auto-dismiss 3.8s, click para cerrar. Helper
toastAfterReload deja pendiente en sessionStorage para sobrevivir
location.reload() post-acción.
Diagnóstico:
- /api/whoami devuelve user+profile actuales para depurar sesión.
- Endpoint devolver retorna un objeto `debug` en el 403 con
email+rol vistos por el server (temporal, para trazar bug del 403).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Sistema web para gestión de préstamos de material del Laboratorio de
Sistemas Computacionales de la UABC.
- Backend: Supabase self-hosted, schema aislado `prestamos` con RLS,
triggers de stock y audit log (supabase/migrations/0001_init.sql).
- Auth: Google OAuth restringido a @uabc.edu.mx, verificado en
middleware y como segunda línea en trigger de DB.
- Frontend: Astro 7 (SSR con adapter Node) + React islands + Tailwind
v4 con paleta UABC (primary #00723F, secondary #DD971A) bajo regla
60/30/10.
- Interfaz alumno mobile-first: catálogo con filtro por categorías,
solicitud de préstamos, historial personal.
- Interfaz admin desktop-first: panel con KPIs, bandeja de solicitudes
(aprobar/rechazar/devolver), CRUD de inventario y categorías,
reportes filtrables con export CSV nativo.
- Modales con `<dialog>` nativo, cero librerías de UI adicionales.
- Deploy: Dockerfile multi-stage node:22-alpine + docker-compose para
publicar bajo prestamos.buglabs.dev vía Cloudflare Tunnel.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>