Files
lage-chat-control/frontend/src/lib/site.ts
T
sucupira 848e33d198 SEO : comble les régressions de la migration Astro → SvelteKit
- composant Seo.svelte partagé : canonical, Open Graph complet
  (type, url, title, description, image, locale fr_FR, site_name)
  et Twitter Cards sur toutes les pages
- branché sur l'accueil, /outils, /quiz, /contribuer et les fiches
  outils (les meta OG en dur des fiches sont remplacés par le
  composant, JSON-LD conservé)
- script prebuild gen-sitemap.mjs : régénère static/sitemap.xml
  (59 URLs, slugs relus depuis content/outils/) — remplace le
  sitemap qu'apportait @astrojs/sitemap
- robots.txt référence le sitemap en URL absolue
2026-07-21 13:50:03 -04:00

24 lines
999 B
TypeScript

/** Constantes du site — un seul endroit à changer si la forge bouge. */
export const REPO_URL = 'https://labola.o-k-i.net/cyber-mawonaj/lage-chat-control'
/** Origine de production — base des URL absolues SEO (canonical, OG, sitemap). */
export const SITE_URL = 'https://chatcontrol.o-k-i.net'
export const NEW_TOOL_ISSUE_URL = `${REPO_URL}/issues/new?template=.gitea/ISSUE_TEMPLATE/nouvo-zouti.yaml`
/**
* Les trois arcs du chimen (sommaire) : progression Fondations →
* Reprendre le contrôle → Autodéfense avancée. Une catégorie appartient
* au premier arc dont `maxPart` couvre son `part`.
*/
export const ARCS = [
{ id: 'fondations', maxPart: 4, difficulty: 'beginner' },
{ id: 'controle', maxPart: 9, difficulty: 'intermediate' },
{ id: 'avance', maxPart: 99, difficulty: 'advanced' }
] as const
export type ArcId = (typeof ARCS)[number]['id']
export function arcOf(part: number): ArcId {
return (ARCS.find((a) => part <= a.maxPart) ?? ARCS[ARCS.length - 1]).id
}