mirror of
				https://github.com/theoludwig/theoludwig.git
				synced 2025-11-01 00:18:43 +01:00 
			
		
		
		
	fix: add more details to tasks in Work experiences
This commit is contained in:
		| @@ -87,14 +87,23 @@ | ||||
|       "title": "Studies" | ||||
|     }, | ||||
|     "interests": { | ||||
|       "fusey": "<link>Fusey (fusey.gg)</link>: website I'm developing for the game ARK that tracks the number of players connected to the servers in real time and has over ~5,000 visitors each month, ~100,000 members on Discord, and ~120,000 followers on X/Twitter.", | ||||
|       "title": "Interests & hobbies", | ||||
|       "fusey": "<link>Fusey (fusey.gg)</link>: website I'm developing for the game ARK that tracks the number of players connected to the servers in real time and has <strong>over ~5,000 visitors each month, ~100,000 members on Discord, and ~120,000 followers on X/Twitter</strong>.", | ||||
|       "open-source": "Open-Source Enthusiast" | ||||
|     }, | ||||
|     "work": { | ||||
|       "ircad": { | ||||
|         "duration": "4 years", | ||||
|         "position": "Full Stack Web Developer Apprentice", | ||||
|         "summary": "Development of WebSurg, a virtual university dedicated to medical-surgical training, in React.js/Next.js and API Platform with Symfony." | ||||
|         "tasks": { | ||||
|           "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.", | ||||
|           "IRCAD-Core": "IRCAD Core, an internal tool for managing medical training sessions and their requirements (anatomicals models, medications, staff training, etc.).", | ||||
|           "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-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." | ||||
|         } | ||||
|       }, | ||||
|       "numerize": { | ||||
|         "duration": "3 months", | ||||
|   | ||||
| @@ -87,14 +87,23 @@ | ||||
|       "title": "Études" | ||||
|     }, | ||||
|     "interests": { | ||||
|       "fusey": "<link>Fusey (fusey.gg)</link> : site web que je développe pour le jeu ARK qui permet de suivre en temps réel le nombre de joueurs connectés sur les serveurs et a plus de ~5 000 visiteurs chaque mois, ~100 000 membres sur Discord et ~120 000 followers sur X/Twitter.", | ||||
|       "title": "Intérêts & loisirs", | ||||
|       "fusey": "<link>Fusey (fusey.gg)</link> : site web que je développe pour le jeu ARK qui permet de suivre en temps réel le nombre de joueurs connectés sur les serveurs et a plus de <strong>~5 000 visiteurs chaque mois, ~100 000 membres sur Discord et ~120 000 followers sur X/Twitter</strong>.", | ||||
|       "open-source": "Enthousiaste de l'Open-Source" | ||||
|     }, | ||||
|     "work": { | ||||
|       "ircad": { | ||||
|         "duration": "4 ans", | ||||
|         "position": "Apprenti Développeur Web Full Stack", | ||||
|         "summary": "Développement de WebSurg, une université virtuelle consacrée à la formation médico-chirurgicale, en React.js/Next.js et API Platform avec Symfony." | ||||
|         "tasks": { | ||||
|           "WebSurg": "Développement de WebSurg, une université virtuelle consacrée à la formation médico-chirurgicale, en React.js/Next.js et API Platform avec Symfony.", | ||||
|           "Figma": "Intégration des maquettes Figma pour WebSurg, site web consacrée à la formation médico-chirurgicale.", | ||||
|           "IRCAD-Core": "IRCAD Core, outil interne de gestion des formations médicales et leurs besoins (modèles anatomiques, médicaments, formations du personnel, etc.).", | ||||
|           "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-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." | ||||
|         } | ||||
|       }, | ||||
|       "numerize": { | ||||
|         "duration": "3 mois", | ||||
|   | ||||
| @@ -41,9 +41,9 @@ export const CurriculumVitaeEducation: React.FC< | ||||
|         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.systems-c"), | ||||
|         t( | ||||
|           "curriculum-vitae.education.iut.years.2022-2023.courses.sql-security", | ||||
|         ), | ||||
|         // t( | ||||
|         //   "curriculum-vitae.education.iut.years.2022-2023.courses.sql-security", | ||||
|         // ), | ||||
|       ], | ||||
|     }, | ||||
|     { | ||||
| @@ -54,19 +54,19 @@ export const CurriculumVitaeEducation: React.FC< | ||||
|       courses: [ | ||||
|         t("curriculum-vitae.education.iut.years.2021-2022.courses.java"), | ||||
|         t("curriculum-vitae.education.iut.years.2021-2022.courses.systems-c"), | ||||
|         t( | ||||
|           "curriculum-vitae.education.iut.years.2021-2022.courses.windows-forms", | ||||
|         ), | ||||
|         // t( | ||||
|         //   "curriculum-vitae.education.iut.years.2021-2022.courses.windows-forms", | ||||
|         // ), | ||||
|         t("curriculum-vitae.education.iut.years.2021-2022.courses.sql"), | ||||
|       ], | ||||
|     }, | ||||
|     { | ||||
|       years: t("curriculum-vitae.education.lycee.years.2019-2021.title"), | ||||
|       studyType: t("curriculum-vitae.education.lycee.study-type"), | ||||
|       institution: t("curriculum-vitae.education.lycee.institution"), | ||||
|       score: t("curriculum-vitae.education.lycee.score"), | ||||
|       courses: [], | ||||
|     }, | ||||
|     // { | ||||
|     //   years: t("curriculum-vitae.education.lycee.years.2019-2021.title"), | ||||
|     //   studyType: t("curriculum-vitae.education.lycee.study-type"), | ||||
|     //   institution: t("curriculum-vitae.education.lycee.institution"), | ||||
|     //   score: t("curriculum-vitae.education.lycee.score"), | ||||
|     //   courses: [], | ||||
|     // }, | ||||
|   ] | ||||
|  | ||||
|   return ( | ||||
| @@ -79,35 +79,33 @@ export const CurriculumVitaeEducation: React.FC< | ||||
|         {educations.map((education) => { | ||||
|           return ( | ||||
|             <li key={education.years} className="card card-nested"> | ||||
|               <div className="content"> | ||||
|                 <p className="relative m-0"> | ||||
|                   <strong>{education.studyType}</strong> | ||||
|                 </p> | ||||
|               <p className="relative m-0"> | ||||
|                 <strong>{education.studyType}</strong> | ||||
|               </p> | ||||
|  | ||||
|                 <p className="relative m-0"> | ||||
|                   <strong>{education.score}</strong> | ||||
|                 </p> | ||||
|               <p className="relative m-0"> | ||||
|                 <strong>{education.score}</strong> | ||||
|               </p> | ||||
|  | ||||
|                 <p className="text-muted m-0">{education.institution}</p> | ||||
|               <p className="text-muted m-0">{education.institution}</p> | ||||
|  | ||||
|                 <p className="text-muted m-0"> | ||||
|                   <small>{education.years}</small> | ||||
|                 </p> | ||||
|               <p className="text-muted m-0"> | ||||
|                 <small>{education.years}</small> | ||||
|               </p> | ||||
|  | ||||
|                 {education.courses.length > 0 ? ( | ||||
|                   <ul | ||||
|                     style={{ | ||||
|                       paddingInlineStart: 20, | ||||
|                     }} | ||||
|                   > | ||||
|                     {education.courses.map((course) => { | ||||
|                       return <li key={course}>{course}</li> | ||||
|                     })} | ||||
|                   </ul> | ||||
|                 ) : ( | ||||
|                   <></> | ||||
|                 )} | ||||
|               </div> | ||||
|               {education.courses.length > 0 ? ( | ||||
|                 <ul | ||||
|                   style={{ | ||||
|                     paddingInlineStart: 20, | ||||
|                   }} | ||||
|                 > | ||||
|                   {education.courses.map((course) => { | ||||
|                     return <li key={course}>{course}</li> | ||||
|                   })} | ||||
|                 </ul> | ||||
|               ) : ( | ||||
|                 <></> | ||||
|               )} | ||||
|             </li> | ||||
|           ) | ||||
|         })} | ||||
|   | ||||
| @@ -10,31 +10,34 @@ export const CurriculumVitaeInterests: React.FC< | ||||
|   const t = useTranslations() | ||||
|  | ||||
|   const interests = [ | ||||
|     t("curriculum-vitae.interests.open-source"), | ||||
|     <strong key="open-source"> | ||||
|       {t("curriculum-vitae.interests.open-source")} | ||||
|     </strong>, | ||||
|     t.rich("curriculum-vitae.interests.fusey", { | ||||
|       link: (children) => { | ||||
|         return ( | ||||
|           <a href="https://fusey.gg" target="_blank"> | ||||
|           <a href="https://fusey.gg" target="_blank" className="font-semibold"> | ||||
|             {children} | ||||
|           </a> | ||||
|         ) | ||||
|       }, | ||||
|       strong: (children) => { | ||||
|         return <strong>{children}</strong> | ||||
|       }, | ||||
|     }), | ||||
|   ] | ||||
|  | ||||
|   return ( | ||||
|     <CurriculumVitaeSection | ||||
|       id="interests" | ||||
|       title={t("home.interests.title")} | ||||
|       title={t("curriculum-vitae.interests.title")} | ||||
|       icon={<FaHeart size={24} />} | ||||
|     > | ||||
|       <ul className="list-unstyled m-0"> | ||||
|         {interests.map((interest, index) => { | ||||
|           return ( | ||||
|             <li key={index} className="card card-nested"> | ||||
|               <p> | ||||
|                 <strong>{interest}</strong> | ||||
|               </p> | ||||
|             <li key={index} className="card card-nested max-w-2xl"> | ||||
|               <p>{interest}</p> | ||||
|             </li> | ||||
|           ) | ||||
|         })} | ||||
|   | ||||
| @@ -9,13 +9,21 @@ export const CurriculumVitaeWork: React.FC<CurriculumVitaeWorkProps> = () => { | ||||
|  | ||||
|   const workExperiences = [ | ||||
|     { | ||||
|       summary: t("curriculum-vitae.work.ircad.summary"), | ||||
|       website: "https://ircad.fr/", | ||||
|       name: "IRCAD", | ||||
|       location: "1 Place de l'Hôpital, FR-67000 Strasbourg", | ||||
|       position: t("curriculum-vitae.work.ircad.position"), | ||||
|       dates: "28/08/2023 - 31/08/2027", | ||||
|       duration: t("curriculum-vitae.work.ircad.duration"), | ||||
|       tasks: [ | ||||
|         // t("curriculum-vitae.work.ircad.tasks.WebSurg"), | ||||
|         t("curriculum-vitae.work.ircad.tasks.Figma"), | ||||
|         t("curriculum-vitae.work.ircad.tasks.IRCAD-Core"), | ||||
|         t("curriculum-vitae.work.ircad.tasks.feature-logs"), | ||||
|         t("curriculum-vitae.work.ircad.tasks.feature-permissions"), | ||||
|         t("curriculum-vitae.work.ircad.tasks.feature-search"), | ||||
|         t("curriculum-vitae.work.ircad.tasks.feature-architecture"), | ||||
|       ], | ||||
|     }, | ||||
|     { | ||||
|       summary: t("curriculum-vitae.work.numerize.summary"), | ||||
| @@ -25,6 +33,7 @@ export const CurriculumVitaeWork: React.FC<CurriculumVitaeWorkProps> = () => { | ||||
|       position: t("curriculum-vitae.work.numerize.position"), | ||||
|       dates: "11/04/2023 - 26/07/2023", | ||||
|       duration: t("curriculum-vitae.work.numerize.duration"), | ||||
|       tasks: [], | ||||
|     }, | ||||
|   ] | ||||
|  | ||||
| @@ -50,16 +59,36 @@ export const CurriculumVitaeWork: React.FC<CurriculumVitaeWorkProps> = () => { | ||||
|                 <strong>{workExperience.position}</strong> | ||||
|               </p> | ||||
|  | ||||
|               <p className="text-muted"> | ||||
|               <p className="text-muted m-0"> | ||||
|                 <small> | ||||
|                   <span className="space-right"> | ||||
|                     {workExperience.dates} ({workExperience.duration}) | ||||
|                   </span> | ||||
|                 </small> | ||||
|               </p> | ||||
|               <div className="mt-2"> | ||||
|                 <p>{workExperience.summary}</p> | ||||
|               </div> | ||||
|  | ||||
|               {workExperience.tasks.length > 0 ? ( | ||||
|                 <ul | ||||
|                   style={{ | ||||
|                     paddingInlineStart: 20, | ||||
|                   }} | ||||
|                   className="space-y-1" | ||||
|                 > | ||||
|                   {workExperience.tasks.map((task) => { | ||||
|                     return <li key={task}>{task}</li> | ||||
|                   })} | ||||
|                 </ul> | ||||
|               ) : ( | ||||
|                 <></> | ||||
|               )} | ||||
|  | ||||
|               {workExperience.summary != null ? ( | ||||
|                 <div className="mt-2"> | ||||
|                   <p>{workExperience.summary}</p> | ||||
|                 </div> | ||||
|               ) : ( | ||||
|                 <></> | ||||
|               )} | ||||
|             </li> | ||||
|           ) | ||||
|         })} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user