mirror of
https://github.com/IliesAllali/parenthese.git
synced 2026-11-06 23:32:08 +00:00
- Règles de préchargement dans l'accueil et les 15 guides : une page du site est préparée quand on survole son lien (appui sur téléphone), et s'ouvre presque tout de suite. Pages seulement, pas les fichiers ; l'application n'est pas concernée. Ignoré par les navigateurs qui ne connaissent pas ces règles. - Une page préchargée ne compte pas de visite avant d'être vraiment ouverte (PostHog attend prerenderingchange), et l'animation du logo se joue à l'ouverture, pas pendant le préchargement. - CSP de la landing (deploy/nginx.conf) : empreinte des règles, et nouvelle empreinte du script du logo. Le mot-clé 'inline-speculation-rules' ne suffisait pas à Chrome. - Test : chaque script en ligne des pages a son empreinte dans la CSP, chaque page a ses règles. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
87 lines
4.8 KiB
HTML
87 lines
4.8 KiB
HTML
<!doctype html>
|
|
<html lang="fr">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<meta name="theme-color" content="#FBFAF7" />
|
|
<!-- Arrivée du logo : une fois par visite, décidée avant le premier affichage (animation dans src/index.css) -->
|
|
<script>(function(){function intro(){try{if(!sessionStorage.getItem('pz-logo')&&!matchMedia('(prefers-reduced-motion: reduce)').matches){document.documentElement.classList.add('logo-intro');sessionStorage.setItem('pz-logo','1')}}catch(e){}}if(document.prerendering)document.addEventListener('prerenderingchange',intro,{once:true});else intro()})()</script>
|
|
|
|
<title>Parenthèse : l'arbre généalogique vivant de votre famille</title>
|
|
<meta name="description" content="Créez l'arbre généalogique de votre famille en ligne, avec photos, vidéos et voix. Partagez-le en un lien : la famille consulte sans compte et contribue avec un mot de passe." />
|
|
<link rel="canonical" href="https://parenthese.io/" />
|
|
<link rel="alternate" hreflang="fr" href="https://parenthese.io/" />
|
|
<link rel="alternate" hreflang="en" href="https://parenthese.io/en/" />
|
|
<link rel="alternate" hreflang="x-default" href="https://parenthese.io/" />
|
|
|
|
<!-- Open Graph -->
|
|
<meta property="og:type" content="website" />
|
|
<meta property="og:site_name" content="Parenthèse" />
|
|
<meta property="og:locale" content="fr_FR" />
|
|
<meta property="og:url" content="https://parenthese.io/" />
|
|
<meta property="og:title" content="Parenthèse : l'arbre généalogique vivant de votre famille" />
|
|
<meta property="og:description" content="L'arbre généalogique de votre famille en ligne, avec photos, voix et souvenirs. Partageable en un lien, sans compte." />
|
|
<meta property="og:image" content="https://parenthese.io/og-image.png" />
|
|
<meta property="og:image:width" content="1200" />
|
|
<meta property="og:image:height" content="630" />
|
|
<meta property="og:image:alt" content="Parenthèse, votre histoire familiale, vivante et partagée" />
|
|
|
|
<!-- Twitter -->
|
|
<meta name="twitter:card" content="summary_large_image" />
|
|
<meta name="twitter:title" content="Parenthèse : l'arbre généalogique vivant de votre famille" />
|
|
<meta name="twitter:description" content="L'arbre généalogique de votre famille en ligne, avec photos, voix et souvenirs. Partageable en un lien, sans compte." />
|
|
<meta name="twitter:image" content="https://parenthese.io/og-image.png" />
|
|
|
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
|
|
|
|
<link rel="stylesheet" href="/fonts/fonts.css" />
|
|
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@graph": [
|
|
{
|
|
"@type": "Organization",
|
|
"@id": "https://parenthese.io/#organization",
|
|
"name": "Parenthèse",
|
|
"url": "https://parenthese.io/",
|
|
"logo": "https://parenthese.io/apple-touch-icon.png",
|
|
"founder": { "@type": "Person", "name": "Ilies Allali", "url": "https://iliesallali.design/" }
|
|
},
|
|
{
|
|
"@type": "WebSite",
|
|
"@id": "https://parenthese.io/#website",
|
|
"url": "https://parenthese.io/",
|
|
"name": "Parenthèse",
|
|
"inLanguage": "fr-FR",
|
|
"publisher": { "@id": "https://parenthese.io/#organization" }
|
|
},
|
|
{
|
|
"@type": "SoftwareApplication",
|
|
"@id": "https://parenthese.io/#app",
|
|
"name": "Parenthèse",
|
|
"url": "https://app.parenthese.io/",
|
|
"applicationCategory": "LifestyleApplication",
|
|
"operatingSystem": "Web",
|
|
"inLanguage": "fr-FR",
|
|
"description": "Web app pour créer l'arbre généalogique d'une famille en ligne, avec photos, anecdotes, vidéos et voix, partageable en un lien sans compte.",
|
|
"offers": { "@type": "Offer", "price": "0", "priceCurrency": "EUR" },
|
|
"publisher": { "@id": "https://parenthese.io/#organization" }
|
|
}
|
|
]
|
|
}
|
|
</script>
|
|
<!-- Pages du site préparées en avance quand on survole un lien (appui sur téléphone) : elles s'ouvrent presque
|
|
tout de suite. Seulement les pages, pas les fichiers ; l'application (app.parenthese.io) n'est pas concernée.
|
|
Un navigateur qui ne connaît pas ces règles les ignore. -->
|
|
<script type="speculationrules">{"prerender":[{"where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":"/*.*"}}]},"eagerness":"moderate"}]}</script>
|
|
</head>
|
|
<body>
|
|
<!-- Sans JavaScript, le contenu prérendu reste visible (les révélations au défilement demandent JS) -->
|
|
<noscript><style>[data-reveal] { opacity: 1; transform: none; }</style></noscript>
|
|
<div id="root"></div>
|
|
<script type="module" src="/src/main.jsx"></script>
|
|
</body>
|
|
</html>
|