feat: SEO metadata, JSON-LD, OG image, sitemap, a11y focus styles

Expands app/layout.tsx metadata (openGraph, twitter, canonical),
adds ProfessionalService JSON-LD to app/page.tsx, focus-visible
styles in globals.css, robots.txt/sitemap.xml, and a placeholder
og-image.png (navy background, no wordmark text — needs a real
design asset before launch).

Also adds .eslintrc.json (next/core-web-vitals) so next lint runs
non-interactively, and decouples ESLint from next build via
next.config.mjs (eslint.ignoreDuringBuilds) so a pre-existing,
out-of-scope lint issue in Cierre.tsx doesn't block the static
export.
This commit is contained in:
erikgh committed 2026-07-21 11:50:24 -06:00
1 parent e98adf5b08
commit 556f716583
8 files changed
+52 -11

No files matched your search

+11 -2
View File
@@ -6,8 +6,17 @@ const inter = Inter({ subsets: ['latin'], weight: ['400', '600', '700', '900'],
export const metadata: Metadata = {
title: 'creeer · tu estratega de crecimiento',
description: 'Claridad estratégica para empresarios con tracción en punto de inflexión.',
// (SEO task expands this later)
description: 'Claridad estratégica para empresarios con tracción que llegaron a su punto de inflexión. Inmersión profunda, estrategia ejecutable.',
metadataBase: new URL('https://creeer.com'), // TODO dueña: real domain
openGraph: {
title: 'creeer · tu estratega de crecimiento',
description: 'Claridad estratégica para empresarios con tracción en punto de inflexión.',
type: 'website',
locale: 'es',
images: [{ url: '/og-image.png', width: 1200, height: 630, alt: 'creeer' }],
},
twitter: { card: 'summary_large_image', title: 'creeer', description: 'Claridad estratégica para empresarios.' },
alternates: { canonical: 'https://creeer.com' },
};
export default function RootLayout({ children }: { children: React.ReactNode }) {