Doc 02 Mapa del Sitio - ronalc90/koptup GitHub Wiki

Mapa del sitio

Resumen. Todas las rutas que existen hoy en www.koptup.com (rama main), sacadas de la carpeta apps/web/src/app: 18 rutas públicas (más la página 404), el hub y las 28 demos, 6 páginas de cuenta, 12 del portal del prospecto y cliente, 13 del panel de administración, 4 rutas internas, 6 rutas API de Next y los archivos especiales (sitemap, robots, imagen para redes). De cada una verás para qué sirve, quién puede entrar, su título SEO real, si Google la puede indexar y una miniatura.

Para quién: el dueño (qué páginas tiene el sitio y quién ve cada una) y un desarrollador (archivo, layout y reglas de acceso). Haz clic en cualquier miniatura para verla en grande.

Índice

  1. El sitio en una imagen
  2. Cómo leer las tablas
  3. Páginas públicas
  4. Demos
  5. Cuenta: entrar, registrarse y activar
  6. Portal del prospecto y del cliente (/dashboard)
  7. Panel de administración (/admin)
  8. Herramientas internas
  9. Rutas API de Next
  10. Archivos especiales: sitemap, robots, imagen para redes
  11. Layouts: qué envuelve a cada ruta
  12. Para desarrolladores
  13. Limitaciones conocidas
  14. Páginas relacionadas

1. El sitio en una imagen

flowchart LR
    classDef visitante fill:#dbeafe,stroke:#2563eb,color:#1e3a8a
    classDef sesion fill:#dcfce7,stroke:#16a34a,color:#14532d
    classDef admin fill:#fef3c7,stroke:#d97706,color:#78350f
    classDef sistema fill:#e0e7ff,stroke:#4f46e5,color:#312e81
    classDef externo fill:#f1f5f9,stroke:#64748b,color:#334155

    ROOT["www.koptup.com"]:::sistema

    subgraph PUB["Públicas"]
        HOME["/ Inicio"]:::visitante
        RAG["/rag y /rag/salud, /rag/legal, /rag/soporte"]:::visitante
        SERV["/services y /pricing que redirige"]:::visitante
        SEO["/chatbots-ia, /soluciones-ia, /desarrollo-web-colombia"]:::visitante
        CONV["/contact y /solicitar-demo"]:::visitante
        INFO["/about, /bienvenido-producthunt"]:::visitante
        LEGAL["/privacy, /terms, /cookies"]:::visitante
    end

    subgraph DEM["Demos"]
        HUB["/demo hub"]:::visitante
        D1["18 demos Abiertas: /demo/slug"]:::visitante
        D2["8 demos Con solicitud"]:::admin
        D3["2 demos Solo por invitación"]:::admin
        GATE["/demo-acceso/slug pantalla de acceso"]:::sistema
        EMB["/embed/chatbot/botId chat para otros sitios"]:::visitante
    end

    subgraph CTA["Cuenta"]
        LOGIN["/login, /register, /auth/callback"]:::visitante
        PASS["/forgot-password, /reset-password"]:::visitante
        ACT["/activar/token"]:::visitante
    end

    subgraph POR["Portal: requiere sesión"]
        DASH["/dashboard y sus secciones"]:::sesion
        MIS["/dashboard/demos Mis demos"]:::sesion
    end

    subgraph PAN["Panel: requiere rol del equipo"]
        COM["/admin/solicitudes, /accesos, /catalogo-demos"]:::admin
        OPE["/admin, /orders, /invoices, /deliverables, /conversations, /users, /contacts, /settings"]:::admin
    end

    subgraph INT["Internas"]
        LIQ["/liquidacion: equipo"]:::admin
    end

    subgraph ARCH["Archivos y API de Next"]
        FILES["/sitemap.xml, /robots.txt, /opengraph-image, /icon, /manifest.json, /llms.txt, /widget.js"]:::externo
        NAPI["/api/linkedin-ads/generate"]:::externo
    end

    ROOT --> PUB
    ROOT --> DEM
    ROOT --> CTA
    ROOT --> POR
    ROOT --> PAN
    ROOT --> INT
    ROOT --> ARCH
    HUB --> D1
    HUB --> D2
    HUB --> D3
    D2 -.->|"sin acceso"| GATE
    D3 -.->|"sin invitación"| GATE
Loading

Azul: cualquiera entra. Verde: con sesión. Ámbar: depende del rol o del acceso a la demo. Gris: archivos y rutas técnicas. La línea punteada muestra que una demo restringida, sin acceso, enseña la pantalla de acceso sin cambiar la URL.


2. Cómo leer las tablas

Columna Valores
Quién entra Público (cualquiera) · Sesión (cualquier cuenta con sesión) · Rol (los roles indicados; ver Roles y permisos) · Acceso a demo (según el modo de la demo)
Título SEO El <title> real que entrega el servidor (el | separa el sufijo de marca)
Indexable Sí: Google puede indexarla y está en sitemap.xml. No: tiene noindex (en la etiqueta robots o en la cabecera X-Robots-Tag), está bloqueada en robots.txt o ambas
Miniatura Captura real; haz clic para verla completa. "—" cuando la ruta no tiene pantalla propia

3. Páginas públicas

Todas llevan el menú y el pie de página comunes. Detalle de cada una, con capturas grandes, en Páginas públicas.

Ruta Para qué sirve Quién entra Título SEO Indexable Miniatura
/ Inicio con el mensaje RAG y las demos destacadas Público KopTup | IA que responde con los documentos de tu empresa Sí Inicio
/rag Página principal de sistemas RAG Público Sistemas RAG para empresas en Colombia | KopTup Sí RAG
/rag/salud Landing RAG para salud Público RAG para salud: protocolos, normativa y auditoría | KopTup Sí RAG salud
/rag/legal Landing RAG para áreas legales Público Buscar en contratos con IA: RAG para áreas legales | KopTup Sí RAG legal
/rag/soporte Landing RAG para soporte y manuales Público Asistente IA para manuales internos y soporte | KopTup Sí RAG soporte
/services Planes RAG y "Otras soluciones a medida" Público Precios de sistemas RAG y software a medida | KopTup Sí Servicios
/pricing Antigua página de precios: redirige de forma permanente (308) a /services#planes-rag Público — No (no está en el sitemap) —
/demo Hub con las 28 demos y su modo de acceso Público Prototipos Interactivos: Prueba Antes de Contratar | KopTup Sí Hub de demos
/solicitar-demo Formulario para pedir demos Público Solicitar una demo guiada | KopTup Sí Solicitar demo
/contact Formulario de contacto y cotización Público Contacto: Solicita tu Cotización Gratis | KopTup Sí Contacto
/about Quiénes somos Público Nosotros: estudio de software a medida en Bogotá | KopTup Sí Nosotros
/chatbots-ia Landing SEO de chatbots RAG Público Chatbots RAG para WhatsApp y web | KopTup Sí Chatbots IA
/soluciones-ia Landing SEO de soluciones de IA Público Soluciones de Inteligencia Artificial para Empresas | KopTup Sí Soluciones IA
/desarrollo-web-colombia Landing SEO de software a medida Público Desarrollo Web y Software a Medida en Colombia | KopTup Sí Desarrollo web Colombia
/bienvenido-producthunt Bienvenida a quien llega desde Product Hunt Público Product Hunt: Software a Medida con Demos | KopTup No (noindex, follow) Product Hunt
/privacy Política de privacidad (Ley 1581) Público Política de Privacidad | KopTup Sí Privacidad
/terms Términos y condiciones Público Términos y Condiciones | KopTup Sí Términos
/cookies Política de cookies y preferencias Público Política de Cookies | KopTup Sí Cookies
(ruta inexistente) Página 404 con enlaces de regreso Público Página no encontrada | KopTup No (noindex, sin canonical) 404

4. Demos

4.1 Hub, pantallas de acceso y chat incrustable

Ruta Para qué sirve Quién entra Título SEO Indexable Miniatura
/demo/<slug> Cada una de las 28 demos (tabla 4.2) Acceso a demo El de cada demo Solo las Abiertas ver 4.2
/demo-acceso/<slug> Pantalla "Solicita acceso", "Inicia sesión", "Venció", "En mantenimiento"… El middleware la muestra en lugar de la demo sin cambiar la URL; también se puede abrir directo Público Nombre de la demo: acceso | KopTup No (noindex y bloqueada en robots.txt) Pantalla de acceso
/demo/ecommerce/admin Atajo: redirige (307) a /demo/ecommerce?view=admin Público — No —
/demo/lms/verificar Verificación pública de certificados de la demo LMS (con el código del QR) Público (no exige acceso a la demo LMS) Verificar certificado | KopTup No (noindex) Verificar certificado
/embed/chatbot/<botId> Chat público de un bot creado en "Configura el tuyo"; lo cargan el iframe y /widget.js en el sitio de un cliente. Es la única ruta que se puede incrustar en otros dominios Público Chat del asistente | KopTup No (noindex) Widget del chatbot

4.2 Las 28 demos

El modo es el por defecto; el administrador lo cambia en Admin › Catálogo de demos (Manual del administrador). Las demos Con solicitud y Solo por invitación muestran a quien no tiene acceso el título "Nombre: acceso | KopTup"; el título de la tabla es el que ve quien sí entra. Cómo se decide el acceso: Roles y permisos §4.

Ruta Demo Modo Título SEO Indexable Miniatura Guía
/demo/chatbot Chatbot RAG con tus documentos Abierta (siempre) Demo RAG: prueba con tu documento | KopTup Sí chatbot Guía
/demo/code-review-ia Revisión de código con IA Abierta Demo de code review con IA: revisión de pull requests | KopTup Sí code-review-ia Guía
/demo/crm-ia CRM con IA Abierta CRM con IA: demo de embudo de ventas y pronóstico | KopTup Sí crm-ia Guía
/demo/helpdesk-ia Mesa de ayuda con IA Abierta Helpdesk con IA: demo de mesa de ayuda omnicanal | KopTup Sí helpdesk-ia Guía
/demo/facturacion-electronica Facturación electrónica Abierta Facturación electrónica DIAN: simulador | KopTup Sí facturacion-electronica Guía
/demo/pos Punto de venta (POS) Abierta POS para retail y restaurantes: demo interactiva | KopTup Sí pos Guía
/demo/ecommerce Tienda en línea Abierta Demo de tienda en línea: catálogo, carrito, pago simulado y reportes | KopTup Sí ecommerce Guía
/demo/loyalty Programa de fidelización Abierta Programa de fidelización: demo interactiva | KopTup Sí loyalty Guía
/demo/control-proyectos Gestión de proyectos Abierta Demo de gestión de proyectos con portal de cliente | KopTup Sí control-proyectos Guía
/demo/sistema-reservas Sistema de reservas Abierta Sistema de Reservas Online y Agendamiento de Citas | KopTup Sí sistema-reservas Guía
/demo/dashboard-ejecutivo Dashboard ejecutivo Abierta Demo de tablero ejecutivo: ventas, finanzas y cartera | KopTup Sí dashboard-ejecutivo Guía
/demo/gestor-documentos Gestor documental Abierta Gestor Documental Médico para Archivos Clínicos | KopTup Sí gestor-documentos Guía
/demo/gestor-contenido Gestor de contenido Abierta Demo de CMS headless: modelos, editor visual y API | KopTup Sí gestor-contenido Guía
/demo/automatizacion Automatización de procesos Abierta Automatización de Workflows y Procesos | KopTup Sí automatizacion Guía
/demo/scraping Extracción de datos web Abierta Demo: extracción y monitoreo de datos de la web y de documentos | KopTup Sí scraping Guía
/demo/moderacion-contenido Moderación de contenido con IA Abierta Moderación de Contenido con IA: Trust & Safety | KopTup Sí moderacion-contenido Guía
/demo/saas-boilerplate Plataforma SaaS multiempresa Abierta SaaS Multi-tenant: Auth y Billing con Stripe | KopTup Sí saas-boilerplate Guía
/demo/firma-electronica Firma electrónica Abierta Firma Electrónica de Documentos con Validez Legal | KopTup Sí firma-electronica Guía
/demo/voice-ai Voz con IA para call center Con solicitud Demo de agente de voz con IA para call center | KopTup No voice-ai Guía
/demo/erp ERP modular Con solicitud Demo ERP: ventas, inventario, compras y contabilidad | KopTup No erp Guía
/demo/delivery App de domicilios Con solicitud App de domicilios: cliente, sede, operaciones y repartidor | KopTup No delivery Guía
/demo/hrms Gestión de talento humano (HRMS) Con solicitud Demo de gestión humana y nómina colombiana | KopTup No hrms Guía
/demo/lms Plataforma de aprendizaje (LMS) Con solicitud Demo LMS: plataforma de cursos virtuales con tutor IA | KopTup No lms Guía
/demo/telemedicina Telemedicina Con solicitud Demo de telemedicina para IPS | KopTup No telemedicina Guía
/demo/wms-logistica Logística y bodegas (WMS) Con solicitud WMS: Logística de Bodegas, Picking e Inventario | KopTup No wms-logistica Guía
/demo/linkedin-ads Generador de contenido para LinkedIn con IA Con solicitud Generador de Contenido para LinkedIn con IA | KopTup No linkedin-ads Guía
/demo/cuentas-medicas Sistema experto para salud (cuentas médicas) Solo por invitación Sistema experto para salud: auditar cuentas médicas | KopTup No cuentas-medicas Guía
/demo/sistema-experto Sistema experto de auditoría médica Solo por invitación Motor de reglas para auditoría de cuentas médicas | KopTup No sistema-experto Guía

Todas las demos usan datos de ejemplo. Cada demo tiene su propio layout.tsx con sus metadatos y comparte el layout de /demo, que agrega el bloque final "¿Te gustaría algo así para tu negocio?".


5. Cuenta: entrar, registrarse y activar

Todas están bloqueadas en robots.txt, llevan noindex, nofollow (en la etiqueta y en la cabecera X-Robots-Tag) y un canonical a su propia ruta, salvo /activar/<token>, que no lleva canonical para no repetir el enlace. Recorridos con capturas en Flujos del prospecto y cliente.

Ruta Para qué sirve Quién entra Título SEO Indexable Miniatura
/login Iniciar sesión con email y contraseña o con Google; vuelve a la ruta de ?redirect= Público Iniciar sesión | KopTup No Login
/register Crear una cuenta (rol user) con email o Google Público Crear cuenta | KopTup No Registro
/auth/callback Recibe la sesión de Google y lleva a la página de inicio del rol Público Iniciando sesión | KopTup No —
/forgot-password Pedir el enlace para restablecer la contraseña Público Recuperar contraseña | KopTup No Olvidé mi contraseña
/reset-password Poner una contraseña nueva con el enlace (1 hora) Público con enlace Nueva contraseña | KopTup No Restablecer contraseña
/activar/<token> Activar la cuenta de un prospecto con el enlace de un solo uso (72 h) Público con enlace Activa tu acceso | KopTup No Activar cuenta

6. Portal del prospecto y del cliente (/dashboard)

Requiere sesión. Un prospecto solo entra a Mis demos y Mi perfil; cualquier otra ruta del portal lo lleva a Mis demos. Todas son noindex y están bloqueadas en robots.txt. El título de la pestaña nombra la sección, por ejemplo "Mis demos · Mi portal | KopTup" ("Mi portal | KopTup" mientras carga). Detalle en Flujos del prospecto y cliente §9.

Ruta Para qué sirve Quién entra Miniatura
/dashboard Panel de inicio (vista de ejemplo con tres modos) Sesión, salvo prospecto Panel
/dashboard/demos Mis demos: accesos, vencimiento y botón para abrir cada demo Sesión (incluido prospecto) Mis demos
/dashboard/orders Mis pedidos Sesión, salvo prospecto Pedidos
/dashboard/orders/new Crear un pedido Sesión, salvo prospecto Nuevo pedido
/dashboard/orders/<id> Detalle de un pedido propio Sesión, salvo prospecto Detalle de pedido
/dashboard/projects Proyectos donde es miembro Sesión, salvo prospecto Proyectos
/dashboard/deliverables Entregables para aprobar o rechazar Sesión, salvo prospecto Entregables
/dashboard/billing Facturación Sesión, salvo prospecto Facturación
/dashboard/messages Mensajes con el equipo Sesión, salvo prospecto Mensajes
/dashboard/notifications Notificaciones Sesión, salvo prospecto Notificaciones
/dashboard/profile Mi perfil: datos y contraseña Sesión (incluido prospecto) Perfil
/dashboard/settings Configuración: idioma, tema y preferencias Sesión, salvo prospecto Configuración

7. Panel de administración (/admin)

Requiere un rol del equipo. Todas son noindex y están bloqueadas en robots.txt. El título de la pestaña nombra la sección, por ejemplo "Solicitudes de demo · Panel | KopTup" ("Panel de administración | KopTup" mientras carga). Paso a paso en el Manual del administrador.

Ruta Para qué sirve Quién entra Miniatura
/admin Inicio del panel: indicadores y accesos rápidos admin, manager Inicio del panel
/admin/solicitudes Solicitudes de demo por estado admin, sales (gestionan); manager (consulta) Solicitudes
/admin/solicitudes/<id> Detalle: aprobar, rechazar, notas e historial admin, sales (gestionan); manager (consulta) Detalle de solicitud
/admin/accesos Accesos a demos: conceder, extender, retirar, nuevo enlace admin, sales (gestionan); manager (consulta) Accesos
/admin/catalogo-demos Modo de acceso, activa y vigencia de las 28 demos admin (edita); manager, sales (consulta) Catálogo de demos
/admin/orders Pedidos: aprobar, rechazar, cambiar estado, facturar admin, manager Pedidos
/admin/invoices Facturas admin, manager Facturas
/admin/deliverables Entregables admin, manager Entregables
/admin/conversations Conversaciones con clientes admin, manager Conversaciones
/admin/conversations/<id> Detalle de una conversación admin, manager —
/admin/users Usuarios y cambio de rol (solo admin cambia roles) admin, manager Usuarios
/admin/contacts Contactos y leads (formulario, demo RAG, solicitudes), con el estado del aviso al dueño por correo y WhatsApp y el botón «Reenviar aviso» (solo admin) admin, manager Contactos
/admin/settings Configuración: estado de los avisos de nuevos contactos (correo y WhatsApp) con el botón «Enviar aviso de prueba», idioma y tema (la miniatura es anterior a la tarjeta de avisos) admin, manager Configuración

Un sales que escribe /admin llega a /admin/solicitudes; cualquier otro rol sin permiso vuelve a su página de inicio.


8. Herramientas internas

Ruta Para qué sirve Quién entra Indexable Miniatura
/liquidacion Liquidación de cuentas médicas: radicados, carga de archivos y resultados (herramienta del equipo, no es la demo) admin, manager, sales No (X-Robots-Tag: noindex y robots.txt) Liquidación
/liquidacion/<id> Detalle de un radicado admin, manager, sales No —
/liquidacion/reglas Reglas de facturación de la herramienta admin, manager, sales No —

9. Rutas API de Next

Viven en apps/web/src/app/api/ y corren en Vercel. La API principal está en Railway (API).

Ruta Método Para qué sirve Quién la usa
/api/linkedin-ads/generate POST Proxy hacia POST /api/linkedin-ads/generate del backend: reenvía el cuerpo, la sesión (cookie → Authorization) y la IP del visitante. Si el backend no responde, devuelve 503 Demo LinkedIn Ads

/api/ está bloqueada en robots.txt y el middleware no la intercepta.


10. Archivos especiales: sitemap, robots, imagen para redes

Ruta Qué es Origen
/sitemap.xml 16 páginas fijas (inicio, /rag y sus 3 sectores, landings, /services, /demo, formularios, /about y legales) y las demos Abiertas y activas según Admin › Catálogo de demos (hoy 18, 34 URLs en total). Lee el catálogo del backend y se regenera como mucho cada hora; si el backend no responde, usa los modos por defecto. Fecha de modificación fija para no simular cambios en cada despliegue src/app/sitemap.ts y src/lib/sitemap-demos.ts
/robots.txt Permite todo menos /dashboard, /admin, /api/, /login, /register, /forgot-password, /reset-password, /auth/, /test, /liquidacion, /activar/, /propuesta/, /demo-acceso/ y URLs con sessionId= o token=. Bloquea por completo a AhrefsBot, SemrushBot, DotBot, MJ12bot, GPTBot y CCBot. Bingbot con Crawl-delay: 5 public/robots.txt
/opengraph-image Imagen de 1200 × 630 que se ve al compartir el sitio en redes y chats src/app/opengraph-image.tsx (se genera en el servidor)
/icon Ícono del sitio (32 × 32) src/app/icon.tsx (se genera al compilar)
/manifest.json Manifiesto de la app web (nombre, colores, íconos) public/manifest.json
/llms.txt Resumen del negocio en texto para asistentes de IA public/llms.txt
/widget.js Script del widget del chatbot para pegar en el sitio de un cliente; abre /embed/chatbot/<botId> public/widget.js
/favicon.ico, /apple-touch-icon.png, /icon-192.png, /icon-512.png, /logo.svg, /og-image.png Íconos e imágenes estáticas public/

Imagen para redes sociales generada por el sitio

La imagen que genera /opengraph-image (reducida). Es la que aparece al compartir www.koptup.com en WhatsApp, LinkedIn o X.


11. Layouts: qué envuelve a cada ruta

flowchart TD
    classDef sistema fill:#e0e7ff,stroke:#4f46e5,color:#312e81
    classDef visitante fill:#dbeafe,stroke:#2563eb,color:#1e3a8a
    classDef admin fill:#fef3c7,stroke:#d97706,color:#78350f

    ROOT["app/layout.tsx: idioma, mensajes, tema, analítica con consentimiento, aviso de cookies, notificaciones"]:::sistema
    COND["ConditionalLayout: menú y pie de página"]:::sistema
    OWN["Sin menú del sitio: /dashboard y /admin traen su propio encabezado"]:::sistema
    META["layout.tsx de metadatos: about, contact, services, solicitar-demo, legales, landings SEO, producthunt y páginas de cuenta"]:::visitante
    DEMO["demo/layout.tsx: metadatos del hub y bloque final de contacto"]:::visitante
    DSLUG["demo/slug/layout.tsx: título, descripción y canonical de cada demo"]:::visitante
    ADM["admin/layout.tsx: noindex y título por sección"]:::admin
    DSH["dashboard/layout.tsx: noindex y título por sección"]:::admin
    EMB["embed/layout.tsx: noindex, chat a pantalla completa"]:::visitante
    TST["test/layout.tsx: noindex y 404 en producción"]:::admin

    ROOT --> COND
    ROOT --> OWN
    COND --> META
    COND --> DEMO --> DSLUG
    COND --> EMB
    COND --> TST
    OWN --> ADM
    OWN --> DSH
Loading

Todas las páginas se renderizan en el servidor en cada visita porque el layout raíz lee la cookie de idioma. El middleware actúa antes que cualquier layout en /admin, /dashboard, /liquidacion y /demo/<slug> (ver Arquitectura §4.2).


12. Para desarrolladores

Para agregar una página:

  1. Crea apps/web/src/app/<ruta>/page.tsx (y layout.tsx si necesita metadatos propios desde un componente de cliente).
  2. Define el título con la plantilla %s | KopTup y verifica que no pase de 60 caracteres: npm run check-titles --workspace=apps/web (el CI lo corre).
  3. Si es pública e indexable, agrégala a src/app/sitemap.ts (las demos se listan solas según el catálogo). Si es privada, agrégala a public/robots.txt, dale sus metadatos con privatePageMetadata() de lib/seo-config.ts (noindex y canonical propio, o ninguno si la ruta lleva un token) y, si exige sesión, súmala al matcher de src/middleware.ts y a lib/auth-roles.ts.
  4. Si es una demo, agrega su slug a lib/demo-access-defaults.ts y a la semilla del backend (data/demo-catalog.seed.ts y DEFAULT_DEMO_ACCESS_MODES); una prueba verifica que coincidan con las carpetas de app/demo/.
  5. Agrega sus textos a messages/es.json y messages/en.json (o a messages/demos/<slug>.<idioma>.json).

13. Limitaciones conocidas

  • /liquidacion usa el título por defecto del sitio, y tanto ella como las demos restringidas abiertas por alguien con acceso tienen la etiqueta index, follow, aunque la cabecera X-Robots-Tag: noindex las protege.
  • El sitemap tarda hasta una hora en reflejar un cambio de modo en el catálogo de demos.
  • El botón "GitHub" de /login y /register no hace nada (solo Google está implementado).

14. Páginas relacionadas

⚠️ **GitHub.com Fallback** ⚠️