Multilingual static site for my CV and portfolio.
https://cjournois.com/en
- TypeScript 93%
- JavaScript 4.1%
- CSS 1%
- Dockerfile 0.6%
- Just 0.5%
- Other 0.7%
|
|
||
|---|---|---|
| .github/workflows | ||
| packages/resume-helm | ||
| services/resume | ||
| .editorconfig | ||
| .gitignore | ||
| CHANGELOG.md | ||
| docker-compose.yml | ||
| justfile | ||
| LICENSE | ||
| mise.toml | ||
| README.md | ||
| renovate.json | ||
| repo-toolkit.json | ||
cjournois/resume
This project is licensed under the GNU AGPL-3.0. See the LICENSE file for details.
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
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 viavirtual:resume-locales).
- Development:
bun start— Vite dev server (hot reload). - Production build:
just build— TypeScript project references, then Vite build intodist/. WithVITE_SITE_URLset, the Vite plugins also emitsitemap.xmlandrobots.txtindist/, and copypublic/data,public/assets, and optionalpublic/robots.txtintodist/. - Docker:
docker compose up— builds the image fromContainerfileand serves on http://localhost:8080. Compose setsVITE_SITE_URLfor the build stage so sitemap URLs match the published origin.
Developer: Getting Started
Requirements
Development
just install— Install dependenciesjust lint— ESLintjust lint-fix— ESLint with automatic fixesjust test—bun testjust test-coverage— Tests with coveragebun start— Vite dev serverjust build— Typecheck and production build
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_URLmust be non-empty at build time; ensure it is set in CI, DockerARG/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.