mirror of
https://github.com/R0m1k3/PleinR.git
synced 2026-10-22 06:38:05 +02:00
- Layout : metadataBase, gabarit de titre « %s · Plein R », description, mots-clés, Open Graph / Twitter, robots, icônes, manifeste, viewport et couleur de thème ; JSON-LD Organization + WebSite (recherche annuaire). - Chaque page publique pose titre, description (≤ 160 caractères) et canonique via pageMetadata() ; l'annuaire ignore ainsi ?q=. Fiche adhérent : titre « Nom · Catégorie à Ville », description dérivée, LocalBusiness avec adresse, contacts et horaires (OpeningHoursSpecification), BreadcrumbList. Annuaire : ItemList des adhérents. Association : BusinessEvent par rencontre à venir. Rencontres passées : fil d'Ariane. - Nouvelles routes : robots.txt, sitemap.xml (pages statiques + adhérents actifs), manifest.webmanifest, image de partage 1200×630 générée avec le logo, page 404 dédiée (noindex). - /backend, /login, /inscription/* et les fiches inactives en noindex. - Landmarks <main> sur toutes les pages publiques, fil d'Ariane en <nav>. - serializeJsonLd() échappe <, > et & : les saisies des adhérents ne peuvent pas fermer le bloc <script>. Tests unitaires dans tests/seo.test.ts. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HDbKbJrPWweXXYSxA8MXW7
18 lines
574 B
TypeScript
18 lines
574 B
TypeScript
import type { MetadataRoute } from "next";
|
|
import { SITE_DESCRIPTION, SITE_NAME, SITE_TITLE, THEME_COLOR } from "@/lib/seo";
|
|
|
|
/** Manifeste web : nom, icône et couleurs, pour l'ajout à l'écran d'accueil. */
|
|
export default function manifest(): MetadataRoute.Manifest {
|
|
return {
|
|
name: SITE_TITLE,
|
|
short_name: SITE_NAME,
|
|
description: SITE_DESCRIPTION,
|
|
lang: "fr",
|
|
start_url: "/",
|
|
display: "standalone",
|
|
background_color: "#F6F2E8",
|
|
theme_color: THEME_COLOR,
|
|
icons: [{ src: "/assets/logo.png", sizes: "any", type: "image/png" }],
|
|
};
|
|
}
|