Skip to content

Repository files navigation

gestion-reservas-clases

Demo pública del motor de reservas por capacidad de CTG Code: un panel de cupos con capacidad real, lista de espera ordenada y ascenso automático cuando alguien cancela.

Esto es la demo, no el servicio. La lógica de producción —el backend, su almacenamiento y el control de concurrencia que evita el sobrecupo— 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

Un cupo lleno no tiene por qué ser una venta perdida. El panel deja probar el ciclo completo:

  1. Si quedan lugares, la reserva entra confirmada.
  2. Si el cupo está lleno, entra a la lista de espera con su posición.
  3. Al cancelar una reserva confirmada, el primero de la lista asciende solo.
  4. Cancelar a alguien que estaba en la lista no asciende a nadie: el cupo nunca se movió.

Ese cuarto caso es fácil de pasar por alto y es justamente donde un motor mal hecho se equivoca, así que la demo lo deja a la vista en la actividad.

El selector de rubro (gimnasio, restaurante, oficina) cambia los cupos y los nombres sin tocar la lógica: el mismo motor sirve para clases, turnos de mesa o salas de reunión.

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)
    BookingDashboard.tsx  la isla: cupos, lista de espera y actividad
  locales/{es,en}.ts      texto de la interfaz y cupos de ejemplo por rubro
  layouts/Layout.astro    <head>, fuentes y la marca `noindex` del modo demo
  pages/index.astro       encabezado, pie y montaje de la isla

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-reservas" 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