尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Soporte remoto por video (WebRTC): enlace/QR, puntero, dibujo, congelar, foto, grabacion, compartir pantalla
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
En vivo: (dominio propio, comprado vía Vercel; www redirige al apex con 308). El alias fieldlens-nu.vercel.app sigue funcionando. GitHub Pages también sirve la videollamada, pero sin el reporte IA porque no corre funciones serverless. Soporte visual remoto: el teléfono del técnico de campo se convierte en los ojos del técnico de oficina. El de oficina abre la consola, genera un enlace / QR y lo comparte. El de campo lo abre en su teléfono, permite la cámara y quedan conectados. Desde la consola el de oficina puede:查看完整 README ↗
En vivo: https://fokoremote.com (dominio propio, comprado vía Vercel;
www redirige al apex con 308). El alias fieldlens-nu.vercel.app sigue
funcionando. GitHub Pages https://josepinedo07.github.io/foko/ también sirve
la videollamada, pero sin el reporte IA porque no corre funciones serverless.
Soporte visual remoto: el teléfono del técnico de campo se convierte en los ojos del técnico de oficina.
El de oficina abre la consola, genera un enlace / QR y lo comparte. El de campo lo abre en su teléfono, permite la cámara y quedan conectados. Desde la consola el de oficina puede:
El de campo puede voltear la cámara, encender la linterna, silenciar el micrófono y tocar la pantalla para señalar de vuelta. Antes de conectar pasa por un chequeo de sistemas (cámara / micrófono / red). No necesita cuenta — solo abre el enlace.
La consola de oficina sí requiere cuenta: cada empresa tiene su propio login, su logo/nombre (aparece en la consola, la invitación y el reporte) y puede tener varios técnicos de oficina (dueño + compañeros con un código de invitación).
Ver BRAND.md (wordmark, favicon, tipografía de marca) y
DESIGN.md (sistema de tokens, componentes y reglas de
movimiento) — instrumento de precisión, no app de consumo: oscuro por
defecto, un solo color de acento (que siempre significa "mira aquí"),
tipografía mono para telemetría.
js/rtc-config.js.RTCPeerConnection.getStats() — nada simulado.python3 server.py
getUserMedia solo funciona sobre HTTPS (o localhost), así que hace falta TLS:
python3 server.py --https
La primera vez genera un certificado autofirmado (.cert/, necesita openssl).
El servidor imprime la URL para el teléfono, p. ej. https://192.168.0.102:8443/.
En el teléfono el navegador avisará que el sitio "no es seguro" → Avanzado →
continuar (es tu propio certificado). A partir de ahí la cámara funciona.
La videollamada + anotaciones son 100% estáticas (sirven en cualquier host con
HTTPS: GitHub Pages, Netlify, Vercel…). El asistente de notas IA necesita la
función serverless api/report.js, que solo corre en un host con funciones
(Vercel o Netlify Functions), no en GitHub Pages.
GEMINI_API_KEY — tu clave de Google AI Studio (queda solo en el servidor).SUPABASE_URL — la URL del proyecto de Supabase (ver abajo).SUPABASE_SERVICE_ROLE_KEY — la service role key del mismo proyecto
(Settings → API en el dashboard de Supabase). Nunca va en el frontend.REPORT_MODEL (opcional) — por defecto gemini-3.5-flash-lite.git push si conectas el repo de Git
(ahora mismo el deploy en producción se hace a mano con vercel deploy --prod).En la consola: ⚙ Ajustes → activar "Asistente de notas IA". Ya no hace falta ningún código de acceso manual — el reporte usa la sesión real de la cuenta (ver siguiente sección).
Nota sobre dominios en Vercel: el proyecto vive bajo el slug antiguo
fieldlens(renombrarlo requiere entrar a la cuenta). El alias público que funciona hoy esfieldlens-nu.vercel.app. Se creó tambiénfoko-jpc-hambeo.vercel.app, pero Vercel le aplica su pantalla de login ("Vercel Authentication") aunque el dominio principal esté sin protección — hay que desactivarla también para ese alias en Project Settings → Deployment Protection, o pedir un dominio propio.
El login, las empresas y el logo sí funcionan en cualquier host estático
(Netlify Drop, GitHub Pages, Cloudflare Pages) — hablan directo con Supabase
desde el navegador, no necesitan api/. Lo único que exige un host con
funciones serverless (Vercel/Netlify Functions) es /api/report, porque ahí
vive la API key de Gemini. server.py no se usa en producción en ningún caso.
La P2P directa suele fallar detrás de VPN o CGNAT. El proyecto trae unos TURN
públicos de prueba en js/rtc-config.js; si van lentos,
saca una clave gratis en https://dashboard.metered.ca/ y reemplázalos.
Cada empresa es una fila en companies; cada usuario (técnico de oficina) es
una fila en profiles que apunta a una empresa, con rol owner (la creó)
o member (se unió con el código de invitación). Todo con Row Level Security:
un usuario solo puede leer/escribir su propia empresa. El logo vive en un
bucket de Storage público de solo lectura (logos).
supabase/schema.sql
— se puede volver a correr entero, todo usa if not exists / or replace.supabase/schema.sql.js/supabase-client.js (ya están puestas las de
este proyecto; para uno nuevo, reemplázalas ahí — son públicas por
diseño, RLS es lo que protege los datos).SUPABASE_SERVICE_ROLE_KEY (ver arriba).login.html para el paso de "revisa tu correo".login.html →
"Unirme con código".index.html Selector de rol
login.html Iniciar sesión / crear empresa / unirme con código
remote-expert.html Consola del técnico de oficina (requiere sesión)
field-tech.html Vista móvil del técnico de campo (viewer + systems check)
css/tokens.css Tokens de diseño — única fuente de verdad de color/tipo/espacio
css/design-system.css Componentes (viewer, HUD, toolkit, tray, systems check, toast…)
js/webrtc-manager.js Conexión WebRTC (PeerJS): cámara, mic, pantalla
js/ar-canvas.js Capa de anotación sincronizada
js/ui.js Toast, HUD con estadísticas reales, systems check
js/notes-assistant.js Transcripción por voz + llamada al reporte
js/rtc-config.js Servidores ICE (STUN / TURN)
js/supabase-client.js Cliente de Supabase (auth + empresa)
js/logo.js Wordmark reutilizable (<Logo>)
api/report.js Función serverless: valida sesión, genera el reporte con Gemini
supabase/schema.sql Esquema de base de datos (tablas, RLS, RPCs, storage)
brand/ Assets de marca (favicons, wordmark) — ver BRAND.md
server.py Servidor estático para desarrollo local
DESIGN.md Sistema de diseño de producto
BRAND.md Identidad de marca
Ya hay cuentas reales por empresa (Supabase Auth + RLS) — eso ya no es el parche que era. Lo que falta para cobrar de verdad: medir uso por empresa (cuántos reportes/minutos), un plan/límite, y Stripe para el checkout y la suscripción. No está incluido.