mirror of
https://github.com/theoludwig/theoludwig.git
synced 2025-09-11 23:09:22 +02:00
Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
92eca82127
|
|||
4502e32250
|
@@ -28,7 +28,7 @@ The commit message guidelines adheres to [Conventional Commits](https://www.conv
|
|||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
- [Node.js](https://nodejs.org/) >= v24.0.0 [(`nvm install 24`)](https://nvm.sh)
|
- [Node.js](https://nodejs.org/) >= v24.0.0 [(`nvm install 24`)](https://nvm.sh)
|
||||||
- [pnpm](https://pnpm.io/) v10.15.0 [(`npm install --global corepack@0.34.0 && corepack enable`)](https://github.com/nodejs/corepack)
|
- [pnpm](https://pnpm.io/) v10.15.1 [(`npm install --global corepack@0.34.0 && corepack enable`)](https://github.com/nodejs/corepack)
|
||||||
- [Docker](https://www.docker.com/)
|
- [Docker](https://www.docker.com/)
|
||||||
|
|
||||||
### Installation
|
### Installation
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
"version": "0.0.0-develop",
|
"version": "0.0.0-develop",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"packageManager": "pnpm@10.15.0+sha512.486ebc259d3e999a4e8691ce03b5cac4a71cbeca39372a9b762cb500cfdf0873e2cb16abe3d951b1ee2cf012503f027b98b6584e4df22524e0c7450d9ec7aa7b",
|
"packageManager": "pnpm@10.15.1+sha512.34e538c329b5553014ca8e8f4535997f96180a1d0f614339357449935350d924e22f8614682191264ec33d1462ac21561aff97f6bb18065351c162c7e8f6de67",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=24.0.0"
|
"node": ">=24.0.0"
|
||||||
},
|
},
|
||||||
|
@@ -41,6 +41,7 @@
|
|||||||
"institution": "IUT Robert Schuman in Illkirch-Graffenstaden",
|
"institution": "IUT Robert Schuman in Illkirch-Graffenstaden",
|
||||||
"study-type": "University Bachelor of Technology (BUT) Computer Science",
|
"study-type": "University Bachelor of Technology (BUT) Computer Science",
|
||||||
"years": {
|
"years": {
|
||||||
|
"title": "2021 - 2024",
|
||||||
"2021-2022": {
|
"2021-2022": {
|
||||||
"courses": {
|
"courses": {
|
||||||
"java": "Object Oriented Development in Java",
|
"java": "Object Oriented Development in Java",
|
||||||
@@ -98,17 +99,17 @@
|
|||||||
"tasks": {
|
"tasks": {
|
||||||
"WebSurg": "Development of WebSurg, a virtual university dedicated to medical-surgical training, built with React.js/Next.js and API Platform with Symfony.",
|
"WebSurg": "Development of WebSurg, a virtual university dedicated to medical-surgical training, built with React.js/Next.js and API Platform with Symfony.",
|
||||||
"Figma": "Integration of Figma mockups for WebSurg, website dedicated to medical-surgical training.",
|
"Figma": "Integration of Figma mockups for WebSurg, website dedicated to medical-surgical training.",
|
||||||
"IRCAD-Core": "IRCAD Core, an internal tool for managing medical training sessions and their requirements (anatomicals models, medications, staff training, etc.).",
|
"IRCAD-Core": "IRCAD Core, an internal tool for managing medical training sessions and their requirements (anatomical models, medications, staff training, etc.).",
|
||||||
"feature-logs": "History and traceability of data modifications (what? who? when?) in IRCAD Core.",
|
"feature-logs": "History and traceability of data modifications (what? who? when?) in IRCAD Core.",
|
||||||
"feature-permissions": "Advanced permissions system and OAuth2 authentication, with read, write, and delete access restricted for specific users of the IRCAD Core application.",
|
"feature-permissions": "Advanced permissions system and OAuth2 authentication, with read, write, and delete access restricted for specific users of the IRCAD Core application.",
|
||||||
"feature-search": "Search engine with filters, sorting, and customizable display for each user of IRCAD Core.",
|
"feature-search": "Search engine with filters, sorting, and customizable display for each user of IRCAD Core.",
|
||||||
"feature-architecture": "IRCAD Core project architecture in TypeScript Monorepo with Turborepo, and automatic deployment (CI/CD) with Docker Compose, self-hosted internally."
|
"feature-architecture": "IRCAD Core project architecture in TypeScript Monorepo with Turborepo, automatic deployment (CI/CD) and self-hosted internally with Docker Compose."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"numerize": {
|
"numerize": {
|
||||||
"duration": "3 months",
|
"duration": "3 months",
|
||||||
"position": "Full Stack Web Developer Intern",
|
"position": "Full Stack Web Developer Intern",
|
||||||
"summary": "Development of an DMS (Document Management System) tool in React.js, Laravel and GraphQL."
|
"summary": "Development of a DMS (Document Management System) tool in React.js, Laravel and GraphQL."
|
||||||
},
|
},
|
||||||
"title": "Work experiences"
|
"title": "Work experiences"
|
||||||
}
|
}
|
||||||
|
@@ -41,6 +41,7 @@
|
|||||||
"institution": "IUT Robert Schuman à Illkirch-Graffenstaden",
|
"institution": "IUT Robert Schuman à Illkirch-Graffenstaden",
|
||||||
"study-type": "Bachelor Universitaire de Technologie (BUT) Informatique",
|
"study-type": "Bachelor Universitaire de Technologie (BUT) Informatique",
|
||||||
"years": {
|
"years": {
|
||||||
|
"title": "2021 - 2024",
|
||||||
"2021-2022": {
|
"2021-2022": {
|
||||||
"courses": {
|
"courses": {
|
||||||
"java": "Développement Orientée Objet en Java",
|
"java": "Développement Orientée Objet en Java",
|
||||||
@@ -102,7 +103,7 @@
|
|||||||
"feature-logs": "Historique et traçabilité des modifications des données (quoi? qui? quand?) dans IRCAD Core.",
|
"feature-logs": "Historique et traçabilité des modifications des données (quoi? qui? quand?) dans IRCAD Core.",
|
||||||
"feature-permissions": "Système de permissions avancé et authentification OAuth2, avec accès en lecture, écriture et suppression restreint pour des utilisateurs spécifiques de l'application IRCAD Core.",
|
"feature-permissions": "Système de permissions avancé et authentification OAuth2, avec accès en lecture, écriture et suppression restreint pour des utilisateurs spécifiques de l'application IRCAD Core.",
|
||||||
"feature-search": "Moteur de recherche avec filtres, tris et ordre d'affichage personnalisable pour IRCAD Core.",
|
"feature-search": "Moteur de recherche avec filtres, tris et ordre d'affichage personnalisable pour IRCAD Core.",
|
||||||
"feature-architecture": "Architecture du projet IRCAD Core en Monorepo TypeScript avec Turborepo, et déploiement automatique (CI/CD) avec Docker Compose, auto-hébergé en interne."
|
"feature-architecture": "Architecture du projet IRCAD Core en Monorepo TypeScript avec Turborepo, déploiement automatique (CI/CD) et hébergé en interne avec Docker Compose."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"numerize": {
|
"numerize": {
|
||||||
|
@@ -14,50 +14,55 @@ export const CurriculumVitaeEducation: React.FC<
|
|||||||
years: t("curriculum-vitae.education.cnam.years.2024-2027.title"),
|
years: t("curriculum-vitae.education.cnam.years.2024-2027.title"),
|
||||||
studyType: t("curriculum-vitae.education.cnam.study-type"),
|
studyType: t("curriculum-vitae.education.cnam.study-type"),
|
||||||
institution: t("curriculum-vitae.education.cnam.institution"),
|
institution: t("curriculum-vitae.education.cnam.institution"),
|
||||||
score: t("curriculum-vitae.education.cnam.years.2024-2027.description"),
|
// score: t("curriculum-vitae.education.cnam.years.2024-2027.description"),
|
||||||
courses: [],
|
courses: [],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
years: t("curriculum-vitae.education.iut.years.2023-2024.title"),
|
years: t("curriculum-vitae.education.iut.years.title"),
|
||||||
studyType: t("curriculum-vitae.education.iut.study-type"),
|
studyType: t("curriculum-vitae.education.iut.study-type"),
|
||||||
institution: t("curriculum-vitae.education.iut.institution"),
|
institution: t("curriculum-vitae.education.iut.institution"),
|
||||||
score: t("curriculum-vitae.education.iut.years.2023-2024.description"),
|
|
||||||
courses: [
|
courses: [
|
||||||
t("curriculum-vitae.education.iut.years.2023-2024.courses.web"),
|
{
|
||||||
t("curriculum-vitae.education.iut.years.2023-2024.courses.ci-cd"),
|
year: t("curriculum-vitae.education.iut.years.2021-2022.description"),
|
||||||
t(
|
title: t("curriculum-vitae.education.iut.years.2021-2022.title"),
|
||||||
"curriculum-vitae.education.iut.years.2023-2024.courses.complexity-algorithms",
|
courses: [
|
||||||
),
|
t("curriculum-vitae.education.iut.years.2021-2022.courses.java"),
|
||||||
t("curriculum-vitae.education.iut.years.2023-2024.courses.no-sql"),
|
t(
|
||||||
],
|
"curriculum-vitae.education.iut.years.2021-2022.courses.systems-c",
|
||||||
},
|
),
|
||||||
{
|
// t(
|
||||||
years: t("curriculum-vitae.education.iut.years.2022-2023.title"),
|
// "curriculum-vitae.education.iut.years.2021-2022.courses.windows-forms",
|
||||||
studyType: t("curriculum-vitae.education.iut.study-type"),
|
// ),
|
||||||
institution: t("curriculum-vitae.education.iut.institution"),
|
t("curriculum-vitae.education.iut.years.2021-2022.courses.sql"),
|
||||||
score: t("curriculum-vitae.education.iut.years.2022-2023.description"),
|
],
|
||||||
courses: [
|
},
|
||||||
t("curriculum-vitae.education.iut.years.2022-2023.courses.web"),
|
{
|
||||||
t("curriculum-vitae.education.iut.years.2022-2023.courses.tests"),
|
year: t("curriculum-vitae.education.iut.years.2022-2023.description"),
|
||||||
t("curriculum-vitae.education.iut.years.2022-2023.courses.clean-code"),
|
title: t("curriculum-vitae.education.iut.years.2022-2023.title"),
|
||||||
t("curriculum-vitae.education.iut.years.2022-2023.courses.systems-c"),
|
courses: [
|
||||||
// t(
|
t("curriculum-vitae.education.iut.years.2022-2023.courses.web"),
|
||||||
// "curriculum-vitae.education.iut.years.2022-2023.courses.sql-security",
|
t("curriculum-vitae.education.iut.years.2022-2023.courses.tests"),
|
||||||
// ),
|
t(
|
||||||
],
|
"curriculum-vitae.education.iut.years.2022-2023.courses.clean-code",
|
||||||
},
|
),
|
||||||
{
|
// t("curriculum-vitae.education.iut.years.2022-2023.courses.sql-security"),
|
||||||
years: t("curriculum-vitae.education.iut.years.2021-2022.title"),
|
t(
|
||||||
studyType: t("curriculum-vitae.education.iut.study-type"),
|
"curriculum-vitae.education.iut.years.2022-2023.courses.systems-c",
|
||||||
institution: t("curriculum-vitae.education.iut.institution"),
|
),
|
||||||
score: t("curriculum-vitae.education.iut.years.2021-2022.description"),
|
],
|
||||||
courses: [
|
},
|
||||||
t("curriculum-vitae.education.iut.years.2021-2022.courses.java"),
|
{
|
||||||
t("curriculum-vitae.education.iut.years.2021-2022.courses.systems-c"),
|
year: t("curriculum-vitae.education.iut.years.2023-2024.description"),
|
||||||
// t(
|
title: t("curriculum-vitae.education.iut.years.2023-2024.title"),
|
||||||
// "curriculum-vitae.education.iut.years.2021-2022.courses.windows-forms",
|
courses: [
|
||||||
// ),
|
t("curriculum-vitae.education.iut.years.2023-2024.courses.web"),
|
||||||
t("curriculum-vitae.education.iut.years.2021-2022.courses.sql"),
|
t("curriculum-vitae.education.iut.years.2023-2024.courses.ci-cd"),
|
||||||
|
t(
|
||||||
|
"curriculum-vitae.education.iut.years.2023-2024.courses.complexity-algorithms",
|
||||||
|
),
|
||||||
|
t("curriculum-vitae.education.iut.years.2023-2024.courses.no-sql"),
|
||||||
|
],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
@@ -83,9 +88,13 @@ export const CurriculumVitaeEducation: React.FC<
|
|||||||
<strong>{education.studyType}</strong>
|
<strong>{education.studyType}</strong>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p className="relative m-0">
|
{/* {education.score != null ? (
|
||||||
<strong>{education.score}</strong>
|
<p className="relative m-0">
|
||||||
</p>
|
<strong>{education.score}</strong>
|
||||||
|
</p>
|
||||||
|
) : (
|
||||||
|
<></>
|
||||||
|
)} */}
|
||||||
|
|
||||||
<p className="text-muted m-0">{education.institution}</p>
|
<p className="text-muted m-0">{education.institution}</p>
|
||||||
|
|
||||||
@@ -94,13 +103,23 @@ export const CurriculumVitaeEducation: React.FC<
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
{education.courses.length > 0 ? (
|
{education.courses.length > 0 ? (
|
||||||
<ul
|
<ul className="list-none">
|
||||||
style={{
|
{education.courses.map(({ year, title, courses }) => {
|
||||||
paddingInlineStart: 20,
|
return (
|
||||||
}}
|
<li key={year}>
|
||||||
>
|
<span className="font-medium">{year}</span>
|
||||||
{education.courses.map((course) => {
|
<span> ({title})</span>
|
||||||
return <li key={course}>{course}</li>
|
<ul
|
||||||
|
style={{
|
||||||
|
paddingInlineStart: 20,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{courses.map((course) => {
|
||||||
|
return <li key={course}>{course}</li>
|
||||||
|
})}
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
)
|
||||||
})}
|
})}
|
||||||
</ul>
|
</ul>
|
||||||
) : (
|
) : (
|
||||||
|
1879
pnpm-lock.yaml
generated
1879
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -12,14 +12,14 @@ catalog:
|
|||||||
# TypeScript
|
# TypeScript
|
||||||
"typescript": "5.9.2"
|
"typescript": "5.9.2"
|
||||||
"@total-typescript/ts-reset": "0.6.1"
|
"@total-typescript/ts-reset": "0.6.1"
|
||||||
"@types/node": "24.3.0"
|
"@types/node": "24.3.1"
|
||||||
|
|
||||||
# Utils
|
# Utils
|
||||||
"mime": "4.0.7"
|
"mime": "4.0.7"
|
||||||
|
|
||||||
# React.js/Next.js
|
# React.js/Next.js
|
||||||
"next": &next "15.5.2"
|
"next": &next "15.5.2"
|
||||||
"next-intl": "4.3.5"
|
"next-intl": "4.3.7"
|
||||||
"next-themes": "0.4.6"
|
"next-themes": "0.4.6"
|
||||||
"react": "19.1.1"
|
"react": "19.1.1"
|
||||||
"react-dom": "19.1.1"
|
"react-dom": "19.1.1"
|
||||||
@@ -48,11 +48,11 @@ catalog:
|
|||||||
|
|
||||||
# ESLint
|
# ESLint
|
||||||
"globals": "16.3.0"
|
"globals": "16.3.0"
|
||||||
"typescript-eslint": "8.41.0"
|
"typescript-eslint": "8.43.0"
|
||||||
"eslint": "9.34.0"
|
"eslint": "9.35.0"
|
||||||
"eslint-config-conventions": "20.1.3"
|
"eslint-config-conventions": "20.2.0"
|
||||||
"eslint-plugin-promise": "7.2.1"
|
"eslint-plugin-promise": "7.2.1"
|
||||||
"eslint-plugin-unicorn": "60.0.0"
|
"eslint-plugin-unicorn": "61.0.2"
|
||||||
"eslint-plugin-import-x": "4.16.1"
|
"eslint-plugin-import-x": "4.16.1"
|
||||||
"@next/eslint-plugin-next": *next
|
"@next/eslint-plugin-next": *next
|
||||||
"eslint-plugin-react": "7.37.5"
|
"eslint-plugin-react": "7.37.5"
|
||||||
@@ -64,7 +64,7 @@ catalog:
|
|||||||
"editorconfig-checker": "6.1.0"
|
"editorconfig-checker": "6.1.0"
|
||||||
|
|
||||||
# Storybook
|
# Storybook
|
||||||
"storybook": &storybook "9.1.3"
|
"storybook": &storybook "9.1.5"
|
||||||
"@storybook/addon-docs": *storybook
|
"@storybook/addon-docs": *storybook
|
||||||
"@storybook/addon-a11y": *storybook
|
"@storybook/addon-a11y": *storybook
|
||||||
"@storybook/nextjs": *storybook
|
"@storybook/nextjs": *storybook
|
||||||
@@ -76,17 +76,17 @@ catalog:
|
|||||||
# Testing
|
# Testing
|
||||||
"playwright": &playwright "1.55.0"
|
"playwright": &playwright "1.55.0"
|
||||||
"@playwright/test": *playwright
|
"@playwright/test": *playwright
|
||||||
"start-server-and-test": "2.0.13"
|
"start-server-and-test": "2.1.0"
|
||||||
|
|
||||||
# CSS
|
# CSS
|
||||||
"postcss": "8.5.6"
|
"postcss": "8.5.6"
|
||||||
"@tailwindcss/postcss": "4.1.12"
|
"@tailwindcss/postcss": "4.1.13"
|
||||||
"@tailwindcss/typography": "0.5.16"
|
"@tailwindcss/typography": "0.5.16"
|
||||||
"tailwindcss": "4.1.12"
|
"tailwindcss": "4.1.13"
|
||||||
"tailwind-merge": "3.3.1"
|
"tailwind-merge": "3.3.1"
|
||||||
"clsx": "2.1.1"
|
"clsx": "2.1.1"
|
||||||
"cva": "1.0.0-beta.4"
|
"cva": "1.0.0-beta.4"
|
||||||
"@fontsource/montserrat": "5.2.6"
|
"@fontsource/montserrat": "5.2.7"
|
||||||
|
|
||||||
onlyBuiltDependencies:
|
onlyBuiltDependencies:
|
||||||
- "@swc/core"
|
- "@swc/core"
|
||||||
|
Reference in New Issue
Block a user