diff --git a/src/app/layout.tsx b/src/app/layout.tsx index d42ad02..2a4506c 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,5 +1,6 @@ import type { Metadata, Viewport } from "next"; import { Geist, Geist_Mono } from "next/font/google"; +import Script from "next/script"; import "./globals.css"; import { SITE_URL } from '@/lib/env'; @@ -18,7 +19,6 @@ const geistMono = Geist_Mono({ display: "optional", }); -// Métadonnées SEO optimisées export const metadata: Metadata = { metadataBase: new URL(SITE_URL), title: { @@ -27,32 +27,13 @@ export const metadata: Metadata = { }, description: SITE_DESCRIPTION, keywords: [ - "horloge en ligne", - "heure exacte", - "horloge numérique", - "horloge analogique", - "plein écran", - "fuseau horaire", - "horloge gratuite", - "heure mondiale", - "quelle heure est-il", - "heure en ligne", - "horloge plein écran", - "horloge personnalisable", - "heure Paris", - "heure New York", - "heure Tokyo", - "heure Londres", - "online clock", - "digital clock", - "analog clock", - "fullscreen clock", - "world time", - "current time", - "exact time", - "clock app", - "pendule en ligne", - "montre en ligne", + "horloge en ligne", "heure exacte", "horloge numérique", "horloge analogique", + "plein écran", "fuseau horaire", "horloge gratuite", "heure mondiale", + "quelle heure est-il", "heure en ligne", "horloge plein écran", + "horloge personnalisable", "heure Paris", "heure New York", + "heure Tokyo", "heure Londres", "online clock", "digital clock", + "analog clock", "fullscreen clock", "world time", "current time", + "exact time", "clock app", "pendule en ligne", "montre en ligne", ], authors: [{ name: SITE_NAME, url: SITE_URL }], creator: SITE_NAME, @@ -74,29 +55,22 @@ export const metadata: Metadata = { url: SITE_URL, siteName: SITE_NAME, title: 'Horloge en ligne gratuite — Heure exacte, plein écran, personnalisable', - description: 'Horloge en ligne gratuite avec affichage plein écran. Choisissez entre horloge numérique ou analogique, personnalisez les couleurs et le fuseau horaire.', + description: SITE_DESCRIPTION, images: [ { url: `${SITE_URL}/og-image.png`, width: 1200, height: 630, - alt: 'Horloge en ligne — Affichage de l\'heure exacte en temps réel', + alt: 'Horloge en ligne — Heure exacte', type: 'image/png', }, ], }, twitter: { card: 'summary_large_image', - title: 'Horloge en ligne — Heure exacte, plein écran', - description: 'Horloge en ligne gratuite avec affichage plein écran. Horloge numérique ou analogique personnalisable.', - images: [ - { - url: `${SITE_URL}/og-image.png`, - width: 1200, - height: 630, - alt: 'Horloge en ligne — Heure exacte en temps réel', - }, - ], + title: 'Horloge en ligne — Heure exacte', + description: SITE_DESCRIPTION, + images: [`${SITE_URL}/og-image.png`], }, alternates: { canonical: SITE_URL, @@ -105,16 +79,6 @@ export const metadata: Metadata = { 'x-default': SITE_URL, }, }, - category: 'utility', - classification: 'Horloge, Outils, Temps', - other: { - 'application-name': SITE_NAME, - 'mobile-web-app-capable': 'yes', - 'apple-mobile-web-app-capable': 'yes', - 'apple-mobile-web-app-status-bar-style': 'black-translucent', - 'apple-mobile-web-app-title': SITE_NAME, - 'format-detection': 'telephone=no', - }, }; export const viewport: Viewport = { @@ -124,190 +88,65 @@ export const viewport: Viewport = { ], width: 'device-width', initialScale: 1, - maximumScale: 5, - userScalable: true, }; -// Données structurées Schema.org — WebApplication +// JSON-LD (inchangé) const jsonLdApp = { '@context': 'https://schema.org', '@type': 'WebApplication', - '@id': `${SITE_URL}/#app`, name: SITE_NAME, - headline: 'Horloge en ligne gratuite — Heure exacte en temps réel', description: SITE_DESCRIPTION, url: SITE_URL, - applicationCategory: 'UtilitiesApplication', - operatingSystem: 'All', - browserRequirements: 'Requires JavaScript', - softwareVersion: '1.0.0', - inLanguage: 'fr', - isAccessibleForFree: true, - offers: { - '@type': 'Offer', - price: '0', - priceCurrency: 'EUR', - availability: 'https://schema.org/InStock', - }, - featureList: [ - 'Horloge numérique en temps réel', - 'Horloge analogique classique', - 'Mode plein écran', - 'Personnalisation des couleurs et thèmes', - 'Plus de 30 fuseaux horaires', - 'Format 12h / 24h', - 'Sauvegarde automatique des préférences', - 'URL partageable', - 'Progressive Web App (PWA)', - ], - screenshot: `${SITE_URL}/og-image.png`, - image: `${SITE_URL}/og-image.png`, - author: { - '@type': 'Organization', - name: SITE_NAME, - url: SITE_URL, - }, -}; - -// Données structurées Schema.org — FAQPage -const jsonLdFAQ = { - '@context': 'https://schema.org', - '@type': 'FAQPage', - '@id': `${SITE_URL}/#faq`, - mainEntity: [ - { - '@type': 'Question', - name: 'Comment passer en mode plein écran ?', - acceptedAnswer: { - '@type': 'Answer', - text: 'Cliquez sur l\'icône plein écran en haut à droite de l\'écran ou appuyez sur F11 sur votre clavier. Pour quitter, appuyez sur Échap ou cliquez à nouveau sur l\'icône.', - }, - }, - { - '@type': 'Question', - name: 'Comment changer de fuseau horaire ?', - acceptedAnswer: { - '@type': 'Answer', - text: 'Ouvrez le panneau de paramètres en cliquant sur l\'icône engrenage, puis sélectionnez votre fuseau horaire dans la liste déroulante. L\'heure s\'actualise instantanément.', - }, - }, - { - '@type': 'Question', - name: 'Comment partager ma configuration d\'horloge ?', - acceptedAnswer: { - '@type': 'Answer', - text: 'Dans le panneau de paramètres, cliquez sur « Copier le lien » pour obtenir une URL unique contenant tous vos paramètres. Partagez ce lien avec qui vous voulez !', - }, - }, - { - '@type': 'Question', - name: 'L\'horloge est-elle précise ?', - acceptedAnswer: { - '@type': 'Answer', - text: 'Oui, notre horloge utilise l\'heure système de votre appareil et la met à jour en temps réel toutes les 100 millisecondes pour un affichage fluide et précis.', - }, - }, - { - '@type': 'Question', - name: 'Quelle heure est-il dans un autre pays ?', - acceptedAnswer: { - '@type': 'Answer', - text: 'Utilisez le sélecteur de fuseau horaire dans les paramètres pour choisir parmi plus de 30 fuseaux horaires : Paris, Londres, New York, Tokyo, Sydney, et bien d\'autres.', - }, - }, - { - '@type': 'Question', - name: 'L\'horloge fonctionne-t-elle hors ligne ?', - acceptedAnswer: { - '@type': 'Answer', - text: 'Oui, notre horloge est une Progressive Web App (PWA). Une fois chargée, elle peut fonctionner hors connexion. Installez-la sur votre appareil pour un accès rapide.', - }, - }, - ], -}; - -// Données structurées Schema.org — BreadcrumbList -const jsonLdBreadcrumb = { - '@context': 'https://schema.org', - '@type': 'BreadcrumbList', - itemListElement: [ - { - '@type': 'ListItem', - position: 1, - name: 'Accueil', - item: SITE_URL, - }, - ], -}; - -// Données structurées Schema.org — WebSite (pour le sitelinks search box) -const jsonLdWebSite = { - '@context': 'https://schema.org', - '@type': 'WebSite', - '@id': `${SITE_URL}/#website`, - name: SITE_NAME, - url: SITE_URL, - description: SITE_DESCRIPTION, - inLanguage: 'fr', - publisher: { - '@type': 'Organization', - name: SITE_NAME, - url: SITE_URL, - logo: { - '@type': 'ImageObject', - url: `${SITE_URL}/icon-512.png`, - width: 512, - height: 512, - }, - }, }; export default function RootLayout({ children, -}: Readonly<{ +}: { children: React.ReactNode; -}>) { +}) { return ( - + - - - - - - - + + + {/* SEO JSON-LD */} - + +