Compare commits
8 Commits
115388e7cc
...
renovate/c
| Author | SHA1 | Date | |
|---|---|---|---|
| 8a4dbab253 | |||
| a68ad22e66 | |||
| 3f21f0ae8a | |||
| f71b2a99d6 | |||
| 2ae49eeda8 | |||
|
|
3f45c7ae3e | ||
|
|
35d4bf7d7f | ||
| 1da0fbfce1 |
8
bun.lock
8
bun.lock
@@ -5,7 +5,7 @@
|
|||||||
"name": "website",
|
"name": "website",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@biomejs/biome": "^2.2.4",
|
"@biomejs/biome": "^2.2.4",
|
||||||
"@effect/language-service": "^0.44.0",
|
"@effect/language-service": "^0.45.0",
|
||||||
"@types/bun": "^1.2.23",
|
"@types/bun": "^1.2.23",
|
||||||
"npm-check-updates": "^19.0.0",
|
"npm-check-updates": "^19.0.0",
|
||||||
"npm-sort": "^0.0.4",
|
"npm-sort": "^0.0.4",
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
"effect-fc": "^0.1.3",
|
"effect-fc": "^0.1.3",
|
||||||
"i18next": "^25.6.0",
|
"i18next": "^25.6.0",
|
||||||
"i18next-browser-languagedetector": "^8.2.0",
|
"i18next-browser-languagedetector": "^8.2.0",
|
||||||
"lucide-react": "^0.545.0",
|
"lucide-react": "^0.546.0",
|
||||||
"react": "^19.1.1",
|
"react": "^19.1.1",
|
||||||
"react-dom": "^19.1.1",
|
"react-dom": "^19.1.1",
|
||||||
"react-i18next": "^16.0.1",
|
"react-i18next": "^16.0.1",
|
||||||
@@ -169,7 +169,7 @@
|
|||||||
|
|
||||||
"@effect/experimental": ["@effect/experimental@0.56.0", "", { "dependencies": { "uuid": "^11.0.3" }, "peerDependencies": { "@effect/platform": "^0.92.0", "effect": "^3.18.0", "ioredis": "^5", "lmdb": "^3" }, "optionalPeers": ["ioredis", "lmdb"] }, "sha512-ZT9wTUVyDptzdkW4Tfvz5fNzygW9vt5jWcFmKI9SlhZMu9unVJgsBhxWCNYCyfPnxw3n/Z6SEKsqgt8iKQc4MA=="],
|
"@effect/experimental": ["@effect/experimental@0.56.0", "", { "dependencies": { "uuid": "^11.0.3" }, "peerDependencies": { "@effect/platform": "^0.92.0", "effect": "^3.18.0", "ioredis": "^5", "lmdb": "^3" }, "optionalPeers": ["ioredis", "lmdb"] }, "sha512-ZT9wTUVyDptzdkW4Tfvz5fNzygW9vt5jWcFmKI9SlhZMu9unVJgsBhxWCNYCyfPnxw3n/Z6SEKsqgt8iKQc4MA=="],
|
||||||
|
|
||||||
"@effect/language-service": ["@effect/language-service@0.44.0", "", { "bin": { "effect-language-service": "cli.js" } }, "sha512-ya9cDN0CvmZl2jAhGOBEvp15e+t/9LDdwkH1+vO8wnz/5BdsAZLVo3O3SYO5rtHQiL3rJBwPkn3Z7X6pZ8E8ww=="],
|
"@effect/language-service": ["@effect/language-service@0.45.1", "", { "bin": { "effect-language-service": "cli.js" } }, "sha512-SEZ9TaVCpRKYumTQJPApg3os9O94bN2lCYQLgZbyK/xD+NSfYPPJZQ+6T5LkpcNgW8BRk1ACI7S1W2/noxm7Qg=="],
|
||||||
|
|
||||||
"@effect/opentelemetry": ["@effect/opentelemetry@0.58.0", "", { "peerDependencies": { "@effect/platform": "^0.92.0", "@opentelemetry/api": "^1.9", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-logs": "^0.203.0", "@opentelemetry/sdk-metrics": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/sdk-trace-web": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.33.0", "effect": "^3.18.0" }, "optionalPeers": ["@opentelemetry/api", "@opentelemetry/resources", "@opentelemetry/sdk-logs", "@opentelemetry/sdk-metrics", "@opentelemetry/sdk-trace-base", "@opentelemetry/sdk-trace-node", "@opentelemetry/sdk-trace-web"] }, "sha512-NKCk64lf2VbrTxpxWUgqWxk02j49u5sh2HD8YK0UPDOi62vmc12aBqdhEyPp+kpdZiw8VI8ZALkgYRG1tH08SQ=="],
|
"@effect/opentelemetry": ["@effect/opentelemetry@0.58.0", "", { "peerDependencies": { "@effect/platform": "^0.92.0", "@opentelemetry/api": "^1.9", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-logs": "^0.203.0", "@opentelemetry/sdk-metrics": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/sdk-trace-web": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.33.0", "effect": "^3.18.0" }, "optionalPeers": ["@opentelemetry/api", "@opentelemetry/resources", "@opentelemetry/sdk-logs", "@opentelemetry/sdk-metrics", "@opentelemetry/sdk-trace-base", "@opentelemetry/sdk-trace-node", "@opentelemetry/sdk-trace-web"] }, "sha512-NKCk64lf2VbrTxpxWUgqWxk02j49u5sh2HD8YK0UPDOi62vmc12aBqdhEyPp+kpdZiw8VI8ZALkgYRG1tH08SQ=="],
|
||||||
|
|
||||||
@@ -819,7 +819,7 @@
|
|||||||
|
|
||||||
"lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="],
|
"lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="],
|
||||||
|
|
||||||
"lucide-react": ["lucide-react@0.545.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-7r1/yUuflQDSt4f1bpn5ZAocyIxcTyVyBBChSVtBKn5M+392cPmI5YJMWOJKk/HUWGm5wg83chlAZtCcGbEZtw=="],
|
"lucide-react": ["lucide-react@0.546.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Z94u6fKT43lKeYHiVyvyR8fT7pwCzDu7RyMPpTvh054+xahSgj4HFQ+NmflvzdXsoAjYGdCguGaFKYuvq0ThCQ=="],
|
||||||
|
|
||||||
"magic-string": ["magic-string@0.30.19", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw=="],
|
"magic-string": ["magic-string@0.30.19", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw=="],
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ services:
|
|||||||
|
|
||||||
tempo:
|
tempo:
|
||||||
<<: *service-base
|
<<: *service-base
|
||||||
image: grafana/tempo:latest@sha256:9d90999be135693b4883b751b56844971a2718edaf93b3fa53430684d6a99d93
|
image: grafana/tempo:latest@sha256:8b1447438058ca1307ecf55689ed3da944037cc8918664701b95fa18cdaa1b2c
|
||||||
command: [-config.file=/etc/tempo.yaml]
|
command: [-config.file=/etc/tempo.yaml]
|
||||||
volumes:
|
volumes:
|
||||||
- ./telemetry/tempo.yaml:/etc/tempo.yaml
|
- ./telemetry/tempo.yaml:/etc/tempo.yaml
|
||||||
@@ -56,7 +56,7 @@ services:
|
|||||||
stop_signal: SIGKILL
|
stop_signal: SIGKILL
|
||||||
|
|
||||||
prometheus:
|
prometheus:
|
||||||
image: prom/prometheus:v3.7.0@sha256:29c1e0b48ad816750245dea3d65ac3ce57dda30547e67b1e9a5176e2953cc4dc
|
image: prom/prometheus:v3.7.1@sha256:ff7e389acbe064a4823212a500393d40a28a8f362e4b05cbf6742a9a3ef736b2
|
||||||
command:
|
command:
|
||||||
- --config.file=/etc/prometheus.yaml
|
- --config.file=/etc/prometheus.yaml
|
||||||
- --web.enable-remote-write-receiver
|
- --web.enable-remote-write-receiver
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@biomejs/biome": "^2.2.4",
|
"@biomejs/biome": "^2.2.4",
|
||||||
"@effect/language-service": "^0.44.0",
|
"@effect/language-service": "^0.45.0",
|
||||||
"@types/bun": "^1.2.23",
|
"@types/bun": "^1.2.23",
|
||||||
"npm-check-updates": "^19.0.0",
|
"npm-check-updates": "^19.0.0",
|
||||||
"npm-sort": "^0.0.4",
|
"npm-sort": "^0.0.4",
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
"effect-fc": "^0.1.3",
|
"effect-fc": "^0.1.3",
|
||||||
"i18next": "^25.6.0",
|
"i18next": "^25.6.0",
|
||||||
"i18next-browser-languagedetector": "^8.2.0",
|
"i18next-browser-languagedetector": "^8.2.0",
|
||||||
"lucide-react": "^0.545.0",
|
"lucide-react": "^0.546.0",
|
||||||
"react": "^19.1.1",
|
"react": "^19.1.1",
|
||||||
"react-dom": "^19.1.1",
|
"react-dom": "^19.1.1",
|
||||||
"react-i18next": "^16.0.1",
|
"react-i18next": "^16.0.1",
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ jobs:
|
|||||||
publish-npm:
|
publish-npm:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v5
|
||||||
- uses: actions/setup-node@v3
|
- uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: 16
|
node-version: 16
|
||||||
registry-url: https://registry.npmjs.org/
|
registry-url: https://registry.npmjs.org/
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/jdan/98.css",
|
"homepage": "https://github.com/jdan/98.css",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"chokidar": "^3.3.1",
|
"chokidar": "^4.0.0",
|
||||||
"cssnano": "^5.0.1",
|
"cssnano": "^5.0.1",
|
||||||
"dedent": "^0.7.0",
|
"dedent": "^0.7.0",
|
||||||
"ejs": "^3.0.2",
|
"ejs": "^3.0.2",
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
"postcss": "^8.2.12",
|
"postcss": "^8.2.12",
|
||||||
"postcss-calc": "^7.0.2",
|
"postcss-calc": "^7.0.2",
|
||||||
"postcss-copy": "^7.1.0",
|
"postcss-copy": "^7.1.0",
|
||||||
"postcss-css-variables": "^0.14.0",
|
"postcss-css-variables": "^0.19.0",
|
||||||
"postcss-inline": "^1.2.0",
|
"postcss-inline": "^1.2.0",
|
||||||
"postcss-inline-svg": "^4.1.0"
|
"postcss-inline-svg": "^4.1.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ export const en = {
|
|||||||
|
|
||||||
nav: {
|
nav: {
|
||||||
gitRepos: {
|
gitRepos: {
|
||||||
title: "Git repositories",
|
title: "Git Repos",
|
||||||
tooltip: "All the public repositories on my Git server",
|
tooltip: "All the public repositories on my Git server",
|
||||||
},
|
},
|
||||||
sourceCode: {
|
sourceCode: {
|
||||||
|
|||||||
@@ -17,67 +17,72 @@ function RootComponent() {
|
|||||||
const { t, i18n } = useTranslation()
|
const { t, i18n } = useTranslation()
|
||||||
|
|
||||||
return <>
|
return <>
|
||||||
<root.div>
|
<div className="flex flex-row items-center justify-center gap-2 p-2">
|
||||||
<link rel="stylesheet" href="/98.css/dist/98.css" />
|
<Button
|
||||||
|
variant={i18n.language !== "en" ? "default" : "noShadow"}
|
||||||
|
onClick={() => i18n.changeLanguage("en")}
|
||||||
|
>
|
||||||
|
🇬🇧 English
|
||||||
|
</Button>
|
||||||
|
|
||||||
<div className="window" style={{ width: 300 }}>
|
<Button
|
||||||
<div className="title-bar">
|
variant={i18n.language !== "fr" ? "default" : "noShadow"}
|
||||||
<div className="title-bar-text">A Window With Stuff In It</div>
|
onClick={() => i18n.changeLanguage("fr")}
|
||||||
<div className="title-bar-controls">
|
>
|
||||||
<button aria-label="Minimize"></button>
|
🇫🇷 Français
|
||||||
<button aria-label="Maximize"></button>
|
</Button>
|
||||||
<button aria-label="Close"></button>
|
</div>
|
||||||
|
|
||||||
|
<div className="container mt-20 mr-auto ml-auto">
|
||||||
|
<div className="mr-auto ml-auto flex w-fit flex-row items-start justify-around gap-10">
|
||||||
|
<root.div>
|
||||||
|
<link rel="stylesheet" href="/98.css/dist/98.css" />
|
||||||
|
|
||||||
|
<div className="window" style={{ width: 300 }}>
|
||||||
|
<div className="title-bar">
|
||||||
|
<div className="title-bar-text">Julien Valverde</div>
|
||||||
|
</div>
|
||||||
|
<div className="window-body">
|
||||||
|
<p>There's so much room for activities!</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</root.div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h1>Ingénieur Full Stack • Entrepreneur</h1>
|
||||||
|
|
||||||
|
<p className="mt-2">
|
||||||
|
I am passionate about integrating functionality and design in applications to create intuitive, user-friendly experiences.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div className="flex w-fit flex-row items-center justify-center gap-2 mt-4">
|
||||||
|
<TooltipProvider>
|
||||||
|
<Tooltip>
|
||||||
|
<TooltipTrigger asChild>
|
||||||
|
<Button asChild>
|
||||||
|
<a href="https://git.valverde.cloud"><DiGit /> {t($ => $.gitRepos.title, { ns: "nav" })}</a>
|
||||||
|
</Button>
|
||||||
|
</TooltipTrigger>
|
||||||
|
|
||||||
|
<TooltipContent><p>{t($ => $.gitRepos.tooltip, { ns: "nav" })}</p></TooltipContent>
|
||||||
|
</Tooltip>
|
||||||
|
</TooltipProvider>
|
||||||
|
|
||||||
|
<TooltipProvider>
|
||||||
|
<Tooltip>
|
||||||
|
<TooltipTrigger asChild>
|
||||||
|
<Button asChild>
|
||||||
|
<a href="https://git.valverde.cloud/thilawyn/website"><FaCode /> {t($ => $.sourceCode.title, { ns: "nav" })}</a>
|
||||||
|
</Button>
|
||||||
|
</TooltipTrigger>
|
||||||
|
|
||||||
|
<TooltipContent><p>{t($ => $.sourceCode.tooltip, { ns: "nav" })}</p></TooltipContent>
|
||||||
|
</Tooltip>
|
||||||
|
</TooltipProvider>
|
||||||
|
|
||||||
|
<Button>Resumé</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="window-body">
|
|
||||||
<p>There's so much room for activities!</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</root.div>
|
|
||||||
|
|
||||||
<div className="container mt-10 mr-auto ml-auto flex flex-row items-center justify-center gap-20">
|
|
||||||
<div className="flex flex-row items-center justify-center gap-2">
|
|
||||||
<TooltipProvider>
|
|
||||||
<Tooltip>
|
|
||||||
<TooltipTrigger asChild>
|
|
||||||
<Button asChild>
|
|
||||||
<a href="https://git.valverde.cloud"><DiGit /> {t($ => $.gitRepos.title, { ns: "nav" })}</a>
|
|
||||||
</Button>
|
|
||||||
</TooltipTrigger>
|
|
||||||
|
|
||||||
<TooltipContent><p>{t($ => $.gitRepos.tooltip, { ns: "nav" })}</p></TooltipContent>
|
|
||||||
</Tooltip>
|
|
||||||
</TooltipProvider>
|
|
||||||
|
|
||||||
<TooltipProvider>
|
|
||||||
<Tooltip>
|
|
||||||
<TooltipTrigger asChild>
|
|
||||||
<Button asChild>
|
|
||||||
<a href="https://git.valverde.cloud/thilawyn/website"><FaCode /> {t($ => $.sourceCode.title, { ns: "nav" })}</a>
|
|
||||||
</Button>
|
|
||||||
</TooltipTrigger>
|
|
||||||
|
|
||||||
<TooltipContent><p>{t($ => $.sourceCode.tooltip, { ns: "nav" })}</p></TooltipContent>
|
|
||||||
</Tooltip>
|
|
||||||
</TooltipProvider>
|
|
||||||
|
|
||||||
<Button>Resumé</Button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className="flex flex-row items-center justify-center gap-2">
|
|
||||||
<Button
|
|
||||||
variant={i18n.language !== "en" ? "default" : "noShadow"}
|
|
||||||
onClick={() => i18n.changeLanguage("en")}
|
|
||||||
>
|
|
||||||
🇬🇧 English
|
|
||||||
</Button>
|
|
||||||
|
|
||||||
<Button
|
|
||||||
variant={i18n.language !== "fr" ? "default" : "noShadow"}
|
|
||||||
onClick={() => i18n.changeLanguage("fr")}
|
|
||||||
>
|
|
||||||
🇫🇷 Français
|
|
||||||
</Button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user