Fotograma

Sistema web para un cine: venta de entradas con butacas en tiempo real, roles con permisos en la base de datos y un panel de administración.

Equipo
Individual
Cuándo
Sep a oct 2026
Contexto
TP de Programación IV, UTN
Commits
27 de 27, propios
Selección de butacas de Fotograma: mapa de la sala con butacas libres, accesibles y VIP, que se actualiza en tiempo real
Selección de butacas de Fotograma: mapa de la sala con butacas libres, accesibles y VIP, que se actualiza en tiempo real1 / 2

El problema

Un cine necesita vender entradas online sin que dos personas compren la misma butaca, controlar el acceso en la puerta y que cada rol (cliente, empleado, administrador) vea solo lo que le corresponde.

Qué construí

  • Selección de butacas en tiempo real con control de venta doble.
  • Compra registrada o anónima, candy bar y combos, puntos, crédito y cupones.
  • Entradas con QR de un solo uso y PDF, validadas por cámara desde el perfil de empleado.
  • Panel de administración: películas, funciones con sala asignada automáticamente, precios y reportes en PDF y Excel.
  • PWA con notificaciones push de estrenos.

Decisiones técnicas

La seguridad vive en la base de datos

Los permisos de cada rol están en Row Level Security de Postgres. Los guards de Angular solo ordenan la navegación: aunque alguien los saltee, la base no le devuelve datos ajenos.

Butacas sincronizadas con Realtime

Cada cliente ve en vivo las butacas que toman los demás, con Supabase Realtime.

Requisitos y decisiones documentados

42 requerimientos y 14 decisiones técnicas escritas en el repo, cada una con las alternativas evaluadas.

Stack

  • Angular 22
  • TypeScript
  • Signals
  • Supabase Auth
  • Postgres + RLS
  • Realtime
  • Storage
  • Edge Functions
  • PWA
  • Vitest
  • Vercel

Qué haría distinto

  • Probaría el diseño en celular desde el primer día: hoy, en pantallas angostas, la cartelera se corta a la derecha.
  • Haría que la demo se mantenga sola, con una tarea programada en la base que cree funciones a futuro. Las funciones cargadas a mano se vencen y la compra deja de poder probarse.
Ver otros proyectos

Ezequiel Bainer

Buenos Aires, Argentina

© 2026