Referencia rápida de comandos

Ejecuta estos comandos desde la carpeta elgatomenu. En Windows usa elgatomenu sin el ./.

Todos los comandos

Iniciar./elgatomenu start
Detener./elgatomenu stop
Reiniciar./elgatomenu restart
Ver estado./elgatomenu status
Logs en vivo./elgatomenu logs
Logs de la app./elgatomenu logs elgatomenu
Logs de base de datos./elgatomenu logs db
Ver URLs de red./elgatomenu hostname
Hacer backup./elgatomenu backup
Restaurar backup./elgatomenu restore backups/archivo.sql
Actualizar./elgatomenu update
Crear cuenta admin./elgatomenu add-owner
Ver ayuda./elgatomenu help

Gestión del equipo

Crea cuentas individuales para tu personal y controla exactamente a qué partes de ElGatoMenu pueden acceder.

Roles de usuario

Cada miembro del equipo puede tener cualquier combinación de tres roles:

🍽️ Menú

Puede agregar, editar y ocultar platos y categorías en la Carta.

💳 Pagos

Puede verificar y rechazar órdenes en el dashboard de pagos.

👨‍🍳 Cocina

Puede ver y completar órdenes en la pantalla de cocina.

Los usuarios sin rol asignado pueden iniciar sesión pero no pueden hacer nada. Los Admins tienen acceso completo a todo, incluyendo Configuración y Gestión de usuarios. Tu cuenta (creada durante la instalación) siempre es admin.

💡 Si un usuario tiene solo el rol Cocina, al iniciar sesión va directamente a la pantalla de cocina — nunca ve el dashboard principal.

Crear un usuario

  1. Ve al dashboard y haz clic en 👥 en el encabezado
  2. Haz clic en + Añadir usuario
  3. Ingresa nombre, correo y contraseña temporal
  4. Marca los roles que necesita
  5. Haz clic en Crear usuario

El usuario puede iniciar sesión en http://{tu-ip}:3000/dashboard/login.

Cambiar los roles de un usuario

  1. Haz clic en 👥 en el encabezado
  2. Encuentra el usuario y haz clic en ✏️
  3. Marca o desmarca los roles
  4. Haz clic en Guardar

Los cambios se aplican inmediatamente — el usuario verá el acceso actualizado la próxima vez que cargue una página.

Eliminar un usuario

  1. Haz clic en 👥 en el encabezado
  2. Encuentra el usuario y haz clic en 🗑
  3. Confirma la eliminación

Esto elimina permanentemente su acceso.

Restablecer contraseña

No hay restablecimiento de contraseña automático. Si un miembro del equipo olvidó su contraseña:

  1. Elimina su cuenta (👥 → 🗑)
  2. Crea una nueva con contraseña diferente (👥 → + Añadir usuario)

Crear una cuenta admin adicional

Usa el CLI:

./elgatomenu add-owner

Se te pedirá un correo y contraseña (ingresada dos veces para confirmar).


Backup y restauración

Crear un backup

./elgatomenu backup

Guarda un archivo como backups/elgatomenu_db_20260516_093000.sql en la carpeta del proyecto.

El backup incluye: categorías y platos, órdenes e historial de pagos, configuración del restaurante y cuentas de administrador.

No incluye imágenes de comprobantes ni fotos de platos (están en volúmenes Docker).

Frecuencia recomendada

Guarda los backups fuera de la computadora

La carpeta backups/ está en la misma máquina. Si falla la computadora, pierdes todo. Copia los archivos a al menos un lugar adicional:

Restaurar desde backup

./elgatomenu restore backups/elgatomenu_db_20260516_093000.sql
⚠️ Advertencia: esto sobreescribe la base de datos actual. Todos los cambios desde el backup se perderán. El sistema pedirá confirmación antes de proceder.

Después de restaurar, reinicia:

./elgatomenu restart

Actualizar ElGatoMenu

./elgatomenu backup
./elgatomenu update

Siempre haz backup primero. El comando de actualización:

  1. Descarga la versión más reciente desde GitHub
  2. Reconstruye la aplicación web
  3. Reinicia todos los servicios

La app estará brevemente no disponible durante el reinicio (generalmente menos de 30 segundos).

Mejor momento para actualizar: antes de abrir, o entre turnos.


Red y seguridad

Puertos utilizados

PuertoServicioQuién accede
3000App ElGatoMenuClientes y personal — comparte esta URL
3001Supabase StudioSolo tú — NO compartas públicamente
8000API SupabaseUso interno de la app

Supabase Studio (puerto 3001)

Studio es el panel de administración de la base de datos. Úsalo para ver tablas, ejecutar consultas y exportar datos. Accede en http://{tu-ip}:3001.

Login: usuario supabase, contraseña = tu contraseña de Postgres (en el archivo .env como POSTGRES_PASSWORD).

🔒 Mantén Studio privado. Cualquiera con acceso al puerto 3001 puede leer y modificar todos los datos. Nunca compartas este puerto ni lo incluyas en el WiFi del restaurante.

El archivo .env

El archivo .env en la carpeta elgatomenu contiene todos los secretos: contraseña de base de datos, claves de firma y tokens internos. Nunca lo compartas. Si queda expuesto, ejecuta ./elgatomenu install en una copia limpia para generar nuevos secretos (esto resetea la base de datos — haz backup primero).


Solución de problemas

La app no carga

Verifica el estado de los contenedores:

./elgatomenu status

Todos los servicios deben mostrar Up. Si alguno muestra Restarting o Exited:

./elgatomenu logs       # ver qué está fallando
./elgatomenu restart    # intentar reiniciar

Los clientes no pueden acceder desde sus celulares

  1. Confirma que ElGatoMenu está corriendo (./elgatomenu status)
  2. Ejecuta ./elgatomenu hostname — verifica la IP
  3. Confirma que el celular del cliente está en el mismo WiFi que la computadora del servidor
  4. Intenta abrir la URL desde la computadora del servidor — si funciona ahí pero no en celulares, es un problema de red
  5. Verifica si el router bloquea el tráfico entre dispositivos ("AP isolation" o "client isolation") — desactívalo si es el caso

Error "Restaurante no configurado"

Falta el registro del restaurante en la base de datos. Ejecuta:

./elgatomenu seed

Las órdenes no aparecen en tiempo real

  1. Verifica que el contenedor realtime está corriendo: ./elgatomenu status
  2. Si muestra Restarting, reinícialo: docker compose restart realtime

El OCR no lee los comprobantes

  • Verifica que la imagen sea clara y no esté oscura
  • Los screenshots de DeUna y Sipi son los que mejor se leen
  • Imágenes borrosas o rotadas pueden fallar — siempre puedes verificar manualmente
  • La verificación manual siempre puede reemplazar al OCR — un OCR fallido no bloquea la aprobación

Después de un corte de luz

ElGatoMenu reinicia automáticamente. Espera unos 2 minutos después de que vuelva la luz. Si no responde:

./elgatomenu start

Los pedidos en la base de datos se conservan. Los pedidos que se estaban realizando exactamente en el momento del corte podrían perderse.

El disco está casi lleno

docker system df

Limpia el caché de construcción de Docker (seguro, no borra tus datos):

docker system prune