diff --git a/README.md b/README.md index 81c4f6a..ff68a0f 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@

Théo LUDWIG

- Developer Full Stack • Open-Source enthusiast + Developer Full Stack • Open-Source Enthusiast

@@ -25,10 +25,10 @@ "pronouns": "He/Him", "birthDate": "31/03/2003", "nationality": "Alsace, France", - "interests": ["Developer Full Stack", "Open-Source enthusiast"], + "interests": ["Developer Full Stack", "Open-Source Enthusiast"], "skills": { "programmingLanguages": ["JavaScript/TypeScript", "Python", "C/C++", "PHP"], - "frontend": ["HTML", "CSS", "Tailwind CSS", "React.js/Next.js"], + "frontend": ["HTML/CSS", "Tailwind CSS", "React.js/Next.js"], "backend": ["Laravel", "Node.js", "Fastify", "PostgreSQL"], "tools": ["GNU/Linux", "Arch Linux", "Visual Studio Code", "Git", "Docker"] } diff --git a/app/globals.css b/app/globals.css index 1bb9b6a..54b8596 100644 --- a/app/globals.css +++ b/app/globals.css @@ -7,6 +7,10 @@ word-break: break-word; } +.text-base { + line-height: 1.75rem; +} + .prose { @apply !max-w-5xl scroll-smooth text-gray dark:text-gray-300; } @@ -28,6 +32,11 @@ @apply text-yellow dark:text-yellow-dark; } +strong, +b { + @apply font-bold; +} + .prose h2, .prose h3, .prose h4, diff --git a/app/layout.tsx b/app/layout.tsx index 7006f1b..2e47120 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -12,7 +12,7 @@ import { getTheme } from "@/theme/theme.server" const title = "Théo LUDWIG" const description = - "Théo LUDWIG - Developer Full Stack • Open-Source enthusiast" + "Théo LUDWIG - Developer Full Stack • Open-Source Enthusiast" const image = "/images/icon-96x96.png" const url = new URL("https://theoludwig.fr") const locale = "fr-FR, en-US" diff --git a/components/Interests/InterestParagraph.tsx b/components/Interests/InterestParagraph.tsx index a57f6d7..5cc0830 100644 --- a/components/Interests/InterestParagraph.tsx +++ b/components/Interests/InterestParagraph.tsx @@ -1,8 +1,17 @@ import htmlParser from "html-react-parser" +import { faCode, faMicrochip } from "@fortawesome/free-solid-svg-icons" +import { faGit } from "@fortawesome/free-brands-svg-icons" + +export const InterestsIcons = { + code: faCode, + "open-source": faGit, + "high-tech": faMicrochip, +} as const export interface InterestParagraphProps { title: string description: string + id: keyof typeof InterestsIcons } export const InterestParagraph = ( diff --git a/components/Interests/InterestsList/index.tsx b/components/Interests/InterestsList/index.tsx index aa99e0f..7fd673d 100644 --- a/components/Interests/InterestsList/index.tsx +++ b/components/Interests/InterestsList/index.tsx @@ -1,18 +1,28 @@ -import { faCode, faMicrochip } from "@fortawesome/free-solid-svg-icons" -import { faGit } from "@fortawesome/free-brands-svg-icons" +import { getI18n } from "@/i18n/i18n.server" +import { + InterestsIcons, + type InterestParagraphProps, +} from "../InterestParagraph" import { InterestItem } from "./InterestItem" export const InterestsList = (): JSX.Element => { + const i18n = getI18n() + + let paragraphs = i18n.translate( + "home.interests.paragraphs", + ) + if (!Array.isArray(paragraphs)) { + paragraphs = [] + } + return (

) diff --git a/components/Portfolio/PortfolioItem.tsx b/components/Portfolio/PortfolioItem.tsx index 8cc87ba..b392b80 100644 --- a/components/Portfolio/PortfolioItem.tsx +++ b/components/Portfolio/PortfolioItem.tsx @@ -35,7 +35,7 @@ export const PortfolioItem = (props: PortfolioItemProps): JSX.Element => {

{title}

-

{description}

+

{description}

diff --git a/components/Profile/ProfileDescriptionBottom.tsx b/components/Profile/ProfileDescriptionBottom.tsx index 57177f5..a06892f 100644 --- a/components/Profile/ProfileDescriptionBottom.tsx +++ b/components/Profile/ProfileDescriptionBottom.tsx @@ -1,23 +1,21 @@ +import htmlParser from "html-react-parser" + import { getI18n } from "@/i18n/i18n.server" export const ProfileDescriptionBottom = (): JSX.Element => { const i18n = getI18n() return ( -

- {i18n.translate("home.about.description-bottom")} - {i18n.locale === "fr-FR" ? ( - <> -
-
- - Curriculum vitæ - - - ) : null} -

+
+

{htmlParser(i18n.translate("home.about.description-bottom"))}

+ +
+ + Curriculum vitæ ({i18n.translate("common.fr-FR")}) + +
) } diff --git a/curriculum-vitae/curriculum-vitae.jsonc b/curriculum-vitae/curriculum-vitae.jsonc index f4c5e54..c40969b 100644 --- a/curriculum-vitae/curriculum-vitae.jsonc +++ b/curriculum-vitae/curriculum-vitae.jsonc @@ -7,10 +7,10 @@ "email": "contact@theoludwig.fr", "age": "31/03/2003", "location": { - "address": "Alsace, France" + "address": "Alsace, France", }, "url": "https://theoludwig.fr", - "summary": "Je suis étudiant à l'université suivant la formation \"BUT Informatique\" et me forme en autodidacte dans l'informatique en suivant des formations en ligne.
Je mets en pratique tout ce que j'apprends et réalise de nombreux projets (disponible sur theoludwig.fr)." + "summary": "Je me demande constamment comment améliorer notre présent, afin de rendre notre futur meilleur, particulièrement grâce aux progrès de l'informatique.
Ma priorité réside dans la création d'expériences utilisateurs (UX) intuitives, répondant aux besoins des utilisateurs de la manière la plus efficace que possible.", }, "education": [ { @@ -24,8 +24,8 @@ "Intégration/Déploiement Continue et Docker", "Complexité Algorithmique Théorique et Pratique en C++", // "Projet développement LLM (Large Language Model) et NLP (Natural Language Processing)", - "Base de données NoSQL (Redis, MongoDB, Cassandra)" - ] + "Base de données NoSQL (Redis, MongoDB, Cassandra)", + ], }, { "startDate": "2022", @@ -38,8 +38,8 @@ "Qualité de développement et Tests automatisés", "Patrons et Principes de conceptions (Code maintenable et réutilisable) en UML", "Programmation systèmes en C (Multi-Thread, Serveur/Client UDP/TCP)", - "Sécurisation des accès à la base de données et PL/SQL" - ] + "Sécurisation des accès à la base de données et PL/SQL", + ], }, { "startDate": "2021", @@ -51,16 +51,16 @@ "Développement Orientée Objet en Java", "Programmation systèmes en C (Allocation mémoire, Pointeurs, Structures)", "Développement d'application Windows Forms (.NET Framework) en C#", - "Base de données relationnelles et langage SQL" - ] + "Base de données relationnelles et langage SQL", + ], }, { "startDate": "2019", "endDate": "2021", "studyType": "Baccalauréat Général (Mathématiques et Numériques Sciences Informatiques)", "institution": "Lycée Heinrich Nessel à Haguenau", - "score": "Mention Assez Bien" - } + "score": "Mention Assez Bien", + }, // { // "startDate": "2014", // "endDate": "2018", @@ -78,7 +78,7 @@ "position": "Alternant Développeur Web Full Stack", "startDate": "2023-08-28", "endDate": "2024-09-02", - "duration": "1 an" + "duration": "1 an", }, { "summary": "Développement d'un outil GED (Gestion Électronique de Documents) en React.js, Laravel et GraphQL.", @@ -88,7 +88,7 @@ "position": "Stagiaire Développeur Web Full Stack", "startDate": "2023-04-11", "endDate": "2023-07-26", - "duration": "4 mois" + "duration": "4 mois", }, // { // "summary": "Agent administratif - Numérisation et archivage des plans électriques initialement sous format papier calque.", @@ -108,7 +108,7 @@ "position": "Stage initiation métier développeur web", "startDate": "2019-06-17", "endDate": "2019-06-21", - "duration": "1 semaine" + "duration": "1 semaine", }, { "description": "interests", @@ -118,7 +118,7 @@ "position": "Participation en équipe de 5 personnes", "startDate": "2021-12-02", "endDate": "2021-12-03", - "duration": "1 semaine" + "duration": "1 semaine", }, { "description": "interests", @@ -129,8 +129,8 @@ "position": "Initiation métier Développeur web", "startDate": "2019-06-24", "endDate": "2019-06-28", - "duration": "1 semaine" - } + "duration": "1 semaine", + }, // { // "summary": "Apprentissage du métier \"Chargé de communication\" et des logiciels de graphisme tels que \"Adobe Photoshop\".", // "website": "https://es.fr/", @@ -144,24 +144,24 @@ ], "interests": [ { - "name": "Enthousiaste de l'Open-Source" + "name": "Enthousiaste de l'Open-Source", }, { - "name": "Passionné de High-Tech" - } + "name": "Passionné de High-Tech", + }, ], "skills": [ { "keywords": ["JavaScript/TypeScript", "Python", "C/C++", "PHP"], - "name": "Langages de programmation" + "name": "Langages de programmation", }, { "keywords": ["HTML", "CSS", "Tailwind CSS", "React.js/Next.js"], - "name": "Frontend" + "name": "Frontend", }, { "keywords": ["Laravel", "Node.js", "Fastify", "PostgreSQL"], - "name": "Backend" + "name": "Backend", }, { "keywords": [ @@ -169,13 +169,13 @@ "Arch Linux", "Visual Studio Code", "Git", - "Docker" + "Docker", ], - "name": "Logiciels et outils" + "name": "Logiciels et outils", }, { "keywords": ["Permis B", "Anglais"], - "name": "Autres" - } - ] + "name": "Autres", + }, + ], } diff --git a/i18n/translations/en-US/home.json b/i18n/translations/en-US/home.json index dab345d..993cff6 100644 --- a/i18n/translations/en-US/home.json +++ b/i18n/translations/en-US/home.json @@ -1,27 +1,25 @@ { "about": { - "description": "Developer Full Stack • Open-Source enthusiast", + "description": "Developer Full Stack • Open-Source Enthusiast", "pronouns": "Pronouns", "pronouns-value": "He/Him", "birth-date": "Birth date", "years-old": "years old", "nationality": "Nationality", - "description-bottom": "I am a student in computer science following the French training \"BUT Informatique\" and I am also a self-taught." + "description-bottom": "I wonder constantly how to improve our present, to make our future better, particularly in the advancements in computer science." }, "interests": { "title": "Interests", "paragraphs": [ { "title": "Developer Full Stack", - "description": "Computer programming is my main hobby, I love it!
Mostly web development for the moment but I'm programming in others programming language too." + "description": "My priority is to craft intuitive user experiences (UX), that meet the needs of the users in the most efficient way possible.
Mainly focused on the development of Web Development solutions.
I am also interested in mobile application development among other areas within the field of computer science.", + "id": "code" }, { - "title": "Open-Source enthusiast", - "description": "For me, everyone should work, solve problems, build things and think together.
The website is open-source on GitHub." - }, - { - "title": "Passionate about High-Tech", - "description": "I always wondered how the future would be. Every day I want to wake up and think that the future will be great and better than the past. Technologies improve gradually over time, which is very useful in many areas." + "title": "Open-Source Enthusiast", + "description": "I value the sharing of knowledge and collaboration to collectively resolve problems.
The source of the website is available on GitHub.", + "id": "open-source" } ] }, diff --git a/i18n/translations/fr-FR/home.json b/i18n/translations/fr-FR/home.json index 737222e..9278879 100644 --- a/i18n/translations/fr-FR/home.json +++ b/i18n/translations/fr-FR/home.json @@ -6,22 +6,20 @@ "birth-date": "Date de naissance", "years-old": "ans", "nationality": "Nationalité", - "description-bottom": "Je suis étudiant à l'université suivant la formation \"BUT Informatique\" et me forme en autodidacte dans l'informatique en suivant des formations en ligne." + "description-bottom": "Je me demande constamment comment améliorer notre présent, afin de rendre notre futur meilleur, particulièrement grâce aux progrès de l'informatique." }, "interests": { "title": "Intérêts", "paragraphs": [ { "title": "Développeur Full Stack", - "description": "La programmation informatique est mon loisir principal, j'adore!
Principalement du développement Web pour le moment, mais je programme aussi dans d'autres langages de programmation." + "description": "Ma priorité réside dans la création d'expériences utilisateurs (UX) intuitives, répondant aux besoins des utilisateurs de la manière la plus efficace que possible.
Principalement axé sur l'élaboration de solutions en Développement Web.
Je suis également intéressé par le développement d'applications mobiles parmis d'autres domaines de l'informatique.", + "id": "code" }, { "title": "Enthousiaste de l'Open-Source", - "description": "Pour moi, tout le monde devrait travailler, résoudre des problèmes, construire des choses et réfléchir ensemble.
Le site est open-source sur GitHub." - }, - { - "title": "Passionné de High-Tech", - "description": "Je me suis toujours demandé comment l'avenir serait. Chaque jour, je veux me réveiller et penser que l'avenir sera formidable et meilleur que le passé. Les technolgies s'améliorent progressivement avec le temps, ce qui est très utile dans de nombreux domaines." + "description": "J'apprécie le partage des connaissances et la collaboration pour résoudre des défis collectivement.
Le code source du site est accessible sur GitHub.", + "id": "open-source" } ] },