Compare commits

...

4 Commits

Author SHA1 Message Date
Bastien Chanot
f8b32d0797 Merge feature/doc-sync into develop 2026-07-01 14:31:37 +02:00
Bastien Chanot
ce5c0481df docs: Docker deploy + contents table
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RNaYKPEkjH1jbgoX1TwKMX
2026-07-01 14:31:37 +02:00
Bastien Chanot
b5e127489b Merge chore/reconcile-memory into develop 2026-07-01 14:27:48 +02:00
Bastien Chanot
dd186c9dac chore(memory): reconcile TODO with shipped extended-vitrine (1369d27)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RNaYKPEkjH1jbgoX1TwKMX
2026-07-01 00:20:23 +02:00
2 changed files with 37 additions and 19 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.
- Local serve verified at `http://192.168.1.101:8000/`.
## 2026-05-17 — Extended-vitrine refactor (in progress)
## 2026-05-17 — Extended-vitrine refactor (shipped — commit 1369d27)
Align landing with CV + add depth (Projets, Méthode, bullet-format Parcours).
- [ ] Meta description sync (kernel, AOSP, cloud gaming, GPU)
- [ ] Nav links: add #projets + #methode
- [ ] Hero: titre "Systèmes · Embarqué · Backend", banner "Backend · Cloud"
- [ ] About: expand paragraphs (pourquoi bas niveau / cherche / pas envie)
- [ ] 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
- [ ] Parcours: kill "seul"/"responsable unique" — reformuler autonomie+collab
- [ ] CareGame: intro contexte + 9 bullets + stack pills
- [ ] ZenQuality: intro CDI + 3 bullets + stack pills
- [ ] Deewee: dates Fév-Nov 2017 + contract line + 2 bullets + stack pills
- [ ] NEW Projets section (entre Parcours et Formation): Git source + Homelab
- [ ] NEW Méthode section (entre Formation et Contact): 5 points bundle A
- [ ] Contact email → bastien@bchanot.fr
- [ ] CSS extensions: timeline-bullets, timeline-stack, timeline-contract, projects-grid, methode-list
- [x] Meta description sync (kernel, AOSP, cloud gaming, GPU)
- [x] Nav links: add #projets + #methode
- [x] Hero: titre "Systèmes · Embarqué · Backend", banner "Backend · Cloud"
- [x] 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
- [x] Parcours: kill "seul"/"responsable unique" — reformuler autonomie+collab
- [x] CareGame: intro contexte + 9 bullets + stack pills
- [x] ZenQuality: intro CDI + 3 bullets + stack pills
- [x] Deewee: dates Fév-Nov 2017 + contract line + 2 bullets + stack pills
- [x] NEW Projets section (entre Parcours et Formation): Git source + Homelab
- [x] NEW Méthode section (entre Formation et Contact): 5 points bundle A
- [x] Contact email → bastien@bchanot.fr
- [x] CSS extensions: timeline-bullets, timeline-stack, timeline-contract, projects-grid, methode-list
## Known follow-ups
- Visual QA on real mobile device (375 px) — not just emulator.
- Verify WCAG AA contrast on all green-on-parchment text.
- Hosting decision: GitHub Pages vs Netlify vs Vercel vs nginx VPS — pending.
- DNS / domain config for `bchanot.fr` — pending.
- Hosting: nginx VPS + Docker container behind reverse proxy (BDR-004) — decided & live.
- DNS / domain for `bchanot.fr` — configured (site live in prod).
- 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).

View File

@ -13,6 +13,11 @@ 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" |
| `CLAUDE.md` | Project rules for the Claude assistant |
| `.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
@ -70,9 +75,22 @@ 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.
Production runs as a Docker container (`bchanot-web`, `nginx:1.27-alpine`)
behind the host's nginx reverse proxy, which terminates TLS and `proxy_pass`es
to it. The host port is set via `PORT` (default 8080) and bound to `127.0.0.1`,
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