尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證gestia app
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗SaaS de ventas, caja y clientes para escuelas de conducción. Multi-tenant: cada organización (escuela) tiene sus propias sedes, usuarios, clientes, ventas y caja, aisladas a nivel de RLS en Postgres.
Proyecto 100% independiente de ceapp-aula-virtual — repo propio, proyecto
Supabase propio, sin código ni base de datos compartida.
.env.local.example a .env.local y completar con los datos de
un proyecto Supabase nuevo (Project Settings → API):
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
supabase/schema.sql completo en el SQL Editor del proyecto
(tablas, funciones, triggers y policies de RLS — es idempotente, se puede
volver a correr sin romper nada).platform_owner (paso manual único, no hay UI
para esto todavía — es la cuenta con la que vos, el dueño del producto,
entrás a /platform a provisionar organizaciones nuevas):
platform_owner (el trigger
handle_new_user ya le creó un profiles con role ejecutivo por
default):
update public.profiles
set role = 'platform_owner', organization_id = null, sede_id = null, full_name = 'Tu nombre'
where id = '<uuid del usuario creado>';
npm install && npm run dev, entrar en /login con esa cuenta → te
redirige a /platform.Desde /platform se provisiona cada organización cliente nueva (nombre,
primera sede, y la cuenta admin de esa escuela) — no hay registro público.
platform_owner: el vendedor del producto. Solo administra el listado de
organizaciones — no tiene acceso a los datos de ningún tenant (ni
clientes, ni ventas, ni caja). Es una decisión de seguridad deliberada.admin: dueño/administrador de una organización. Ve y gestiona todas las
sedes de su organización: clientes, ventas, caja, sedes y usuarios.ejecutivo: usuario de una sede específica. Solo ve/opera clientes,
ventas y caja de su propia sede.Ventas simples (pago completo al momento, sin abonos ni comisiones de
asesor), caja (abrir/cerrar, ingresos/egresos), clientes (CRUD). Huellas
biométricas: solo el campo reservado en la base (fingerprints_enrolled),
sin integración de hardware todavía. Ver comentarios en
supabase/schema.sql para el detalle de qué queda pospuesto a una fase 2
(abonos, comisiones, conciliación de cartera, huellas, registro público).
Antes de dar por buena cualquier versión de este proyecto, seguir el
checklist de aislamiento del plan original (provisionar 2 organizaciones,
confirmar que ninguna ve datos de la otra ni por UI ni pegándole directo al
REST de Supabase con el token de un usuario, confirmar que un ejecutivo
no ve otra sede de su misma organización, confirmar que platform_owner no
tiene acceso de lectura a tablas de tenant).
Next.js (App Router) + Tailwind CSS + Supabase (@supabase/ssr,
@supabase/supabase-js). Server Components + Server Actions,
createClient() (RLS-bound) vs createAdminClient() (service-role,
server-only) — ver src/lib/supabase/.