Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
Translation pending
Reservas para restaurantes: página propia, mesas asignadas solas y un panel para el turno. El comensal reserva sin registrarse y sin dejar seña.
Translation pending
BusinessTypeScript · JavaScriptGitHub @leankonOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
resto — plataforma SaaS de reservas multi-local Plataforma multi-tenant de reservas para gastronomía: cada local tiene su propia página de reservas, su plano de salón y su panel de staff, todo corriendo sobre la misma plataforma. Asignación automática de mesas, lista de espera, notificaciones multi-canal y reservas por WhatsApp. No hace falta ninguna cuenta en la nube para trabajar en la Fase 1. El esquema usa Postgres estándar, así que lo que corre local corre igual en Supabase, Neon o Railway.Read the full README ↗
Plataforma multi-tenant de reservas para gastronomía: cada local tiene su propia página de reservas, su plano de salón y su panel de staff, todo corriendo sobre la misma plataforma. Asignación automática de mesas, lista de espera, notificaciones multi-canal y reservas por WhatsApp.
No hace falta ninguna cuenta en la nube para trabajar en la Fase 1. El esquema usa Postgres estándar, así que lo que corre local corre igual en Supabase, Neon o Railway.
npm install
npm run db:start # levanta Postgres, crea la base y aplica migraciones
npm run db:demo # carga un local de prueba con reservas
npm run db:migrar # aplica migraciones pendientes (necesita DATABASE_URL_OWNER)
npm run dev # panel en http://localhost:3000
npm test # 304 tests
npm run test:unit # solo el motor, sin base de datos
npm run humo # recorrido de humo en navegador (requiere el server andando)
npm run humo:salon # recorrido de humo sobre la carga del salón
npm run humo:horarios # recorrido de humo sobre horarios y turnos
npm run humo:equipo # recorrido de humo sobre el equipo y los permisos
npm run humo:publico # recorrido de humo sobre la web pública y el widget
npm run humo:plano # recorrido de humo sobre el salón en vivo y la reasignación
npm run humo:google # recorrido de humo sobre lo que ve Google
npm run humo:espera # recorrido de humo sobre la lista de espera
Cada recorrido de humo deja la base cambiada (carga reservas, mueve mesas, marca
feriados). Corré npm run db:demo antes de cada uno: si no, el siguiente falla por lo
que dejó el anterior y no por un problema de verdad.
Usuarios de prueba que deja db:demo:
| Dónde | Usuario | Contraseña |
|---|---|---|
Panel del local (/login) | [email protected] | bar-demo-123 |
Plataforma (/admin/login) | [email protected] | plataforma-123 |
La página pública del local de demo queda en /r/bar-demo. No pide usuario: es la que
ve alguien de la calle.
Fase 1 completa. Un local se puede dar de alta y operar de punta a punta:
/admin): alta de locales con su dueño, suspender y reactivar.Fase 2 en curso. El local ya toma reservas de la calle:
La página del local (/r/<local>): elegir día y cantidad, ver los horarios que
tienen lugar de verdad, y reservar dejando nombre y teléfono. Sin cuenta, sin seña.
El widget: una línea de <script> mete el mismo formulario adentro de la web del
local, ajustándose solo al alto que necesita.
La reserva del cliente (/r/<local>/reserva/<token>): vuelve a su reserva con el
link que le quedó, y cancela desde ahí. La mesa se libera en el acto.
Reservas web (/panel/publico): prender o apagar la página, los datos que se
muestran y los cuatro límites con los que el local acepta reservas de gente que no
conoce.
El salón en vivo (en la planilla del día): el plano a escala a la hora que se mire, con cada mesa pintada según quién la tiene. Tocar una mesa ocupada y después una libre mueve la reserva entera. Solo se ofrecen las mesas que aguantan el turno completo: una mesa libre a las 21:00 pero tomada a las 21:15 no sirve, y ofrecerla sería mandar al mozo a un rechazo con el cliente esperando.
Para que la encuentren: la página de cada local se declara como restaurante, con su
dirección, su teléfono, su horario y su acción de reservar, más sitemap.xml y
robots.txt. El objetivo es aparecer cuando alguien busca ese local por su nombre;
competir por "restaurante" no es alcanzable (D18).
Fase 3 en curso. Avisos y lista de espera andando:
Falta de la Fase 3: el bot de WhatsApp, que necesita una cuenta de Meta y plata.
src/
dominio/ lógica pura, sin I/O: motor, turnos, combinaciones, identidad, passwords
datos/ esquema SQL, migraciones, repositorios, conexiones por rol
servicios/ casos de uso: reservas, auth, panel, administración
web/ helpers del panel: sesión, formato de fecha y hora
app/ pantallas (Next.js App Router)
Todo lo que vive en dominio/ es función pura: recibe datos, devuelve decisiones. No
toca la base, no conoce transacciones, no sabe qué es un tenant. Es lo que permite
testear el motor sin levantar un servidor.
Leer en orden:
| Doc | Contenido |
|---|---|
| 00 — Decisiones tomadas | lo que ya está definido y por qué |
| 01 — Viabilidad y riesgos | qué es viable, los cinco puntos caros del brief |
| 02 — Stack y arquitectura | stack recomendado con alternativas, multi-tenancy, hosting, proveedores y costos |
| 03 — Modelo de datos y asignación | tablas, el motor de mesas, concurrencia, auditoría |
| 04 — Notificaciones | motor multi-canal, resolución de canal, consentimiento, outbox |
| 05 — Preguntas abiertas | lo que falta definir antes de la Fase 1 |
| 06 — Cómo desplegar | pasar de la máquina a internet: base, hosting y qué falta para producción |
tenant_id + Row Level Security de Postgres.EXCLUDE USING gist sobre (mesa, periodo).