new-term-radar
Daily radar for new AI terms: names of new models, products and repos, caught on X, Hugging Face, GitHub and sitemaps before keyword tools list them.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Producto multi-tenant de Cofundo: un comercial compone un dossier vivo por prospecto (módulos de UI animados, orden, ocultos, precio) y lo comparte como enlace bajo la marca de su empresa (pitch. /d/). Enjoy the Club es el primer tenant.查看完整 README ↗
Producto multi-tenant de Cofundo: un comercial compone un dossier vivo por prospecto (módulos de UI animados, orden, ocultos, precio) y lo comparte como enlace bajo la marca de su empresa (pitch.<tenant>/d/<token>). Enjoy the Club es el primer tenant.
docs/SETUP.mdnh-*): docs/BRAND_INTAKE.mddocs/PLAYBOOK.mddocs/EVIDENCE.mddocs/DESIGN_SYSTEM.mddocs/PARTNERS.mddocs/PLAN.mddocs/ADR-0001-stack.mddocs/MODULE_AUTHORING.mddocs/ONBOARDING_TENANT.mdStack: Astro 5 SSR (Vercel o Node/Docker) · Tailwind 3 sobre CSS vars · Zod · Svelte 5 (builder) · Supabase (Postgres + Auth + RLS).
npm install
cp .env.example .env # deja vacías las claves de Supabase → modo DEMO con supabase/seed/fixtures.json
npm run dev # http://localhost:4321
# o con el build de producción: npm run build && npm run start:demo
En un build de producción sin Supabase la app responde 503 (no entra en demo salvo
DEMO_MODE=1).
| URL | Qué demuestra |
|---|---|
| http://localhost:4321/d/demo-sala-x-7Qm2 | Dossier "Sala X" de Enjoy: orden por rank, 1 módulo oculto, per_module con override (250 € + 450 € = 700 €), dos tabs-showcase animando independientes |
| http://retheme.localhost:4321/d/demo-retheme-Hx8v | Mismos módulos con otro tenant → re-skin solo con theme_tokens |
/d/demo-draft-Kp9wQ1, /d/demo-revoked-Zt4c, /d/demo-expired-Bn3r | Gates → 404 idéntico |
| http://retheme.localhost:4321/d/demo-sala-x-7Qm2 | Token válido bajo otro tenant → 404 |
| http://localhost:4321/admin | Consola: en demo eliges usuario (comercial / admin de Enjoy, o comercial de otro tenant → 403) |
localhost se resuelve al tenant DEV_TENANT_SLUG (por defecto enjoy); *.localhost se resuelve por la tabla domain.
En modo demo los cambios hechos en /admin se ven al momento en /d/<token> (BD en memoria; se pierde al reiniciar).
Producción: sigue docs/SETUP.md. En local con la CLI (supabase start aplica migraciones, seed de demo y plantillas de email de supabase/config.toml).
security definer (resolve_tenant, get_public_dossier).@supabase/ssr); cada consulta va con el JWT del usuario → la RLS aplica siempre. La service_role solo se usa para invitar usuarios y en el script de alta.npm run tenant:bootstrap -- tenants/<slug> (docs/ONBOARDING_TENANT.md)./admin| Ruta | |
|---|---|
/admin/login | Login (demo: selector de usuario) |
/admin | Listado: filtros por estado / "solo míos" / búsqueda; alta de dossier (vacío o desde plantilla) |
/admin/dossiers/:id | Builder: datos del prospecto, modo de precio (none/total/per_module), catálogo, reordenar (drag & drop + botones ↑↓), ocultar, precio por módulo, personalizar textos (JSON validado contra el schema), actualizar a la última versión del módulo, publicar/despublicar/archivar/borrar, generar/copiar/revocar enlaces con caducidad, vista previa móvil/tablet/escritorio |
/admin/dossiers/:id/preview | Vista previa autenticada (cualquier estado) |
/admin/api/dossiers/:id | API JSON del builder: GET estado · POST {op} → estado · DELETE |
/admin/catalog (admin) | Módulos y versiones: crear variante, borrador → publicar → archivar, preview, uso por dossiers |
/admin/team (admin) | Invitar por email, cambiar rol, quitar (nunca sin al menos un admin) |
/admin/brand (admin) | Colores, radios, tipografía (fuente propia), logos/favicon/imagen OG (subida a Storage), contacto (WhatsApp…), con vista previa |
/admin/learn | Aprende a vender: formación por módulo (jugadas oficiales, vista previa del módulo, trucos del equipo, votos, proponer mejoras), progreso y novedades |
/admin/learn/sector/:key | Sector: cliente ideal, cómo compran, módulos que encajan y actores (quién decide, paga, puede tumbarlo; cómo abordarles) |
/admin/compose | Preparar mensaje: contexto listo para el Cerebro de Ventas en Claude/ChatGPT («tipo DJ → mensaje») |
/admin/playbook (admin) | Mercado y actores (editor), bandeja de propuestas, jugadas (crear/editar con versión y nota), «qué funciona», exportación con formato del Cerebro |
/admin/dossiers/:id → «Guion de venta» | Guion de la reunión generado del playbook para ese dossier (orden, precio, objeciones); imprimible en |
Arquitectura: el builder (Svelte) solo envía operaciones (src/lib/admin/ops.ts); las reglas viven en un único servicio (src/lib/admin/service.ts) sobre la interfaz AdminDb, con dos implementaciones: memoria (demo) y Supabase con la sesión del usuario. La misma batería de tests de contrato (service.contract.ts) se ejecuta contra ambas.
| Script | |
|---|---|
npm run dev / build / start / start:demo | Desarrollo / build SSR / servidor Node / servidor Node en demo |
npm run tenant:bootstrap -- tenants/<slug> [--dry-run] | Alta/actualización idempotente de un tenant en Supabase (service role) |
npm run check | astro check (tipos) |
npm test | Vitest: unitarias de todo src/ y los contratos contra la base demo (ver docs/DESARROLLO.md) |
npm run db:test | Migración + seed + aserciones de RLS/RPC sobre un Postgres pelado (stub de auth), sin Supabase CLI |
npm run db:it | Contrato del servicio de la consola (dossiers, equipo, catálogo, marca) y script de alta contra Postgres + PostgREST + RLS reales con supabase-js (POSTGREST_BIN=/ruta/postgrest) |
npm run db:seed:build | Regenera supabase/seed.sql desde fixtures.json (CI comprueba que está al día) |
node scripts/smoke-e2e.cjs | Smoke Playwright del enlace público (orden, precios, 404s, tema, multi-instancia) |
node scripts/smoke-admin.cjs | Smoke Playwright de la consola: plan §13 pasos 2–7 por la UI (login, crear, drag & drop, ocultar, precio, publicar, enlace, revocar, RBAC, móvil) |
node scripts/smoke-tenant-admin.cjs | Smoke Playwright de catálogo, equipo y marca (incl. reflejo en el enlace público) |
node scripts/smoke-market.cjs | Smoke Playwright de sectores/actores, Preparar mensaje, cuenta del dossier, guion «Con quién hablas» y seguimiento |
node scripts/smoke-playbook.cjs | Smoke Playwright del playbook: aprender, votar, compartir, proponer, bandeja del líder, guion en el builder |
Los smokes van contra un servidor en modo demo: npm run build && npm run start:demo. Hay uno por flujo en scripts/smoke-*.cjs (todos en CI); arriba solo los primeros. Cómo se prueba, dónde va cada cosa y las reglas de rendimiento: docs/DESARROLLO.md.
src/
middleware.ts Host → tenant, CSRF, sesión de /admin, cabeceras
pages/d/[token].astro Renderer público SSR
pages/admin/ Consola (login, listado, builder, preview, API)
components/admin/Builder.svelte Isla del builder
components/dossier/DossierView.astro Render compartido (público + preview)
lib/admin/ ops (contrato), service (reglas), db-demo / db-supabase, auth
layouts/ThemedShell.astro Inyección de theme_tokens ⊕ theme_override
modules/
registry.ts block_type → { schema, Component }
resolve.ts default_props ⊕ prop_overrides → schema.parse + ctx (precio, prospecto)
runtime.ts mountAll/init(root): JS por instancia
hero-pitch/ tabs-showcase/ pricing-card/ (Component.astro + schema.ts + client.ts)
lib/
theme.ts pricing.ts rank.ts tenant.ts env.ts
data/ (index: repositorio público · supabase.ts · demo.ts · mappers.ts)
components/ (Button, Card, Container, Section, Icon, ItemPrice)
supabase/
migrations/ Esquema + RLS + RPC
seed/fixtures.json Fuente única de datos de ejemplo (demo + seed.sql)
tests/ Stub de Supabase + aserciones RLS
Fase 0 — hecha
var(--…), tokens, átomos, shell temadohero-pitch, tabs-showcase (estrella, multi-instancia probada), pricing-card/d/<token> con gates y 404 neutroFase 1 — consola y builder: hecha
none|total|per_module + overrides, personalización validada, actualizar versión, publicar/despublicar/archivar/borrar, enlaces con caducidad y revocación, vista previa por dispositivoFase 1.5 — listo para producción (salvo cuentas y datos de Enjoy)
/api/healthtenants/enjoy prerrellenado; despliegue Vercel/Docker; guía SETUPPlaybook de ventas — propuesta implementada para revisar (docs/PLAYBOOK.md)
tenant.json; contenido de ejemplo para EnjoyMercado, contexto y seguimiento (docs/PLAYBOOK.md §6–7, docs/FOLLOWUP.md)
Colaboradores — propuesta implementada para revisar (docs/PARTNERS.md)
partner con RLS propia: solo sus dossiers, sus módulos y los sectores de sus cuentas; nunca lee la tarifa (RPC sin precios)Diseño y evidencia — propuesta implementada para revisar (docs/DESIGN_SYSTEM.md, docs/EVIDENCE.md)
lint:copy en CIPendiente — necesita a otra persona
docs/SETUP.mdtenants/enjoy/ (marca, assets, copys, admins) → docs/BRAND_INTAKE.mdnh-* y añadir logo-marquee, testimonials, steps-howitworksPendiente — siguiente iteración
/script/admin/account | Nombre y contraseña (también destino de invitación y recuperación) |
/admin/auth/confirm | Destino de los emails de Auth (token_hash o code) |
/api/health | Estado y diagnóstico de configuración (sin secretos) |