Multilingual static site for my CV and portfolio. https://cjournois.com/en
  • TypeScript 91%
  • JavaScript 3.9%
  • Just 1.9%
  • Shell 1.2%
  • CSS 0.9%
  • Other 1%
Find a file
bot-renovate 12a22444ed
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
ci: resume / CI Pipeline (pull_request) Successful in 1m2s
ci: resume / CI Pipeline (push) Successful in 1m8s
fix(deps): update dependency @biomejs/biome to v2.5.4
2026-07-22 18:29:22 +00:00
.claude/skills feat: add md-to-pdf in create offer skill 2026-06-10 20:17:52 +02:00
.github/workflows refactor: update to last org structure 2026-07-01 21:34:43 +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.61.1 2026-07-22 16:28:50 +00:00
packages/resume-helm chore(release): resume-helm 0.2.2, resume 0.7.0 2026-07-15 19:18:37 +00:00
services fix(deps): update dependency @biomejs/biome to v2.5.4 2026-07-22 18:29:22 +00:00
.editorconfig feat: initial project with working resume 2026-04-09 02:43:55 +02:00
.gitignore feat: adapt with farewell 2026-05-16 17:24:20 +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.2 2026-07-22 16:23:56 +00:00
docker-compose.yml feat: adapt with farewell 2026-05-16 17:24:20 +02:00
justfile fix: hidden farewell as it's stall for now 2026-07-16 11:00:56 +02:00
LICENSE chore: align license to proprietary policy 2026-06-15 10:06:26 +02:00
mise.toml fix(deps): update dependency kind to v0.32.0 2026-07-15 20:27:57 +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 ci: update repo-toolkit description and topics 2026-05-21 21:57:46 +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 testbun 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.