ixiclinicDocs
DesarrolladoresApps del monorepo

Landing

Sitio público de marketing de ixiclinic (ixiclinic.com) — Next.js 16 con SSG multipágina, páginas de módulo data-driven y formulario de demo.

La landing (apps/landing) es el sitio público de marketing y captación de demos de ixiclinic. Migró de Vite SPA a Next.js 16 (App Router), por lo que ahora es multipágina y se prerenderiza estáticamente (SSG) para mejor SEO.

StackNext.js 16 (App Router, SSG), Tailwind 4
Puerto local5174 (next dev --port 5174)
Producciónixiclinic.com (Vercel)
Paquete@ixiclinic/landing

Nota: A diferencia del resto del monorepo, este paquete no depende de @ixiclinic/types ni del API en build; es un sitio estático autónomo. Por eso su dev de Turbo no espera al ^build.

Stack y animaciones

  • Next.js 16 con reactStrictMode. La configuración (apps/landing/next.config.ts) redirige /docs y /docs/:path* a https://docs.ixiclinic.com (la documentación vive en su propio subdominio).
  • Tailwind 4 vía @tailwindcss/postcss.
  • Framer Motion (framer-motion) para las animaciones y transiciones (por ejemplo, el modal del formulario de demo). La fuente es Geist (geist) y los iconos lucide-react.

Nota: Las animaciones se implementan únicamente con Framer Motion.

Páginas (apps/landing/src/app/)

App Router con rutas estáticas y una ruta dinámica por módulo:

RutaContenido
/ (page.tsx)Home con las secciones de marketing.
/plataformaÍndice de módulos de la plataforma (grid).
/plataforma/[slug]Página de detalle por módulo (data-driven).
/preciosPlanes y precios.
/contactoContacto y solicitud de demo.
/terminos, /privacidadLegales.

Páginas de módulo /plataforma/[slug]

Son data-driven: el contenido de cada módulo vive en apps/landing/src/lib/features.ts (array FEATURES, cada entrada con slug, name, headline, lead, sections, related, icono y color de acento). La página (apps/landing/src/app/plataforma/[slug]/page.tsx) hace SSG con generateStaticParams() (un parámetro por cada feature) y generateMetadata() para el SEO por página; un slug inexistente devuelve notFound(). Para añadir un nuevo módulo solo se agrega una entrada a FEATURES.

Formulario de demo

El componente cliente apps/landing/src/components/demo-form.tsx abre un modal y hace POST a /api/saas/demos (ruta pública del API; ver Console y el módulo demos). El cuerpo enviado:

{
  labName: string;
  contactName: string;
  email: string;
  phone: string;
  labSize: string;
  notes: string;
}

La URL del API se resuelve con NEXT_PUBLIC_API_URL y, en su defecto, https://api.ixiclinic.com cuando el host termina en ixiclinic.com, o http://localhost:5000 en local.

Build y despliegue

next build produce el sitio estático. Despliega automáticamente en Vercel al hacer push a main (apps/landing/vercel.json fija framework: nextjs). Ver Operaciones.

On this page