Skip to content

Commit 733c449

Browse files
committed
Reformat code and add new resume sections
Refactored components and CSS formatting for better readability. Added new sections for skills, languages, education, employment history, hobbies, details, links, and activities in the resume structure.
1 parent 5f31dc6 commit 733c449

22 files changed

+447
-315
lines changed

Diff for: .run/Build.run.xml

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<component name="ProjectRunConfigurationManager">
2-
<configuration default="false" name="Build" type="js.build_tools.npm">
3-
<package-json value="$PROJECT_DIR$/package.json" />
4-
<command value="run" />
5-
<scripts>
6-
<script value="build" />
7-
</scripts>
8-
<node-interpreter value="project" />
9-
<envs />
10-
<method v="2" />
11-
</configuration>
2+
<configuration default="false" name="Build" type="js.build_tools.npm">
3+
<package-json value="$PROJECT_DIR$/package.json"/>
4+
<command value="run"/>
5+
<scripts>
6+
<script value="build"/>
7+
</scripts>
8+
<node-interpreter value="project"/>
9+
<envs/>
10+
<method v="2"/>
11+
</configuration>
1212
</component>

Diff for: .run/Clean.run.xml

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<component name="ProjectRunConfigurationManager">
2-
<configuration default="false" name="Clean" type="js.build_tools.npm">
3-
<package-json value="$PROJECT_DIR$/package.json" />
4-
<command value="run" />
5-
<scripts>
6-
<script value="clean" />
7-
</scripts>
8-
<node-interpreter value="project" />
9-
<envs />
10-
<method v="2" />
11-
</configuration>
2+
<configuration default="false" name="Clean" type="js.build_tools.npm">
3+
<package-json value="$PROJECT_DIR$/package.json"/>
4+
<command value="run"/>
5+
<scripts>
6+
<script value="clean"/>
7+
</scripts>
8+
<node-interpreter value="project"/>
9+
<envs/>
10+
<method v="2"/>
11+
</configuration>
1212
</component>

Diff for: .run/Develop.run.xml

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<component name="ProjectRunConfigurationManager">
2-
<configuration default="false" name="Develop" type="js.build_tools.npm">
3-
<package-json value="$PROJECT_DIR$/package.json" />
4-
<command value="run" />
5-
<scripts>
6-
<script value="develop" />
7-
</scripts>
8-
<node-interpreter value="project" />
9-
<envs />
10-
<method v="2" />
11-
</configuration>
2+
<configuration default="false" name="Develop" type="js.build_tools.npm">
3+
<package-json value="$PROJECT_DIR$/package.json"/>
4+
<command value="run"/>
5+
<scripts>
6+
<script value="develop"/>
7+
</scripts>
8+
<node-interpreter value="project"/>
9+
<envs/>
10+
<method v="2"/>
11+
</configuration>
1212
</component>

Diff for: .run/Serve.run.xml

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<component name="ProjectRunConfigurationManager">
2-
<configuration default="false" name="Serve" type="js.build_tools.npm">
3-
<package-json value="$PROJECT_DIR$/package.json" />
4-
<command value="run" />
5-
<scripts>
6-
<script value="serve" />
7-
</scripts>
8-
<node-interpreter value="project" />
9-
<envs />
10-
<method v="2" />
11-
</configuration>
2+
<configuration default="false" name="Serve" type="js.build_tools.npm">
3+
<package-json value="$PROJECT_DIR$/package.json"/>
4+
<command value="run"/>
5+
<scripts>
6+
<script value="serve"/>
7+
</scripts>
8+
<node-interpreter value="project"/>
9+
<envs/>
10+
<method v="2"/>
11+
</configuration>
1212
</component>

Diff for: gatsby-config.ts

+35-35
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,45 @@
1-
import type { GatsbyConfig } from "gatsby";
1+
import type {GatsbyConfig} from "gatsby";
22

33
require("dotenv").config({
4-
path: `.env.${process.env.NODE_ENV}`,
4+
path: `.env.${process.env.NODE_ENV}`,
55
})
66

77
const config: GatsbyConfig = {
8-
siteMetadata: {
9-
title: `Resume`,
10-
siteUrl: `https://collis.email`
11-
},
12-
// More easily incorporate content into your pages through automatic TypeScript type generation and better GraphQL IntelliSense.
13-
// If you use VSCode you can also use the GraphQL plugin
14-
// Learn more at: https://gatsby.dev/graphql-typegen
15-
graphqlTypegen: true,
16-
plugins: ["gatsby-plugin-sass", "gatsby-plugin-image", {
17-
resolve: 'gatsby-plugin-manifest',
18-
options: {
19-
"icon": "src/images/profile.png"
20-
}
21-
}, "gatsby-plugin-mdx", "gatsby-plugin-sharp", "gatsby-transformer-sharp", {
22-
resolve: 'gatsby-source-filesystem',
23-
options: {
24-
"name": "images",
25-
"path": "./src/images/"
8+
siteMetadata: {
9+
title: `Resume`,
10+
siteUrl: `https://collis.email`
2611
},
27-
__key: "images"
28-
}, {
29-
resolve: 'gatsby-source-filesystem',
30-
options: {
31-
"name": "pages",
32-
"path": "./src/pages/"
12+
// More easily incorporate content into your pages through automatic TypeScript type generation and better GraphQL IntelliSense.
13+
// If you use VSCode you can also use the GraphQL plugin
14+
// Learn more at: https://gatsby.dev/graphql-typegen
15+
graphqlTypegen: true,
16+
plugins: ["gatsby-plugin-sass", "gatsby-plugin-image", {
17+
resolve: 'gatsby-plugin-manifest',
18+
options: {
19+
"icon": "src/images/profile.png"
20+
}
21+
}, "gatsby-plugin-mdx", "gatsby-plugin-sharp", "gatsby-transformer-sharp", {
22+
resolve: 'gatsby-source-filesystem',
23+
options: {
24+
"name": "images",
25+
"path": "./src/images/"
26+
},
27+
__key: "images"
28+
}, {
29+
resolve: 'gatsby-source-filesystem',
30+
options: {
31+
"name": "pages",
32+
"path": "./src/pages/"
33+
},
34+
__key: "pages"
3335
},
34-
__key: "pages"
35-
},
36-
{
37-
resolve: 'gatsby-source-contentful',
38-
options: {
39-
spaceId: process.env.CONTENTFUL_SPACE_ID!,
40-
accessToken: process.env.CONTENTFUL_ACCESS_TOKEN!,
41-
},
42-
}]
36+
{
37+
resolve: 'gatsby-source-contentful',
38+
options: {
39+
spaceId: process.env.CONTENTFUL_SPACE_ID!,
40+
accessToken: process.env.CONTENTFUL_ACCESS_TOKEN!,
41+
},
42+
}]
4343
};
4444

4545
export default config;

Diff for: src/components/ActivitiesSection.tsx

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import {documentToReactComponents} from "@contentful/rich-text-react-renderer";
2+
import * as React from "react";
3+
4+
type ActivitiesProps = {
5+
activities: Queries.Maybe<ReadonlyArray<Queries.Maybe<Queries.ActivitiesFieldsFragment>>>
6+
}
7+
8+
export default function ActivitiesSection({activities}: ActivitiesProps) {
9+
return (
10+
<section>
11+
<h2>Extra-curricular Activities</h2>
12+
{activities?.map((activity, index) => (
13+
<div key={index}>
14+
<h3>{activity?.title}, {activity?.location}</h3>
15+
<h4>{activity?.year}</h4>
16+
<p>{activity?.fullDescription?.raw && documentToReactComponents(JSON.parse(activity.fullDescription.raw))}</p>
17+
</div>
18+
))}
19+
</section>
20+
);
21+
}

Diff for: src/components/Avatar.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { GatsbyImage, IGatsbyImageData } from "gatsby-plugin-image";
1+
import {GatsbyImage, IGatsbyImageData} from "gatsby-plugin-image";
22
import * as React from "react"
33

44
interface AvatarProps {
@@ -11,7 +11,7 @@ export default function Avatar({name, jobTitle, image}: AvatarProps) {
1111
return (
1212
<section className="text-center">
1313
{image && (
14-
<GatsbyImage alt={name} image={image} class="mx-5 mb-3 rounded-circle" />
14+
<GatsbyImage alt={name} image={image} class="mx-5 mb-3 rounded-circle"/>
1515
)}
1616
<h1>{name}</h1>
1717
<p>{jobTitle}</p>

Diff for: src/components/DetailsSection.tsx

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import * as React from "react";
2+
3+
type DetailsProps = {
4+
details: Queries.Maybe<Queries.DetailsFieldsFragment>
5+
}
6+
7+
export default function DetailsSection({ details }: DetailsProps) {
8+
return (
9+
<section className="mb-4">
10+
<h2>Details</h2>
11+
<p className="mb-0">{details?.location}</p>
12+
<p className="mb-0"><a href={`tel:${details?.phone}`}>{details?.phone}</a></p>
13+
<p className="mb-0"><a href={`mailto:${details?.email}`}>{details?.email}</a></p>
14+
</section>
15+
);
16+
}

Diff for: src/components/EducationSection.tsx

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import {formatDate} from "../utils/dateUtils";
2+
import {documentToReactComponents} from "@contentful/rich-text-react-renderer";
3+
import * as React from "react";
4+
5+
type EducationProps = {
6+
education: Queries.Maybe<ReadonlyArray<Queries.Maybe<Queries.EducationFieldsFragment>>>
7+
}
8+
9+
export default function EducationSection({ education }: EducationProps) {
10+
return (
11+
<section>
12+
<h2>Education</h2>
13+
{education?.map((edu, index) => (
14+
<div key={index}>
15+
<h3>{edu?.institutionName}</h3>
16+
<h4>{formatDate(edu?.startDate)}{edu?.endDate && ` - ${formatDate(edu.endDate)}`}</h4>
17+
<p>{edu?.description?.raw && documentToReactComponents(JSON.parse(edu.description.raw))}</p>
18+
</div>
19+
))}
20+
</section>
21+
);
22+
}

Diff for: src/components/EmploymentHistorySection.tsx

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import {formatDate} from "../utils/dateUtils";
2+
import {documentToReactComponents} from "@contentful/rich-text-react-renderer";
3+
import * as React from "react";
4+
5+
type EmploymentHistoryProps = {
6+
employmentHistory: Queries.Maybe<ReadonlyArray<Queries.Maybe<Queries.EmploymentHistoryFieldsFragment>>>
7+
}
8+
9+
export default function EmploymentHistorySection({ employmentHistory }: EmploymentHistoryProps) {
10+
return (
11+
<section>
12+
<h2>Employment History</h2>
13+
{employmentHistory?.map((job, index) => (
14+
<div key={index}>
15+
<h3>{job?.jobTitle}, {job?.companyName?.companyName}</h3>
16+
<h4>{formatDate(job?.startDate)} - {formatDate(job?.endDate)}</h4>
17+
{job?.description?.raw && documentToReactComponents(JSON.parse(job.description.raw))}
18+
</div>
19+
))}
20+
</section>
21+
);
22+
}

Diff for: src/components/HobbiesSection.tsx

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import * as React from "react";
2+
3+
type HobbiesSectionProps = {
4+
hobbies: Queries.Maybe<ReadonlyArray<Queries.Maybe<Queries.Scalars['String']>>>
5+
}
6+
7+
export default function HobbiesSection({hobbies}: HobbiesSectionProps) {
8+
return (
9+
<section className="mb-4">
10+
<h2>Hobbies</h2>
11+
{hobbies?.map((hobby, index) => (
12+
<p key={index} className="mb-0">{hobby}</p>
13+
))}
14+
</section>
15+
);
16+
}

Diff for: src/components/LanguagesSection.tsx

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import Skill from "./Skill";
2+
import * as React from "react";
3+
4+
type LanguagesSectionProps = {
5+
languages: Queries.Maybe<ReadonlyArray<Queries.Maybe<Queries.LanguageFieldsFragment>>>
6+
}
7+
8+
export default function LanguagesSection({ languages }: LanguagesSectionProps) {
9+
return (
10+
<section className="mb-4">
11+
<h2>Languages</h2>
12+
{languages?.map((lang, index) => (
13+
<Skill key={index} level={lang?.skillLevel ?? 0}>{lang?.language}</Skill>
14+
))}
15+
</section>
16+
);
17+
}

Diff for: src/components/LinksSection.tsx

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import * as React from "react";
2+
3+
type LinksSectionProps = {
4+
links: Queries.Maybe<ReadonlyArray<Queries.Maybe<Queries.LinkFieldsFragment>>> | undefined
5+
}
6+
7+
export default function LinksSection({ links }: LinksSectionProps) {
8+
return (
9+
<section className="mb-4">
10+
<h2>Links</h2>
11+
{links?.map((link, index) => (
12+
<a key={index} href={link?.url ?? ""}>{link?.name}<br/></a>
13+
))}
14+
</section>
15+
);
16+
}

Diff for: src/components/PrintOnly.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
21
import * as React from "react"
32

43
interface PrintOnlyProps {
54
children: React.ReactNode; // this is the type for child components
65
}
76

8-
export default function PrintOnly({ children }: PrintOnlyProps) {
7+
export default function PrintOnly({children}: PrintOnlyProps) {
98
return (
10-
<span className="d-none d-print-inline">
9+
<span className="d-none d-print-inline">
1110
{children}
1211
</span>
1312
);

Diff for: src/components/Skill.tsx

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as React from "react"
2-
import { ProgressBar } from "react-bootstrap";
2+
import {ProgressBar} from "react-bootstrap";
33

44
interface SkillProps {
55
/* The skill level */
@@ -8,11 +8,11 @@ interface SkillProps {
88
children: React.ReactNode; // this is the type for child components
99
}
1010

11-
export default function Skill({ level, children }: SkillProps) {
12-
return (
13-
<div className="skill mb-3">
14-
<p className="mb-0">{children}</p>
15-
<ProgressBar now={level / 5 * 100}></ProgressBar>
16-
</div>
17-
);
11+
export default function Skill({level, children}: SkillProps) {
12+
return (
13+
<div className="skill mb-3">
14+
<p className="mb-0">{children}</p>
15+
<ProgressBar now={level / 5 * 100}></ProgressBar>
16+
</div>
17+
);
1818
}

Diff for: src/components/SkillsSection.tsx

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import Skill from "./Skill";
2+
import * as React from "react";
3+
4+
type SkillsSectionProps = {
5+
skills: Queries.Maybe<ReadonlyArray<Queries.Maybe<Queries.SkillFieldsFragment>>>
6+
}
7+
8+
export default function SkillsSection({ skills }: SkillsSectionProps) {
9+
return (
10+
<section>
11+
<h2>Skills</h2>
12+
{skills?.map((skill, index) => (
13+
<Skill key={index} level={skill?.skillLevel ?? 0}>{skill?.name}</Skill>
14+
))}
15+
</section>
16+
);
17+
}

0 commit comments

Comments
 (0)