Lalabase
티켓·문서·근무시간·고객대화를 한 곳에 모아 KI로 검색, 소프트웨어 기업 고객 프로젝트용, 오픈소스로 자체 서버·독일 클라우드에 배포
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Plataforma con un único chatbot configurable. Contexto: constitution.md, roadmap.md, specs/. La app no arranca si falta DATABASE_URL o si ENCRYPTION_KEY no es de 32 bytes en base64. Sin estas variables todo funciona, pero el chatbot dice que no puede agendar citas. Para habilitarlo:README 전문 보기 ↗
Plataforma con un único chatbot configurable. Contexto: constitution.md, roadmap.md, specs/.
Requisitos: Node 22.9 o superior (npm run db:migrate usa --env-file-if-exists, que existe desde esa versión) y
Docker, para la base de datos.
npm install
docker compose up -d # PostgreSQL 17 en localhost:5432
cp .env.example .env.local # y completar ENCRYPTION_KEY con: openssl rand -base64 32
npm run db:migrate # aplica las migraciones de ./drizzle
npm run dev # http://localhost:3000
La app no arranca si falta DATABASE_URL o si ENCRYPTION_KEY no es de 32 bytes en base64.
Si el puerto 5432 ya está ocupado por otro PostgreSQL, cambia el puerto en docker-compose.yml
(por ejemplo "55432:5432") y ajusta el puerto en DATABASE_URL.
Para que el chatbot responda hay que cargar un proveedor (OpenAI u OpenRouter), un modelo y una API key en la
pantalla «Tu chatbot». Eso se guarda cifrado en la base, no en .env.local. Sin eso la plataforma funciona, pero el
chat no contesta.
Variable opcional: AGENDA_TIME_ZONE es la zona horaria de las citas (006). Por defecto, America/Bogota.
Sin estas variables todo funciona, pero el chatbot dice que no puede agendar citas. Para habilitarlo:
http://localhost:3000/api/google/callback.env.local (GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, GOOGLE_REDIRECT_URI).Después, en «Tu chatbot» → «Agendamiento de citas», conecta la cuenta y define el horario de atención.
Los permisos que se piden son los mínimos: crear eventos (calendar.events) y consultar disponibilidad
(calendar.freebusy). El permiso se guarda cifrado, igual que la API key.
Variables de entorno en Vercel, solo en Production (las cadenas salen del botón «Connect» de Supabase):
DATABASE_URL — Transaction pooler (puerto 6543): la usa la app.DATABASE_MIGRATION_URL — Session pooler (puerto 5432): la usan las migraciones, que Supabase recomienda correr por la conexión directa o por este pooler, no por el de transacciones.ENCRYPTION_KEY — una nueva, distinta de la local. Si se pierde, hay que volver a cargar la API key y reconectar Google.npm run build aplica las migraciones después de compilar, solo cuando VERCEL_ENV=production. Si fallan, el despliegue
no sale. Mientras corre el build, la versión anterior sigue atendiendo con el esquema nuevo: un cambio que borre o
renombre columnas se hace en dos despliegues.
npm test — Vitest (unitarios e integración; requiere la base levantada)npm run lint, npm run typecheck, npm run buildnpm run db:generate — genera una migración a partir de lib/schema.tsPara comprobar que quedó bien montado, con la base levantada:
npm test && npm run lint && npm run typecheck && npm run build