Code source du site liens.manu.quebec
  • JavaScript 64.6%
  • HTML 14.3%
  • CSS 13.4%
  • Shell 7.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Manu 56b496cc10
All checks were successful
Test, Minify and Deploy / test (push) Successful in 31s
Test, Minify and Deploy / build-and-deploy (push) Successful in 20s
chore(ci): migrer les alias GitHub vers les variables Forgejo natives et ajouter le workflow de mise à jour automatique des dépendances
- Remplacer github.sha → forgejo.sha, secrets.GITHUB_TOKEN → secrets.FORGEJO_TOKEN, github.repository → forgejo.repository
- Adapter build.sh : GITHUB_SHA → FORGEJO_SHA
- Ajouter .forgejo/workflows/update-deps.yml ( quotidien 11h UTC, npm-check-updates, PR automatique via API Forgejo)
2026-09-16 00:54:05 -04:00
.forgejo/workflows chore(ci): migrer les alias GitHub vers les variables Forgejo natives et ajouter le workflow de mise à jour automatique des dépendances 2026-09-16 00:54:05 -04:00
css chore: améliorations de qualité, sécurité et robustesse 2026-09-11 20:20:28 -04:00
images feat: ajouter le logo manu.quebec comme lien dans le header 2026-09-02 23:05:56 -04:00
js ci: améliorations complètes des workflows et du code 2026-09-13 11:32:00 -04:00
test ci: améliorations complètes des workflows et du code 2026-09-13 11:32:00 -04:00
.editorconfig chore: optimisations de la stack et nettoyage 2026-09-08 19:46:40 -04:00
.gitignore chore: optimisations de la stack et nettoyage 2026-09-08 19:46:40 -04:00
.node-version build: mettre à jour eslint et html-validate, aligner sur Node 24 LTS 2026-08-25 09:46:44 -04:00
.prettierignore feat: migration Vitest, Prettier, W3C vnu et script build.sh local 2026-08-30 23:40:50 -04:00
.prettierrc feat: migration Vitest, Prettier, W3C vnu et script build.sh local 2026-08-30 23:40:50 -04:00
.stylelintrc.json feat: migration Vitest, Prettier, W3C vnu et script build.sh local 2026-08-30 23:40:50 -04:00
AGENTS.md docs: revue complète de la stack du 2026-09-13 2026-09-13 19:43:04 -04:00
build.sh chore(ci): migrer les alias GitHub vers les variables Forgejo natives et ajouter le workflow de mise à jour automatique des dépendances 2026-09-16 00:54:05 -04:00
CADDY_SECURITY_CONFIG.md fix: retirer require-trusted-types-for de la CSP (avertissement Firefox) 2026-09-11 20:43:46 -04:00
eslint.config.js chore: optimisations de la stack et nettoyage 2026-09-08 19:46:40 -04:00
index.html ci: améliorations complètes des workflows et du code 2026-09-13 11:32:00 -04:00
LICENSE fix: corriger verify-csp.sh et ajouter LICENSE 2026-09-12 13:15:10 -04:00
manifest.json fix: améliorations de robustesse et documentation 2026-09-10 16:08:47 -04:00
package-lock.json chore: mettre à jour vite 6.4.3 → 8.3.0 (peer dep de vitest 5) 2026-09-13 18:01:39 -04:00
package.json chore: mettre à jour vite 6.4.3 → 8.3.0 (peer dep de vitest 5) 2026-09-13 18:01:39 -04:00
README.md docs: revue complète de la stack du 2026-09-13 2026-09-13 19:43:04 -04:00
robots.txt ci: améliorations complètes des workflows et du code 2026-09-13 11:32:00 -04:00
schema.json feat: migration Vitest, Prettier, W3C vnu et script build.sh local 2026-08-30 23:40:50 -04:00
sitemap.xml fix: corriger le cache SW, supprimer le code CommonJS mort et automatiser le lastmod sitemap 2026-09-10 22:59:27 -04:00
sw.js ci: améliorations complètes des workflows et du code 2026-09-13 11:32:00 -04:00
test-html.js feat: migration Vitest, Prettier, W3C vnu et script build.sh local 2026-08-30 23:40:50 -04:00
verify-csp.sh fix: corriger verify-csp.sh et ajouter LICENSE 2026-09-12 13:15:10 -04:00
vitest.config.js test: ajout de tests pour main.js et couverture 2026-09-10 22:08:13 -04:00

liens.manu.quebec

Test, Minify and Deploy

Page de destination personnelle regroupant les liens vers mes profils en ligne et mes informations de contact.

Demo : https://liens.manu.quebec

Fonctionnalités

  • Liste de liens : regroupe mes profils sur les réseaux sociaux, mes contacts et d'autres liens pertinents.
  • Thème clair/sombre : bouton de bascule + détection prefers-color-scheme, sans flash au chargement.
  • Arrière-plan animé : aurora WebGL avec DPR plafonné, pause quand l'onglet est masqué.
  • Protection du courriel : adresse encodée en XOR pour éviter le scraping.
  • PWA : installable, manifest + Service Worker avec cache versionné par commit.
  • Accessibilité : respect de prefers-reduced-motion, lien d'évitement, ARIA.
  • Sécurité renforcée : CSP stricte default-src 'none', Trusted Types, HSTS.
  • Responsive : mobile, tablette et bureau.

Technologies

  • HTML5, CSS3, JavaScript vanilla (aucun framework, aucun bundler)
  • WebGL pour l'animation d'arrière-plan
  • Node.js 24 pour la validation et la minification

Structure du projet

index.html          → Page unique (lang=fr, OG, Twitter Cards)
css/styles.css      → ~510 lignes, thèmes clair/sombre, glassmorphism, animations
js/aurora-engine.js → Moteur WebGL de l'arrière-plan aurora (~250 lignes)
js/main.js          → Thème, JSON-LD dynamique, email XOR, SW, visibilité
js/theme-init.js    → Initialisation thème anti-flash + Trusted Types policy
sw.js               → Service Worker (Network First HTML, Cache First assets)
manifest.json       → Manifeste PWA
schema.json         → Données structurées JSON-LD (externalisées, CSP-friendly)
build.sh            → Minification + injection placeholders + statistiques
verify-csp.sh       → Vérification des en-têtes CSP en production
test/               → 6 suites vitest (main, aurora, thème, styles, glass, canvas)
test-html.js        → Validation HTML (vnu W3C ou repli html-validate)
images/             → Logos WebP + icônes PWA 192/512

Développement

Aucune étape de build. Ouvrir index.html dans un navigateur ou servir localement :

python3 -m http.server 8000   # ou npx serve .
npm install
npm test                      # html-validate + stylelint + eslint + vitest (35 tests)

Build

En CI, chaque fichier est minifié (terser, clean-css-cli, html-minifier-terser), les placeholders %%COMMIT_SOURCE_URL%% et %%COMMIT_HASH%% sont remplacés, et le résultat est poussé en force-push vers la branche dist.

npm run build   # produit dist/ avec statistiques de compression

Configuration de sécurité

Le site utilise une Content Security Policy stricte configurée via Caddy :

./verify-csp.sh https://liens.manu.quebec

Note : le JSON-LD est externalisé dans schema.json et chargé via fetch(), ce qui élimine toute gestion de hash SHA-256 dans la CSP.


Dernière revue complète : 2026-09-13