Skip to content

Commit

Permalink
Finished Volunteering part
Browse files Browse the repository at this point in the history
  • Loading branch information
alexis-opolka committed Sep 4, 2023
1 parent 9b0b953 commit 9811ee9
Show file tree
Hide file tree
Showing 11 changed files with 324 additions and 45 deletions.
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
142 changes: 142 additions & 0 deletions src/components/AboutComponents/Investment/Investment.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
// 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[] = [];

// 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 {
// 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" 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>
)
}

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";
44 changes: 44 additions & 0 deletions src/components/AboutComponents/Investment/src/investment.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
{
"content": [
{
"id": "polycloud-mtp-2023",
"name": "PolyCloud Montpellier 2023",
"category": "conference",
"description": "PolyCloud Montpellier 2023 is a conference about cloud computing and its applications. It is organized by the Polytech Montpellier students.",
"url": "https://polycloud.fr/"
},
{
"id": "google-io-2023",
"name": "Google I/O 2023",
"category": "conference",
"description": "Google I/O is an annual developer conference held by Google.",
"url": "https://io.google"
},
{
"id": "google-next-23",
"name": "Google Next'23",
"category": "conference",
"description": "Google Next is an annual conference organized by Google.",
"url": "https://cloud.withgoogle.com/next"
},
{
"id": "github-universe-2022",
"name": "Github Universe 2022",
"category": "conference",
"description": "Github Universe is an annual conference organized by Github.",
"url": "https://githubuniverse.com/"
},
{
"id": "iut-beziers-jpo-2023",
"name": "JPO IUT Béziers",
"category": "school-event",
"description": "Open days of the IUT of Béziers."
},
{
"id": "ffb-2023",
"name": "Festival Fantastique de Béziers (FFB) 2023",
"category": "school-event",
"description": "The Festival of Fantastic by the IUT of Béziers."
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export default function CloudTechCategory(){
skillName={"Shell"} /** We cheat a bit here, but shush */
displayName={"Kubernetes"}
skillLevel={40}
skillDescription={"It speaks for itself, the administration of Linux systems. (Including RHEL)"}
skillDescription={"Kubernetes, K8S or Kube."}
/>
<SkillCard
type={"cloudtech"}
Expand Down
6 changes: 4 additions & 2 deletions src/components/AboutComponents/Skills/PaneTitle/PaneTitle.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@ export default function PaneTitle({
return(
<Box sx={{ padding: 20, display: "flex", flexDirection: "column", minWidth: "60%", maxWidth: "100%", flexWrap: "wrap" }}>
<Box sx={{display: "flex", flexDirection: "row", justifyContent: "start", alignItems: "baseline"}}>
<Heading as={"h4"} sx={{ fontSize: 3, mr: 2, maxWidth: "100%", width: "100%" }}> {title} </Heading>
<Heading as={"h5"} sx={{ fontSize: 0, color: "fg.muted" }}> {description} </Heading>
<Heading as={"h4"} sx={{ fontSize: 3, mr: 2, maxWidth: "100%", width: "100%" }}>
{title}
<Heading as={"h5"} sx={{ fontSize: 0, color: "fg.muted" }}> {description} </Heading>
</Heading>
</Box>
{children}
</Box>
Expand Down
Loading

0 comments on commit 9811ee9

Please sign in to comment.