Lalabase
티켓·문서·근무시간·고객대화를 한 곳에 모아 KI로 검색, 소프트웨어 기업 고객 프로젝트용, 오픈소스로 자체 서버·독일 클라우드에 배포
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Micro-SaaS de gestión de personal para PyMEs con operarios por turno. Ver el spec funcional y de datos completo en docs/PERSONALCHECK-SPEC.md antes de tocar código — es la fuente de verdad de decisiones ya validadas. Prototipo navegable (UX/flujo/copy de referencia): ver link en la sección 1 del spec. Next.js (App Router) + TypeScript + Tailwind, sobre el proyecto Supabase compartido del portfolio (schema propio personalcheck). Ver saas-shared-infra (skill del portfolio) para la arquitectura compartida.README 전문 보기 ↗
Micro-SaaS de gestión de personal para PyMEs con operarios por turno. Ver el
spec funcional y de datos completo en docs/PERSONALCHECK-SPEC.md
antes de tocar código — es la fuente de verdad de decisiones ya validadas.
Prototipo navegable (UX/flujo/copy de referencia): ver link en la sección 1 del spec.
En producción: https://personal-check-omega.vercel.app
Next.js (App Router) + TypeScript + Tailwind, sobre el proyecto Supabase
compartido del portfolio (schema propio personalcheck). Ver
saas-shared-infra (skill del portfolio) para la arquitectura compartida.
npm install
cp .env.example .env.local # completar con las credenciales del proyecto Supabase compartido
npm run dev
Nota:
@supabase/supabase-jspide Node >=22; el entorno local puede tener Node 20 (funciona igual, es solo un warning de npm).package.jsonya fijaengines.node >= 22para el deploy.
Están en docs/migrations/, aplicar en este orden (vía
SQL Editor del dashboard, o directo por conexión a Postgres, apuntando al
proyecto compartido del portfolio):
20260902_personalcheck_initial_schema.sql20260914_personalcheck_super_admin_y_alcance_area.sql20260914_personalcheck_tardanza_y_unidad.sql20260915_personalcheck_org_actual_respeta_suspension.sql20260915_personalcheck_grants_api_roles.sql — no te la saltees: sin
esto, la Data API devuelve permission denied for schema personalcheck
aunque el schema esté expuesto en Project Settings > Data API20260915_personalcheck_admins_eliminados_pierden_acceso.sql20260915_personalcheck_auditoria_solo_admin.sql20260915_personalcheck_tardanza_justificada.sql — separa Tardanza en
injustificada/justificada (decisión de negocio que reemplaza a la
original del spec)20260917_personalcheck_salida_anticipada.sql — agrega Salida
anticipada injustificada/justificada (mismo patrón que Tardanza)20260918_personalcheck_licencia_anual_ordinaria.sql — agrega Licencia
Anual Ordinaria (neutra, no toca el banco de días compensatorio)20260918_personalcheck_cambio_dia_y_horario.sql — agrega Cambio de
día y Cambio de horario (avisos, no movimientos de saldo)20260918_personalcheck_cambio_horario_minutos.sql — corrige la unidad
de Cambio de horario a minutos (igual que Tardanza)20260918_personalcheck_auditoria_escritura_supervisor.sql — no te
la saltees: corrige un bug real donde un Supervisor no podía escribir
en Auditoría (solo se había restringido lectura por error, la policy
también bloqueaba el INSERT) — sin esto, ninguna acción de un
Supervisor queda en el historial20260922_personalcheck_dividir_extra_trabajado.sql — renombra "Día/hora
extra trabajado" a "Día extra trabajado" (mismo tipo, mismos
movimientos ya cargados) y agrega "Hora extra trabajada" (minutos,
bloques de 30, neutra)20260922_personalcheck_licencia_extraordinaria.sql — agrega Licencia
Extraordinaria (mismo tratamiento que Licencia Anual Ordinaria)20261001_personalcheck_editar_novedad_solo_admin.sql — agrega
editado_por/motivo_edicion a movimientos, para marcar en la ficha
cuándo una novedad fue corregida y por qué (el permiso en sí — un
Supervisor solo puede corregir/eliminar sus propias novedades, no las de
un compañero — se restringe en el código, no acá)20261008_personalcheck_rls_por_operacion.sql — reemplaza las policies
FOR ALL sin WITH CHECK de admins, organizaciones y movimientos
por una policy por operación, con el mismo permiso que ya tenía el
código (cierra una escalada real: un Supervisor podía, vía API directa,
cambiar su propio rol a admin o tocar la novedad de un compañero)20261022_personalcheck_operarios_trigger_eliminacion.sql — trigger que
bloquea el soft-delete de operarios (deleted_at) a quien no sea
Admin, espejo a nivel de base del mismo permiso que ya tenía
"Eliminar personal" en el códigoAdemás, en Project Settings > Data API, el schema personalcheck y sus
10 tablas tienen que estar tildados en "Exposed schemas" / "Exposed tables"
— a diferencia de public, un schema nuevo no se expone solo.
Los seeds con datos reales de clientes (nombres de personas) viven en
docs/seeds/ fuera del repo (gitignored a propósito) — pedile el
archivo a Dante si necesitás recargarlos, nunca van a control de versiones.
Vercel, cuenta compartida del portfolio (proyecto personal-check).
Variables de entorno de producción (vercel env add <NOMBRE> production):
NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY,
SUPABASE_SERVICE_ROLE_KEY, NEXT_PUBLIC_SITE_URL (la URL de producción
real — hay que actualizarla si el dominio cambia, y redeployar).
RESEND_API_KEY/RESEND_FROM_EMAIL opcionales — sin ellas, las alertas de
saldo solo se loguean en vez de mandarse de verdad.
Supabase Auth → uri_allow_list tiene que incluir la URL de producción
(https://tu-dominio/*) — si no, el link de invitación de un admin/
supervisor puede no redirigir bien. Se administra vía la Management API
(PATCH /v1/projects/{ref}/config/auth) con SUPABASE_ACCESS_TOKEN, sin
tocar el site_url (es compartido con el resto del portfolio).
npx vercel --prod
main — produccióndev — integraciónfeature/nombre-corto — trabajo en cursosrc/
app/
(app)/ # rutas autenticadas (layout compartido con nav)
login/
invitacion/ # el invitado crea su contraseña acá
components/
lib/
supabase/ # clientes browser/server + Auth Admin API
personal/ # reglas de negocio, queries, informes
validations/ # esquemas zod
types/
proxy.ts # refresco de sesión + protección de rutas (convención Next.js 16)
npm run types:generate
Requiere SUPABASE_ACCESS_TOKEN (personal, de tu cuenta:
supabase.com/dashboard/account/tokens) y SUPABASE_PROJECT_ID en
.env.local — ver .env.example. No usa Docker ni la contraseña de la
base, pega directo contra la Management API de Supabase.
Fases 1 a 3 del roadmap (ver spec, sección 8) completas:
Pendiente, no por decisión técnica sino de negocio/datos: