Multilingual static site for my CV and portfolio. https://cjournois.com/en
  • TypeScript 90.9%
  • JavaScript 3.9%
  • CSS 1.8%
  • Shell 1.2%
  • Just 1%
  • Other 1.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
cjournois d9ecfa8abb
All checks were successful
ci: resume-helm / CI Pipeline (push) Successful in 13m21s
fix(helm): keep only 2 old ReplicaSets per Deployment
2026-09-25 14:18:25 +02:00
.claude/skills feat: add md-to-pdf in create offer skill 2026-06-10 20:17:52 +02:00
.github/workflows fix(ci): move to reusable-pipeline 4.4.1 2026-09-25 14:02:16 +02:00
docs docs: drop non-standard kind field from component frontmatter 2026-06-16 16:39:40 +02:00
e2e fix(deps): update dependency @playwright/test to v1.62.1 2026-08-13 10:51:21 +00:00
packages/resume-helm fix(helm): keep only 2 old ReplicaSets per Deployment 2026-09-25 14:18:25 +02:00
services chore(release): resume 0.7.7 2026-09-07 06:20:55 +00:00
.editorconfig feat: initial project with working resume 2026-04-09 02:43:55 +02:00
.gitignore test(resume): add the ui e2e tier 2026-07-31 10:23:50 +02:00
AGENT.md fix: hidden farewell as it's stall for now 2026-07-16 11:00:56 +02:00
CHANGELOG.md chore(release): resume 0.7.7 2026-09-07 06:20:55 +00:00
docker-compose.yml feat: adapt with farewell 2026-05-16 17:24:20 +02:00
justfile refactor!: rename the e2e gate to e2e-full and drive it from stack.json 2026-07-31 10:05:14 +02:00
LICENSE chore: align license to proprietary policy 2026-06-15 10:06:26 +02:00
mise.toml fix(deps): update dependency kubectl to v1.37.0 2026-08-31 18:16:41 +00:00
README.md fix: hidden farewell as it's stall for now 2026-07-16 11:00:56 +02:00
renovate.json ci: solve wrong renovate configuration path 2026-05-18 19:09:55 +02:00
repo-toolkit.json chore: align forge metadata with what the repo actually is 2026-07-30 15:03:41 +02:00

cjournois/resume

Proprietary — Copyright (c) 2026 cjournois. All rights reserved. SPDX: UNLICENSED. See LICENSE for terms.

Multi-locale résumé site built with React, Vite, and Tailwind; static data under public/data/{locale}/, production image served by nginx.

Project structure

services/
  resume/         # React + Vite app, Containerfile, nginx config
packages/
  resume-helm/    # Helm chart published to git.journois.com

Documentation

Summary


Developer: Usage

Run the dev server locally, or build static assets for deployment. Locales are discovered at build time from public/data/*/resume.json (exposed to the app via virtual:resume-locales).

  • Development: cd services/resume && bun start — Vite dev server (hot reload).
  • Production build: just build — TypeScript project references, then Vite build into dist/. With VITE_SITE_URL set, the Vite plugins also emit sitemap.xml and robots.txt in dist/, and copy public/data, public/assets, and optional public/robots.txt into dist/.
  • Docker: just up — builds the image from Containerfile and serves it detached on http://localhost:8080; just down stops it. Compose sets VITE_SITE_URL for the build stage so sitemap URLs match the published origin.

Developer: Getting Started

Requirements

Development

  • just install — Install dependencies
  • just lint — ESLint
  • just lint-fix — ESLint with automatic fixes
  • just test — bun test
  • just test-coverage — Tests with coverage
  • cd services/resume && bun start — Vite dev server
  • just build — Typecheck and production build
  • just up — Build and serve the production image on http://localhost:8080
  • just down — Stop it

Optional: create a .env or .env.production with VITE_SITE_URL=https://your.domain so local production builds generate SEO files.


Maintainer: Troubleshooting

Notes for maintainers, issues, or to-do items

  • Empty sitemap in dist/: VITE_SITE_URL must be non-empty at build time; ensure it is set in CI, Docker ARG/ENV, or env files that Vite loads for the active mode.
  • Locales missing in the app: Each locale needs public/data/<code>/resume.json; the virtual module lists only those folders.