Compare commits

..

No commits in common. "f8b32d0797ac54861a4d2d03acd0d835550b2f19" and "195188f5188d366836da642ac5d9b8015bddd098" have entirely different histories.

2 changed files with 19 additions and 37 deletions

View File

@ -10,30 +10,30 @@ State of the landing page + CV project. Append-only: keep history readable.
- CV `CV_Bastien_Chanot.html` + matching PDF regenerated via weasyprint. - CV `CV_Bastien_Chanot.html` + matching PDF regenerated via weasyprint.
- Local serve verified at `http://192.168.1.101:8000/`. - Local serve verified at `http://192.168.1.101:8000/`.
## 2026-05-17 — Extended-vitrine refactor (shipped — commit 1369d27) ## 2026-05-17 — Extended-vitrine refactor (in progress)
Align landing with CV + add depth (Projets, Méthode, bullet-format Parcours). Align landing with CV + add depth (Projets, Méthode, bullet-format Parcours).
- [x] Meta description sync (kernel, AOSP, cloud gaming, GPU) - [ ] Meta description sync (kernel, AOSP, cloud gaming, GPU)
- [x] Nav links: add #projets + #methode - [ ] Nav links: add #projets + #methode
- [x] Hero: titre "Systèmes · Embarqué · Backend", banner "Backend · Cloud" - [ ] Hero: titre "Systèmes · Embarqué · Backend", banner "Backend · Cloud"
- [x] About: expand paragraphs (pourquoi bas niveau / cherche / pas envie) - [ ] About: expand paragraphs (pourquoi bas niveau / cherche / pas envie)
- [x] Stack: Langages (Java AOSP, drop Python order, + Familier avec C++) · Conteneurs (- VMware + cgroups/namespaces) · Systèmes (+ SELinux) · DevOps (- Gitflow/Agile, + GitHub Actions) · NEW Cloud/Infra · NEW IA/Outils - [ ] Stack: Langages (Java AOSP, drop Python order, + Familier avec C++) · Conteneurs (- VMware + cgroups/namespaces) · Systèmes (+ SELinux) · DevOps (- Gitflow/Agile, + GitHub Actions) · NEW Cloud/Infra · NEW IA/Outils
- [x] Parcours: kill "seul"/"responsable unique" — reformuler autonomie+collab - [ ] Parcours: kill "seul"/"responsable unique" — reformuler autonomie+collab
- [x] CareGame: intro contexte + 9 bullets + stack pills - [ ] CareGame: intro contexte + 9 bullets + stack pills
- [x] ZenQuality: intro CDI + 3 bullets + stack pills - [ ] ZenQuality: intro CDI + 3 bullets + stack pills
- [x] Deewee: dates Fév-Nov 2017 + contract line + 2 bullets + stack pills - [ ] Deewee: dates Fév-Nov 2017 + contract line + 2 bullets + stack pills
- [x] NEW Projets section (entre Parcours et Formation): Git source + Homelab - [ ] NEW Projets section (entre Parcours et Formation): Git source + Homelab
- [x] NEW Méthode section (entre Formation et Contact): 5 points bundle A - [ ] NEW Méthode section (entre Formation et Contact): 5 points bundle A
- [x] Contact email → bastien@bchanot.fr - [ ] Contact email → bastien@bchanot.fr
- [x] CSS extensions: timeline-bullets, timeline-stack, timeline-contract, projects-grid, methode-list - [ ] CSS extensions: timeline-bullets, timeline-stack, timeline-contract, projects-grid, methode-list
## Known follow-ups ## Known follow-ups
- Visual QA on real mobile device (375 px) — not just emulator. - Visual QA on real mobile device (375 px) — not just emulator.
- Verify WCAG AA contrast on all green-on-parchment text. - Verify WCAG AA contrast on all green-on-parchment text.
- Hosting: nginx VPS + Docker container behind reverse proxy (BDR-004) — decided & live. - Hosting decision: GitHub Pages vs Netlify vs Vercel vs nginx VPS — pending.
- DNS / domain for `bchanot.fr` — configured (site live in prod). - DNS / domain config for `bchanot.fr` — pending.
- Consider OG image — not yet present. - Consider OG image — not yet present.
- Mirror favicon link block into `CV_Bastien_Chanot.html` when user finalizes CV edits (currently /favicon.ico auto-served as legacy fallback). - Mirror favicon link block into `CV_Bastien_Chanot.html` when user finalizes CV edits (currently /favicon.ico auto-served as legacy fallback).

View File

@ -13,11 +13,6 @@ Static single-page site (no framework, no build step). Lives at https://bchanot.
| `CV_Bastien_Chanot.pdf` | CV — printable, served via "Télécharger PDF" | | `CV_Bastien_Chanot.pdf` | CV — printable, served via "Télécharger PDF" |
| `CLAUDE.md` | Project rules for the Claude assistant | | `CLAUDE.md` | Project rules for the Claude assistant |
| `.claude/` | Memory registries, tasks, audits | | `.claude/` | Memory registries, tasks, audits |
| `Dockerfile` | Container image build — copies static assets into nginx |
| `docker-compose.yml` | Service def — host port, hardening (read-only, cap_drop), tmpfs |
| `nginx.conf` | In-container nginx — security headers, CSP, gzip, cache |
| `.env.example` | Sample env — `PORT` for the host bind |
| `favicon.*`, `apple-touch-icon.png` | Favicon set — SVG primary + ICO/PNG + 180×180 apple-touch |
## Local preview ## Local preview
@ -75,22 +70,9 @@ WCAG AA contrast. Focus visible. Semantic HTML.
## Deploy ## Deploy
Production runs as a Docker container (`bchanot-web`, `nginx:1.27-alpine`) Static files — drop `index.html`, `CV_Bastien_Chanot.html`, and
behind the host's nginx reverse proxy, which terminates TLS and `proxy_pass`es `CV_Bastien_Chanot.pdf` onto any static host (Netlify, Vercel, GitHub Pages,
to it. The host port is set via `PORT` (default 8080) and bound to `127.0.0.1`, plain nginx) at the root.
so all traffic goes through the front proxy.
```bash
cp .env.example .env # optional: set PORT
docker compose up -d --build
```
`Dockerfile` copies the assets (HTML, PDF, favicons) into the image by an
explicit whitelist — when you add a new top-level asset, add it there too or it
will 404 in production. `nginx.conf` applies the security headers, gzip and
cache rules. The site is also plain static: `index.html`, the CV HTML/PDF and
favicon set drop onto any static host (Netlify, Vercel, GitHub Pages, plain
nginx) at the root.
## License ## License