Skip to content

Commit

Permalink
Merge branch 'main' of github.com:alexis-opolka/alexis-opolka.github.io
Browse files Browse the repository at this point in the history
  • Loading branch information
alexis-opolka committed Nov 30, 2023
2 parents 157be04 + 5f53ae6 commit 1f3f3e7
Show file tree
Hide file tree
Showing 13 changed files with 511 additions and 139 deletions.
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@
"dotenv": "^16.3.1",
"eslint": "^8.47.0",
"eslint-config-next": "13.4.12",
"graphql": "^16.7.1",
"graphql": "^16.8.1",
"js-yaml-loader": "^1.2.2",
"next": "13.4.12",
"next": "13.5.0",
"react": "^18.2.0",
"react-circle-flags": "^0.0.18",
"react-dom": "^18.2.0",
"react-icons": "^4.10.1",
"sass": "^1.65.1",
"sharp": "^0.32.4",
"sharp": "^0.32.6",
"styled-components": "^5.3.11",
"typescript": "^5.1.6"
},
Expand Down
77 changes: 44 additions & 33 deletions src/app/(portfolio)/about/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@
import { Avatar, Box, CircleOcticon, Heading, PageLayout, Text, Timeline } from "@primer/react";
import { BetterSystemStyleObject } from "@primer/react/lib/sx";
import {ChevronRightIcon} from "@primer/octicons-react";
import { ReactNode } from "react";

// Intern Imports
import ProfilePicture from "@/content/img/profile-picture.png";
import { SkillsPart } from "@/components/AboutComponents/Skills";
import { ExperiencePart } from "@/components/AboutComponents/Experience";
import { ReactNode } from "react";
import { AboutMyEducation } from "@/components/AboutComponents/Education";
import { VolunteeringExperience } from "@/components/AboutComponents/Volunteering";
import {MyInvestment} from "@/components/AboutComponents/Investment";

// Rendering page
export default function AboutPage(){
Expand All @@ -28,7 +30,7 @@ export default function AboutPage(){
<AboutMePart />
<SkillsAndExperiencePart />
<EducationPart />
<VolunteeringPart />
<VolunteeringAndInvestmentPart />
</AboutBodyWrapper>
</PageLayout.Content>
</PageLayout>
Expand Down Expand Up @@ -101,7 +103,7 @@ function AboutSection({id, title, children}: {id: string, title: string, childre
{title}
</Heading>
</Box>
<Box id={id + ".Content"} sx={{maxWidth: "100%"}}>
<Box id={id + ".Content"} sx={{maxWidth: "100%", width: "100%"}}>
{children}
</Box>
</Box>
Expand All @@ -124,31 +126,38 @@ function AboutMePart(){
I&apos;m a french student with a passion for technology, arts and entrepreuneurship. <br />
My main goals are to become a DevOps Engineer, to create my own company and contribute to the society as a whole. <br />
I&apos;m interested in many things (if not a lot), but for the most part, it&apos;s about:
<Timeline sx={{ml: 2, mt: 3}}>
{aboutMeInteterestsArray.map((interest, index) => {
return(
<Timeline.Item key={index}>
<Timeline.Badge>
<CircleOcticon icon={ChevronRightIcon} />
</Timeline.Badge>
<Timeline.Body>
{interest}
</Timeline.Body>
</Timeline.Item>
)
})
}
</Timeline>
</Text>
<Text as={"p"}>
Meanwhile, you can see me on many projects as a <b>contributor</b>, a <b>project manager</b> or as a <b>leader</b>. <br />
I might also be a speaker at some events, a mentor for some students.
But don&apos;t worry, I&apos;m not a workaholic.
</Text>
<Text as={"p"}>
I also have some hobbies like writing & reading stories (mostly fantasy and sci-fi), creating & playing video games,
listening to music (mostly Blues/Jazz and Lo-Fi) and experimenting with new technologies.
<Box sx={{display: "flex", flexDirection: "row", justifyContent: "space-between", alignItems: "center"}}>
<Box sx={{flex: "50%"}}>
<Timeline sx={{ml: "25%", mt: 3}}>
{aboutMeInteterestsArray.map((interest, index) => {
return(
<Timeline.Item key={index}>
<Timeline.Badge>
<CircleOcticon icon={ChevronRightIcon} />
</Timeline.Badge>
<Timeline.Body>
{interest}
</Timeline.Body>
</Timeline.Item>
)
})
}
</Timeline>
</Box>
<Box sx={{flex: "50%", display: "flex", flexDirection: "column", justifyContent: "space-between"}}>
<Text as={"p"}>
Meanwhile, you can see me on many projects as a <b>contributor</b>, a <b>project manager</b> or as a <b>leader</b>. <br />
I might also be a speaker at some events, a mentor for some students.
But don&apos;t worry, I&apos;m not a workaholic.
</Text>
<Text as={"p"}>
I also have some hobbies like writing & reading stories (mostly fantasy and sci-fi), creating & playing video games,
listening to music (mostly Blues/Jazz and Lo-Fi) and experimenting with new technologies.
</Text>
</Box>
</Box>
</Text>

</Box>
</AboutSection>
)
Expand Down Expand Up @@ -186,8 +195,9 @@ function EducationPart(){
)
}

// The VolunteeringPart is the part containing the volunteering timeline.
function VolunteeringPart(){
// The VolunteeringAndInvestmentPart is the part containing the volunteering boxes
// and my investments.
function VolunteeringAndInvestmentPart(){

// eslint-disable-next-line @typescript-eslint/no-unused-vars
const volunteeringPartStyle: BetterSystemStyleObject = {
Expand All @@ -199,18 +209,19 @@ function VolunteeringPart(){
}

return(
<AboutSection id="About.Volunteering" title="Volunteering">
Hey There! What did I volunteer again?
<AboutSection id="About.Volunteering" title="Volunteering & Investment">
<VolunteeringExperience />
<MyInvestment />
</AboutSection>
)

}

// Some useful components when writing the about page
// Some useful components while writing the about page
function SeparatingSlash({separatingColor}: {separatingColor?: string}){
return(
<Box sx={{ml: 1, mr: 1}}>
<Text sx={{color: separatingColor}}>/</Text>
<Text sx={{color: separatingColor, userSelect: "none"}}>/</Text>
</Box>
)
}
2 changes: 1 addition & 1 deletion src/components/AboutComponents/Education/Education.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export default function AboutMyEducation(){
diploma="General Certificate of Secondary Education"
grade="middle-school"
school="Marcel Pagnol, France"
years={[2019, 2022]}
years={[2019, 2015]}
mention={"Very Good mention"}
/>
</Timeline>
Expand Down
4 changes: 2 additions & 2 deletions src/components/AboutComponents/Experience/Experience.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export default function ExperiencePart(){
<ExperienceCard jobTitle="Student-Entrepreneur" date="1st January 2023 - Present" />
<ExperienceCard jobTitle="Technical Director" company="Petits Papiers d'Architecture" companyLogo={PetitsPapiersDarchiLogo} date="1st August 2022 - Present" />
</Box>
<Box>
<Box sx={{display: "flex", flexDirection: "column", justifyContent: "space-between"}}>
<ExperienceCard jobTitle="SCUIO-IP Information Officer" company="University of Montpellier" companyLogo={LogoUM} date="3rd July - 21th July 2023"/>
<ExperienceCard jobTitle="Supply Assistant" company="Lidl France" companyLogo={LidlFranceLogo} date="1st August 2022 - 22nd January 2023" />
<ExperienceCard jobTitle="Landscaping Assitant" company="Agri Garden" date="Summers from 2019 to 2021" />
Expand All @@ -45,7 +45,7 @@ export default function ExperiencePart(){
)
}

// Experienceard Component
// ExperienceCard Component
function ExperienceCard({
jobTitle,
company,
Expand Down
168 changes: 168 additions & 0 deletions src/components/AboutComponents/Investment/Investment.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
// NextJS Imports
import {Box, Heading, Link, Text} from "@primer/react";
import { BetterSystemStyleObject } from "@primer/react/lib/sx";

import InvestmentData from "./src/investment.json";

interface investmentEventInterface {
id: string,
name: string,
category: string,
description: string,
url?: string
}


export default function MyInvestment(){

const investmentExperienceStyle: BetterSystemStyleObject = {
display: "flex",
flexDirection: "column",
justifyContent: "center",
alignItems: "start",
color: "text.primary",
width: "100%",
maxWidth: "100%",
padding: 20,
backgroundColor: "canvas.default",
}

const investmentInConference: investmentEventInterface[] = [];
const investmentInSchoolEvents: investmentEventInterface[] = [];
const investmentUnrelatedButInteresting: investmentEventInterface[] = [];

// We preload the content on different lists so that we can easily map them to the cards
InvestmentData.content.map((investmentEvent, investmentIndex) => {
if (investmentEvent.category === "conference"){
// We add the investmentEvent object to the investmentInConference list
investmentInConference.push(investmentEvent);
} else if (investmentEvent.category === "school-event"){
// We add the investmentEvent object to the investmentInSchoolEvents list
investmentInSchoolEvents.push(investmentEvent);
} else if (investmentEvent.category === "other"){
investmentUnrelatedButInteresting.push(investmentEvent);
} else {
// We shouldn't be here, so we just throw a log with the content
console.log("We couldn't find the category for this investment event: ", investmentEvent, `with the index n°${investmentIndex}!`)
}
})


return(
<Box id="About.Investment.Content.Holder" sx={investmentExperienceStyle}>
<Box id="About.Investment.Content.Headings" sx={{ml: 2, mb: 0, maxWidth: "100%"}}>
<Link href='#About.Investment.Content' sx={{color: "fg.default"}}>
<Heading as={"h3"} sx={{fontSize: 4, mr: 4}}> My Investment </Heading>
</Link>
</Box>
<Box id="About.Investment.Content.Experience.Holder" sx={{display: "flex", flexDirection: "column", maxWidth: "100%", width: "100%"}}>
<Box id="About.Investment.Content.Experience" sx={{display: "flex", flexDirection: "row", justifyContent: "space-between", maxWidth: "100%", width: "100%"}}>
<Box id="About.Investment.Content.Experience.Conferences" sx={{display: "flex", flexDirection: "column", justifyContent: "space-between"}}>

<Box id="About.Investment.Content.Experience.Conferences.Headings">
<Heading as={"h4"} sx={{fontSize: 3, ml: 4, mt: 4}}>
Conferences

<Text as={"p"} sx={{fontSize: 1, color: "fg.subtle", mt: 2, mb: 2, ml: 4, mr: 4}}>
I attended the following conferences, either digitally or physically.
</Text>
</Heading>
</Box>

<Box id="About.Investment.Content.Experience.Conferences.Content" sx={{mt: 2, mb: 2, ml: 4, mr: 4}}>
{
investmentInConference.map((investmentEvent, investmentIndex) => {
return(
<InvestmentCard key={investmentIndex} id="About.Investment.Content.Experience.Conferences.Content" type={investmentEvent.category} content={investmentEvent} />
)
})
}
</Box>
</Box>
<Box id="About.Investment.Content.Experience.School-Events" sx={{display: "flex", flexDirection: "column", justifyContent: "space-between"}}>
<Box id="About.Investment.Content.Experience.School-Events.Headings">
<Heading as={"h4"} sx={{fontSize: 3, ml: 4, mt: 4}}>
School Events

<Text as={"p"} sx={{fontSize: 1, color: "fg.subtle", mt: 2, mb: 2, ml: 4, mr: 4}}>
I either participated or helped organize the following school events.
</Text>
</Heading>
</Box>

<Box id="About.Investment.Content.Experience.School-Events.Content" sx={{mt: 2, mb: 2, ml: 4, mr: 4}}>
{
investmentInSchoolEvents.map((investmentEvent, investmentIndex) => {
return(
<InvestmentCard key={investmentIndex} id="About.Investment.Content.Experience.School-Events.Content" type={investmentEvent.category} content={investmentEvent} />
)
})
}
</Box>
</Box>
</Box>
<Box id="About.Investment.Content.Experience.Others" sx={{display: "flex", flexDirection: "column", justifyContent: "space-between"}}>
<Box id="About.Investment.Content.Experience.Others.Headings">
<Heading as={"h4"} sx={{fontSize: 3, ml: 4, mt: 4}}>
Others

<Text as={"p"} sx={{fontSize: 1, color: "fg.subtle", mt: 2, mb: 2, ml: 4, mr: 4}}>
It&apos;s not really related to anything but I thought it would be nice to show it.
</Text>
</Heading>
</Box>

<Box id="About.Investment.Content.Experience.Others.Content" sx={{mt: 2, mb: 2, ml: 4, mr: 4}}>
{
investmentUnrelatedButInteresting.map((investmentEvent, investmentIndex) => {
return(
<InvestmentCard key={investmentIndex} id="About.Investment.Content.Experience.Others.Content" type={investmentEvent.category} content={investmentEvent} />
)
})
}
</Box>
</Box>
</Box>
</Box>
)
}

function InvestmentCard({
id,
type,
content
}: {
id: string,
type: string,
content: investmentEventInterface
}){

const baseID = `${id}.${type}.${content.id}`;

const investmentCardStyle: BetterSystemStyleObject = {
display: "flex",
flexDirection: "column",
justifyContent: "space-between",
alignItems: "start",
color: "text.primary",
backgroundColor: "canvas.inset",
padding: 15,
margin: 4,
maxWidth: "100%",
}

return(
<Box id={baseID} sx={investmentCardStyle}>
<Box>
{content.url ? (
<Link href={content.url} sx={{color: "fg.default"}}>
<Heading as={"h4"} sx={{fontSize: 3, mr: 4}}>{content.name}</Heading>
</Link>
) : (
<Heading as={"h4"} sx={{fontSize: 3, mr: 4}}>{content.name}</Heading>
)}
<Heading as="h6" sx={{fontSize: 1, color: "fg.subtle", display: "flex", alignItems: "center", justifyContent: "start"}}>{content.description}</Heading>
</Box>
</Box>
)
}
1 change: 1 addition & 0 deletions src/components/AboutComponents/Investment/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { default as MyInvestment } from "./Investment";
Loading

0 comments on commit 1f3f3e7

Please sign in to comment.