Go to file
Bastien Chanot ef31fb3059 feat(landing): add favicon set — SVG primary + PNG/ICO fallback
Brand pulse-dot translated to favicon: dark rounded square (#0d1b12) +
inner green dot (#6ab98a) + faint outer ring (#2d7a4f @60%). Identical
visual language to .brand::before in the nav.

Assets:
- favicon.svg          — vector primary (modern browsers, scales)
- favicon-32.png       — PNG hint
- favicon.ico          — legacy multi-size (16/24/32/48)
- apple-touch-icon.png — iOS home-screen 180x180

PIL-generated PNG/ICO at 8x supersample + Lanczos downscale for clean
antialiasing. No external dependency added (PIL already on system).

index.html: 4 <link> tags wired in <head> (SVG, PNG 32, ICO alternate,
apple-touch). CV HTML left untouched; browser auto-fetches /favicon.ico
from root as fallback — TODO logged to mirror the link block when the
user finalizes CV edits.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 03:51:14 +02:00
.claude feat(landing): add favicon set — SVG primary + PNG/ICO fallback 2026-05-17 03:51:14 +02:00
.dockerignore feat(docker): containerize site with configurable host port 2026-05-15 16:53:20 +02:00
.env.example feat(docker): containerize site with configurable host port 2026-05-15 16:53:20 +02:00
.gitignore feat(docker): containerize site with configurable host port 2026-05-15 16:53:20 +02:00
apple-touch-icon.png feat(landing): add favicon set — SVG primary + PNG/ICO fallback 2026-05-17 03:51:14 +02:00
CLAUDE.md chore: initial commit — landing page + CV + Claude config 2026-05-15 16:53:06 +02:00
CV_Bastien_Chanot.html final version of cv html and pdf 2026-05-15 20:08:50 +02:00
CV_Bastien_Chanot.pdf final version of cv html and pdf 2026-05-15 20:08:50 +02:00
docker-compose.yml feat(docker): containerize site with configurable host port 2026-05-15 16:53:20 +02:00
Dockerfile feat(docker): containerize site with configurable host port 2026-05-15 16:53:20 +02:00
favicon-32.png feat(landing): add favicon set — SVG primary + PNG/ICO fallback 2026-05-17 03:51:14 +02:00
favicon.ico feat(landing): add favicon set — SVG primary + PNG/ICO fallback 2026-05-17 03:51:14 +02:00
favicon.svg feat(landing): add favicon set — SVG primary + PNG/ICO fallback 2026-05-17 03:51:14 +02:00
index.html feat(landing): add favicon set — SVG primary + PNG/ICO fallback 2026-05-17 03:51:14 +02:00
nginx.conf feat(docker): containerize site with configurable host port 2026-05-15 16:53:20 +02:00
README.md chore: initial commit — landing page + CV + Claude config 2026-05-15 16:53:06 +02:00

bchanot.fr

Personal landing page + CV for Bastien Chanot — developer, systems & backend.

Static single-page site (no framework, no build step). Lives at https://bchanot.fr.

Contents

File Purpose
index.html Landing page (inline CSS + JS, single file)
CV_Bastien_Chanot.html CV — web version, linked from landing as "Voir le CV"
CV_Bastien_Chanot.pdf CV — printable, served via "Télécharger PDF"
CLAUDE.md Project rules for the Claude assistant
.claude/ Memory registries, tasks, audits

Local preview

python3 -m http.server 8000 --bind 0.0.0.0

Then open http://localhost:8000/ (same machine) or http://192.168.1.101:8000/ from any device on the LAN.

If the LAN URL is unreachable, the firewall is likely blocking the port:

sudo ufw allow 8000/tcp

Regenerate the CV PDF after editing the HTML

weasyprint CV_Bastien_Chanot.html CV_Bastien_Chanot.pdf

Run this every time CV_Bastien_Chanot.html is modified so the served PDF stays in sync.

Stack

  • HTML5 + CSS3 (inline <style> in <head>)
  • Vanilla JS (inline <script> before </body>)
  • Google Fonts: JetBrains Mono, Fraunces, DM Sans
  • weasyprint for HTML → PDF conversion (CV only)

No bundler. No npm. No runtime dependencies beyond Google Fonts.

Design rules

Strict palette (non-negotiable):

Hex Role
#0d1b12 Dark forest — nav, dark sections, footer
#1b5e3b Green primary — section titles, links on light bg
#2d7a4f Green accent — borders, dots, separators
#6ab98a Green light — text on dark bg
#dff0e7 Green tint — pill background
#f5f3ec Parchment — page background

Typography:

  • Fraunces — display (names, titles)
  • JetBrains Mono — technical labels, badges, pills, nav, contact
  • DM Sans — body text

Mobile-first, responsive at 768px + 1200px breakpoints. WCAG AA contrast. Focus visible. Semantic HTML.

Deploy

Static files — drop index.html, CV_Bastien_Chanot.html, and CV_Bastien_Chanot.pdf onto any static host (Netlify, Vercel, GitHub Pages, plain nginx) at the root.

License

Personal site content — © Bastien Chanot.