Hazlo tuyo
Cambia los textos, las imágenes, los colores, las fuentes, las secciones, los enlaces y los ajustes de búsqueda, archivo por archivo.
Dónde está cada cosa
| Qué | Dónde |
|---|---|
| Textos, en los dos idiomas | messages/en.json y messages/ar.json |
| Cifras, precios, imágenes y logotipos | La carpeta constants/ de cada sección, en src/features/home/ |
| Nombre de la marca y logotipo | brand.name en los dos archivos de mensajes, src/components/Logo.tsx |
| Colores | Clases de Tailwind en los componentes, tokens del tema en src/app/globals.css |
| Fuentes | src/app/[locale]/layout.tsx |
| Las secciones y su orden | src/app/[locale]/page.tsx |
| Cabecera y pie de página | src/layouts/Header/ y src/layouts/Footer/ |
| Título, descripción e imagen para compartir | metadata en los dos archivos de mensajes, public/image.png |
Con yarn dev en marcha, cada vez que guardas se ve en la página al instante. Con Docker, vuelve a construir la imagen para ver un cambio.
Textos
Cada palabra de la página está en messages/en.json y messages/ar.json, agrupada por sección: hero, socialProof, howItWorks, features, integrations, testimonials, blog, pricing, faq y cta, además de header, footer y metadata. Cambia el valor, conserva la clave y cámbialo en los dos archivos.
Las palabras entre llaves, como {brand}, {year} o {count}, las rellena el código: déjalas como están. En la línea trustedBy de la portada, conserva también las etiquetas alrededor de {count}.
Algunas cifras están en el código, no en los archivos de mensajes:
| Qué | Archivo |
|---|---|
Las cuatro cifras bajo los logotipos (10k+, 500+, 99.9%, 24/7) | src/features/home/SocialProof/constants/socialProof.constants.ts |
| El número de clientes y la valoración de la portada | src/features/home/Hero/constants/hero.constants.ts |
| Los precios de los planes, mensuales y anuales | src/features/home/Pricing/constants/plans.constants.ts |
| Las fechas, los tiempos de lectura y las categorías de las tarjetas del blog | src/features/home/BlogPreview/constants/articles.constants.ts |
| Qué preguntas frecuentes se muestran, y su orden | src/features/home/Faq/constants/faq.constants.ts |
Cada id de las preguntas frecuentes necesita su question y su answer bajo faq.items en los dos archivos de mensajes. Los precios se muestran en dólares, mediante pricing.price en los archivos de mensajes.
Nombre de la marca y logotipo
brand.name en los dos archivos de mensajes es el único lugar para cambiar el nombre de la marca. Es el nombre junto al logotipo, en la cabecera y en el pie de página, y el símbolo del logotipo muestra su primera letra. Cada texto que nombra la marca dice {brand} y toma este valor: el título de la página, la descripción de la imagen para compartir, la insignia de la portada, dos testimonios, el mensaje de cierre y la línea de copyright.
El nombre de la app instalada también lo sigue: src/app/manifest.ts lee brand.name de los mensajes en inglés.
El símbolo del logotipo se dibuja en src/components/Logo.tsx: un cuadrado girado con el degradado de rojo a ámbar. Sustitúyelo por tu propio SVG, o por una imagen de public/, para usar tu logotipo.
Los iconos del navegador y del móvil son public/favicon.svg, public/favicon.ico, public/favicon-96x96.png, public/apple-touch-icon.png y los dos archivos public/web-app-manifest-*.png. Sustitúyelos por archivos con los mismos nombres y tamaños. El manifiesto en sí es src/app/manifest.ts.
Imágenes y logotipos
| Sección | Imágenes | Se define en |
|---|---|---|
| Portada | public/images/hero.webp, 600 x 400 | src/features/home/Hero/constants/hero.constants.ts |
| Cómo funciona | De public/images/HowItWorks/step1.webp a step4.webp | src/features/home/HowItWorks/constants/steps.constants.ts |
| Funciones | public/images/hero1.webp y tres fotos de Unsplash | src/features/home/Features/constants/features.constants.ts |
| Testimonios | Tres retratos de Unsplash | src/features/home/Testimonials/constants/testimonials.constants.ts |
| Vista previa del blog | Tres fotos de Unsplash | src/features/home/BlogPreview/constants/articles.constants.ts |
| Prueba social | public/images/logos/slack.svg y logotipos de Simple Icons | src/features/home/SocialProof/constants/socialProof.constants.ts |
| Integraciones | public/images/logos/slack.svg, salesforce.svg y logotipos de Simple Icons | src/features/home/Integrations/constants/integrations.constants.ts |
Para usar tu propia imagen, ponla en public/images/ y escribe su ruta, empezando por /images/, en el archivo de constantes de la sección. Una imagen de otro sitio web necesita su servidor en images.remotePatterns en next.config.mjs; si no, Next.js se niega a cargarla. images.unsplash.com y cdn.simpleicons.org ya están en la lista.
Las fotos de Unsplash y los logotipos de Simple Icons son de ejemplo. Sustitúyelos por tus propios archivos en public/images/ antes de publicar.
Colores
El color de acento es un degradado de rojo a ámbar, escrito con las clases de Tailwind from-red-500 y to-amber-500, con otros tonos red-* y amber-* para bordes, brillos e iconos. Para cambiarlo, busca red- y amber- en src/ y sustitúyelos por tus colores. Empieza por src/components/GradientButton.tsx, que usan todos los botones con degradado.
La página está diseñada en oscuro: el fondo es negro (bg-black en src/app/[locale]/layout.tsx y src/app/[locale]/page.tsx), y next-themes empieza en modo oscuro. Los tokens del tema en src/app/globals.css y tailwind.config.ts dan color a las piezas compartidas de src/components/ui/.
Fuentes
src/app/[locale]/layout.tsx carga Inter para el inglés y Noto Sans Arabic para el árabe mediante next/font/google, que las descarga al construir y las sirve desde tu propio sitio. Para cambiar una, importa otra fuente de next/font/google y úsala en lugar de Inter o Noto_Sans_Arabic.
Las secciones y su orden
src/app/[locale]/page.tsx enumera las secciones en el orden en que aparecen: Hero, SocialProof, HowItWorks, Features, Integrations, Testimonials, BlogPreview, Pricing, Faq y Cta. Mueve una línea para mover una sección, o bórrala para quitar la sección.
Cada sección es una carpeta en src/features/home/, con components/, constants/, hooks/ y types/ dentro. Para añadir una, copia esa estructura, añade sus textos a los dos archivos de mensajes y colócala en page.tsx.
Los enlaces Pricing y Testimonials de la cabecera saltan a las secciones con los id pricing y testimonials, y los enlaces de contacto a la llamada a la acción final, cuyo id es contact. Conserva esos id mientras los enlaces apunten a ellos.
Enlaces y botones
Los enlaces de ejemplo todavía no llevan a ninguna parte. Defínelos antes de publicar:
| Enlaces | Archivo | Ahora |
|---|---|---|
| Menús de la cabecera (Products, Solutions) | src/layouts/Header/hooks/useNavItems.ts | # |
| Enlaces de la cabecera (Pricing, Testimonials) | src/layouts/Header/constants/nav.constants.ts | #pricing, #testimonials |
| Grupos de enlaces del pie de página, Contact incluido | src/layouts/Footer/components/FooterNav.tsx | # |
| Enlaces legales | src/layouts/Footer/components/FooterLegal.tsx | # |
| Iconos sociales | src/layouts/Footer/constants/footer.constants.ts | # |
Los enlaces de contacto bajo las preguntas frecuentes y las integraciones ya funcionan: saltan a la llamada a la acción final.
Los botones (Log in, Get Started, Start Free Trial, Watch Demo, los botones de los planes, Read More y View All Articles) son botones simples sin destino. Para convertir uno en enlace, dale asChild y pon un enlace dentro, con su texto y su icono:
<GradientButton asChild className="h-10 sm:h-12 px-6 sm:px-8">
<a href="https://app.your-domain.com/signup">{t("primaryCta")}</a>
</GradientButton>Búsqueda y redes sociales
- Título y descripción de la página:
metadata.titleymetadata.descriptionen los dos archivos de mensajes.metadata.imageAltdescribe la imagen para compartir. - Imagen para compartir:
public/image.png, de 1200 x 630 píxeles. - Enlace canónico y alternativas de idioma: se construyen a partir de
NEXT_PUBLIC_SITE_URL, que defines al desplegar. src/app/[locale]/layout.tsxtambién define una etiquetageneratorcon el nombre del autor de la plantilla. Cámbiala o quítala ahí.- La plantilla no incluye
robots.txtni sitemap. Añadesrc/app/robots.tsysrc/app/sitemap.tssi los quieres.