type: decisions_registry entry_prefix: BDR schema: id: BDR-XXX date: YYYY-MM-DD title: string (<= 80 chars) decision: string (what was chosen) why: string (motivation, context) alternatives: list of strings (what was rejected + why) status: [proposed | accepted | deprecated | superseded] supersedes: BDR-XXX (optional) rules:
| ID | Date | Title | Status |
|---|---|---|---|
| BDR-001 | 2026-05-15 | Static single-file site, no framework | accepted |
| BDR-002 | 2026-05-15 | weasyprint pour PDF CV depuis HTML | accepted |
| BDR-003 | 2026-05-15 | Position pro: CDI prioritaire, freelance parallèle | accepted |
| BDR-004 | 2026-05-15 | Containerize site with nginx:alpine behind reverse proxy | accepted |
| BDR-005 | 2026-05-17 | Favicon: SVG primary + PIL raster fallback | accepted |
index.html unique, CSS inline <style>, JS vanilla inline <script>. Aucun bundler, aucun build step.~/.claude/CLAUDE.md).index.html, section Stack de CLAUDE.md.weasyprint pour génération PDF CVweasyprint CV_Bastien_Chanot.html CV_Bastien_Chanot.pdf à chaque modif HTML CV.~/.local/bin/weasyprint). Chromium absent. wkhtmltopdf déprécié.--print-to-pdf — pas installé.box-shadow: none ignoré par weasyprint, sans impact visuel.CV_Bastien_Chanot.pdf.index.html (hero-eyebrow, about-text para 3, about-callout) + CV_Bastien_Chanot.html (header).bchanot-web Docker container (nginx:1.27-alpine). Container listens on port 80 internally; host port configurable via PORT env (default 8080), bound to 127.0.0.1. Host nginx terminates TLS + proxy_pass to container.zenquality.fr, nuit-folle.zenquality.fr, bchanot.fr). Container isolates static assets + nginx config, easier rollback, reproducible build. Loopback bind blocks direct external hits, forces traffic through host nginx (TLS, rate limit, logs).read_only: true, cap_drop: ALL + minimal cap_add, no-new-privileges, tmpfs for /var/cache/nginx + /var/run + /tmp. CSP allows inline CSS/JS (project convention) + Google Fonts. HSTS deliberately omitted at container level — set by outer proxy after TLS termination.Dockerfile, nginx.conf, docker-compose.yml, .env.example.favicon.svg (vector primary) + PIL-generated favicon-32.png, favicon.ico (16/24/32/48), apple-touch-icon.png (180×180). 4 <link> tags in <head> of index.html..brand::before pulse-dot (visual continuity with nav).rsvg-convert / inkscape for SVG→PNG — not installed on host, setup friction./favicon.ico from root → CV tab still shows icon. Link block mirror logged in .claude/tasks/TODO.md for later.favicon.svg, favicon-32.png, favicon.ico, apple-touch-icon.png, index.html head, commit ef31fb3.