Skip to content

Repository files navigation

control-acceso-smart

Demo pública del módulo de control de acceso inteligente de CTG Code: un panel que valida una credencial (carné, QR, tag NFC o biometría) contra su estado, su vigencia y sus permisos de zona, y deja constancia de cada lectura en una bitácora.

Esto es la demo, no el servicio. La lógica de producción —el backend, su almacenamiento y su integración con el hardware de puerta— vive en un repositorio privado. Aquí solo está la pieza que se enseña: una simulación que corre entera en el navegador, sin backend ni datos reales.

Qué enseña

El panel reproduce las cuatro salidas posibles de una validación, que se evalúan en este orden:

  1. La cuenta debe estar activa (no suspendida).
  2. La suscripción no debe estar vencida.
  3. La zona solicitada debe estar entre las permitidas.
  4. Si todo pasa, el acceso se concede.

El método de lectura (tarjeta, biometría, QR o manual) no altera la decisión, pero sí queda anotado en la bitácora junto al lector que originó la lectura — igual que en el servicio real, donde eso es lo que da trazabilidad.

El selector de rubro (gimnasio, restaurante, oficina) cambia los nombres del padrón y de las zonas sin tocar las reglas: es la forma corta de enseñar que el modelo es genérico y el mismo módulo sirve para negocios distintos.

Stack

  • Astro 5 en modo estático, una sola página.
  • Tailwind CSS 4 con la paleta de shadcn/ui en variables CSS. El tema claro y el oscuro salen de la preferencia del sistema.
  • React 19 solo para la isla del panel (client:load); el encabezado, el pie y el resto de la página son HTML estático.
  • Los componentes de src/components/ui/ son de shadcn/ui, copiados al repositorio como manda su modelo: son código propio y editable, no una dependencia.

Estructura

src/
  components/
    ui/                  primitivas de shadcn/ui
    dashboard/           piezas compartidas del panel (tarjetas de métrica)
    AccessDashboard.tsx  la isla: estado, reglas y render del panel
  data/credentials.ts    padrón de ejemplo (vigencias en días relativos)
  locales/{es,en}.ts     todo el texto de la interfaz
  layouts/Layout.astro   <head>, fuentes y la marca `noindex` del modo demo
  pages/index.astro      encabezado, pie y montaje de la isla

Las vigencias se guardan como días relativos, nunca como fechas absolutas: así el panel dice lo mismo el día que se compila y seis meses después, y el HTML generado en el build coincide con lo que pinta el navegador al hidratar.

Variables de entorno

Variable Para qué
BASE_PATH Subdirectorio del que cuelga la demo. Sin ella, cuelga de la raíz.
PUBLIC_LOCALE es (por defecto) o en. Se fija en el build, no en ejecución.
PUBLIC_DEMO Con true, la página sale con noindex, follow.

PUBLIC_DEMO existe porque la demo simula un negocio que no existe: sin noindex, un buscador podría tomarla por una ficha legítima.

Desarrollo

bun install
bun run dev

Para reproducir el build que se publica:

BASE_PATH="/automatizacion-control-acceso" PUBLIC_LOCALE="es" PUBLIC_DEMO="true" bun run build

Despliegue

La construye el deploy.yml de ctgcode.com, dos veces —una por idioma—, igual que las tres plantillas web. Un push a main dispara ahí un repository_dispatch que rehace el sitio.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages