Skip to content

Commit e358a6f

Browse files
feat: update WorkExperience for theme consistency
Update timeline and cards to match site theme and styles. #VERCEL_SKIP Co-authored-by: Darcy Liu <34801810+codejedi-ai@users.noreply.github.com>
1 parent a1cc21f commit e358a6f

File tree

7 files changed

+312
-59
lines changed

7 files changed

+312
-59
lines changed

app/api/about-images/route.ts

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,30 @@
11
import { NextResponse } from "next/server"
2-
import fs from "fs"
3-
import path from "path"
42

53
export async function GET() {
64
try {
7-
// Read the about images data from the JSON file
8-
const dataFilePath = path.join(process.cwd(), "data", "about-images.json")
9-
const fileContents = fs.readFileSync(dataFilePath, "utf8")
10-
const aboutImages = JSON.parse(fileContents)
5+
// Hard-coded about images data
6+
const aboutImages = [
7+
{
8+
id: "about1",
9+
src: "https://hebbkx1anhila5yf.public.blob.vercel-storage.com/about1.jpg-TbfdbEe1niYCAR6Fqv7JYcqm2zeKO9.jpeg",
10+
alt: "Kayaking with a Star Wars Rebel Alliance cap",
11+
},
12+
{
13+
id: "about2",
14+
src: "https://hebbkx1anhila5yf.public.blob.vercel-storage.com/about2-X48rWZdpV4Q7RxVbbD5F7xRy5JhQdO.jpeg",
15+
alt: "Sailing at the beach with life vest",
16+
},
17+
{
18+
id: "about3",
19+
src: "https://hebbkx1anhila5yf.public.blob.vercel-storage.com/about3-9AFwiFVEdtKGJqM9LmWvBQWHcfyyC2.jpeg",
20+
alt: "Building a sand castle on the beach",
21+
},
22+
{
23+
id: "about4",
24+
src: "https://hebbkx1anhila5yf.public.blob.vercel-storage.com/about4-Vpsom9WTaJ93mBOvtKEjXoCSR1QzC5.jpeg",
25+
alt: "Kayaking in a blue Hydro-Force inflatable kayak",
26+
},
27+
]
1128

1229
// Return the about images data as JSON
1330
return NextResponse.json({ aboutImages }, { status: 200 })

app/api/certificates/route.ts

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,31 @@
11
import { NextResponse } from "next/server"
2-
import fs from "fs"
3-
import path from "path"
42

53
export async function GET() {
64
try {
7-
// Read the certificates data from the JSON file
8-
const dataFilePath = path.join(process.cwd(), "data", "certificates.json")
9-
const fileContents = fs.readFileSync(dataFilePath, "utf8")
10-
const certificates = JSON.parse(fileContents)
5+
// Hard-coded certificates data
6+
const certificates = [
7+
{
8+
id: "aws-practitioner",
9+
name: "AWS Certified Practitioner",
10+
image: "/images/aws-practitioner.png",
11+
alt: "AWS Cloud Practitioner Certificate",
12+
date: "2 January 2021",
13+
},
14+
{
15+
id: "aws-developer",
16+
name: "AWS Certified Developer",
17+
image: "/images/aws-developer.png",
18+
alt: "AWS Developer Associate Certificate",
19+
date: "29 August 2021",
20+
},
21+
{
22+
id: "aws-devops-prof",
23+
name: "AWS Certified DevOps Engineer - Professional",
24+
image: "/images/aws-devops-prof.png",
25+
alt: "AWS DevOps Engineer Professional Certificate",
26+
date: "23 August 2024",
27+
},
28+
]
1129

1230
// Return the certificates data as JSON
1331
return NextResponse.json({ certificates }, { status: 200 })

app/api/contacts/route.ts

Lines changed: 57 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,64 @@
11
import { NextResponse } from "next/server"
2-
import fs from "fs"
3-
import path from "path"
42

53
export async function GET() {
64
try {
7-
// Read the contacts data from the JSON file
8-
const dataFilePath = path.join(process.cwd(), "data", "contacts.json")
9-
const fileContents = fs.readFileSync(dataFilePath, "utf8")
10-
const contacts = JSON.parse(fileContents)
5+
// Hard-coded contacts data
6+
const contacts = [
7+
{
8+
id: "linkedin",
9+
name: "LinkedIn",
10+
value: "codejediatuw",
11+
icon: "Linkedin",
12+
href: "https://www.linkedin.com/in/codejediatuw/",
13+
color: "bg-primary-blue",
14+
qr: true,
15+
},
16+
{
17+
id: "instagram",
18+
name: "Instagram",
19+
value: "darcyldx",
20+
icon: "Instagram",
21+
href: "https://www.instagram.com/darcyldx/",
22+
color: "bg-primary-purple",
23+
qr: true,
24+
},
25+
{
26+
id: "twitter",
27+
name: "X (Twitter)",
28+
value: "@darsboi_cjd",
29+
icon: "Twitter",
30+
href: "https://twitter.com/darsboi_cjd",
31+
color: "bg-dark-lighter",
32+
qr: true,
33+
},
34+
{
35+
id: "email",
36+
name: "Email",
37+
value: "d273liu@uwaterloo.ca",
38+
icon: "Mail",
39+
href: "mailto:d273liu@uwaterloo.ca",
40+
color: "bg-primary-pink",
41+
qr: false,
42+
},
43+
{
44+
id: "calendly",
45+
name: "Schedule a Meeting",
46+
value: "Calendly",
47+
icon: "Calendar",
48+
href: "https://calendly.com/d273liu/one-on-one",
49+
color: "bg-primary-cyan",
50+
qr: false,
51+
},
52+
{
53+
id: "discord",
54+
name: "Discord",
55+
value: "codejedi",
56+
icon: "MessageSquare",
57+
href: "#",
58+
color: "bg-primary-purple",
59+
qr: false,
60+
},
61+
]
1162

1263
// Return the contacts data as JSON
1364
return NextResponse.json({ contacts }, { status: 200 })

app/api/projects/route.ts

Lines changed: 71 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,78 @@
11
import { NextResponse } from "next/server"
2-
import fs from "fs"
3-
import path from "path"
42

53
export async function GET() {
64
try {
7-
// Read the projects data from the JSON file
8-
const dataFilePath = path.join(process.cwd(), "data", "projects.json")
9-
const fileContents = fs.readFileSync(dataFilePath, "utf8")
10-
const projects = JSON.parse(fileContents)
5+
// Hard-coded projects data
6+
const projects = [
7+
{
8+
id: "duo-keyboard",
9+
title: "Duo Keyboard Koalition",
10+
description:
11+
"A collaborative community of hackers, engineers, and builders who believe that hackathons are just the beginning. Founded to address the all-too-common issue of abandoned weekend projects, the Koalition exists to carry great ideas forward — turning short-term hacks into long-term, meaningful solutions.",
12+
image: "/placeholder.svg?height=400&width=600",
13+
tags: ["Community", "Hackathons", "Collaboration"],
14+
link: "https://duo-keyboard-koalition.github.io",
15+
github: "https://github.com/duo-keyboard-koalition",
16+
featured: true,
17+
longDescription:
18+
"The Duo Keyboard Koalition is a collaborative community of hackers, engineers, and builders who believe that hackathons are just the beginning. Founded to address the all-too-common issue of abandoned weekend projects, the Koalition exists to carry great ideas forward — turning short-term hacks into long-term, meaningful solutions.\n\nWe're not just here for the demo day or the post-event applause. Our focus is on continued development, iteration, and real-world application. Members of the Koalition work together to maintain, refine, and evolve their projects, often transforming them into polished tools, products, or platforms well after the event ends.\n\nThe Koalition brings together talent from across campuses like the University of Waterloo, UofT, McGill, and more. It's a space where students and early-career developers come to learn, collaborate, and grow — supported by a shared passion for building impactful technology. With a thriving GitHub organization, 100+ members, and over 10+ collective hackathon wins, we are creating a space where momentum doesn't stop on Sunday night.\n\nThis is more than a team — it's a community focused on learning, building, and creating real impact together.",
19+
},
20+
{
21+
id: "galatea-ai",
22+
title: "Galatea AI",
23+
description:
24+
"An artificial intelligence platform that generates realistic 3D avatars from text descriptions, using advanced neural networks and computer vision techniques.",
25+
image: "/placeholder.svg?height=400&width=600",
26+
tags: ["AI", "Computer Vision", "Neural Networks"],
27+
link: "https://example.com/galatea-ai",
28+
github: "https://github.com/codejedi/galatea-ai",
29+
featured: true,
30+
},
31+
{
32+
id: "syntaxual-ai",
33+
title: "Syntaxual AI",
34+
description:
35+
"A code generation and analysis tool that uses machine learning to understand programming patterns and suggest optimizations or detect potential bugs.",
36+
image: "/placeholder.svg?height=400&width=600",
37+
tags: ["Machine Learning", "Code Analysis", "Developer Tools"],
38+
link: "https://example.com/syntaxual-ai",
39+
github: "https://github.com/codejedi/syntaxual-ai",
40+
featured: false,
41+
},
42+
{
43+
id: "magic-quill",
44+
title: "Magic.Quill",
45+
description:
46+
"An AI-powered writing assistant that helps users craft compelling stories, essays, and articles with intelligent suggestions and style analysis.",
47+
image: "/placeholder.svg?height=400&width=600",
48+
tags: ["NLP", "Creative Writing", "Education"],
49+
link: "https://example.com/magic-quill",
50+
github: "https://github.com/codejedi/magic-quill",
51+
featured: false,
52+
},
53+
{
54+
id: "ali",
55+
title: "Ali",
56+
description:
57+
"A personal assistant AI that helps manage schedules, answer questions, and automate routine tasks through natural language processing.",
58+
image: "/placeholder.svg?height=400&width=600",
59+
tags: ["AI", "Automation", "Productivity"],
60+
link: "https://example.com/ali",
61+
github: "https://github.com/codejedi/ali",
62+
featured: true,
63+
},
64+
{
65+
id: "code-civilization",
66+
title: "CodeCivilization",
67+
description:
68+
"An educational game that teaches programming concepts through a civilization-building simulation, making coding accessible and fun.",
69+
image: "/placeholder.svg?height=400&width=600",
70+
tags: ["Education", "Game Development", "Programming"],
71+
link: "https://example.com/code-civilization",
72+
github: "https://github.com/codejedi/code-civilization",
73+
featured: false,
74+
},
75+
]
1176

1277
// Return the projects data as JSON
1378
return NextResponse.json({ projects }, { status: 200 })

app/api/skills/route.ts

Lines changed: 51 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,58 @@
11
import { NextResponse } from "next/server"
2-
import fs from "fs"
3-
import path from "path"
42

53
export async function GET() {
64
try {
7-
// Read the skills data from the JSON file
8-
const dataFilePath = path.join(process.cwd(), "data", "skills.json")
9-
const fileContents = fs.readFileSync(dataFilePath, "utf8")
10-
const skills = JSON.parse(fileContents)
5+
// Hard-coded skills data
6+
const skills = [
7+
{
8+
id: "programming",
9+
title: "Programming Languages",
10+
icon: "Code",
11+
skills: ["C, C++, C#, Java, R and Python", "JavaScript, TypeScript, HTML, CSS", "SQL, NoSQL"],
12+
},
13+
{
14+
id: "developer-tools",
15+
title: "Developer Tools",
16+
icon: "Terminal",
17+
skills: [
18+
"Pycharm, Eclipse, Jupyter Notebook",
19+
"XCode, Visual Studio, VSCode, Code Blocks",
20+
"Robot Framework, Git, GitHub",
21+
],
22+
},
23+
{
24+
id: "libraries",
25+
title: "Libraries & Frameworks",
26+
icon: "Library",
27+
skills: [
28+
"OpenCV, TensorFlow, PyTorch, Scikit-learn",
29+
"Seaborn, Selenium, Pandas, NumPy, Matplotlib",
30+
"OpenAIGym, Nengo, React, Next.js",
31+
],
32+
},
33+
{
34+
id: "devops",
35+
title: "DevOps",
36+
icon: "Server",
37+
skills: [
38+
"CI/CD, GitHub Actions, CodePipeline",
39+
"Jenkins, Ansible, Docker, Kubernetes",
40+
"Infrastructure as Code, Terraform",
41+
],
42+
},
43+
{
44+
id: "database",
45+
title: "Database",
46+
icon: "Database",
47+
skills: ["PostgreSQL, MySQL, Aurora", "MongoDB, DynamoDB"],
48+
},
49+
{
50+
id: "cloud",
51+
title: "Cloud",
52+
icon: "Cloud",
53+
skills: ["AWS (EC2, S3, Lambda, etc.)", "GCP, Azure"],
54+
},
55+
]
1156

1257
// Return the skills data as JSON
1358
return NextResponse.json({ skills }, { status: 200 })

app/api/work-experience/route.ts

Lines changed: 58 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,65 @@
11
import { NextResponse } from "next/server"
2-
import fs from "fs"
3-
import path from "path"
42

53
export async function GET() {
64
try {
7-
// Read the work experience data from the JSON file
8-
const dataFilePath = path.join(process.cwd(), "data", "work-experience.json")
9-
const fileContents = fs.readFileSync(dataFilePath, "utf8")
10-
const workExperience = JSON.parse(fileContents)
5+
// Hard-coded work experience data
6+
const workExperience = [
7+
{
8+
id: "opentext-2024",
9+
title: "Software Developer Intern - DevOps (Hybrid)",
10+
company: "Open Text Corporation",
11+
location: "Ottawa, ON, Canada",
12+
startDate: "2024-09-03",
13+
endDate: "2024-12-20",
14+
link: "https://www.opentext.com/",
15+
emoji: "💎",
16+
year: "2024",
17+
},
18+
{
19+
id: "sunlife-2024",
20+
title: "Cloud Engineer Intern (Remote)",
21+
company: "Sun Life Financial",
22+
location: "Toronto, ON, Canada",
23+
startDate: "2024-05-06",
24+
endDate: "2024-08-30",
25+
link: "https://www.sunlife.ca",
26+
emoji: "💎",
27+
year: "2024",
28+
},
29+
{
30+
id: "oanda-2023",
31+
title: "Site Reliability Engineer Intern (Remote)",
32+
company: "OANDA (Canada) Corporation.",
33+
location: "Toronto, ON, Canada",
34+
startDate: "2023-01-09",
35+
endDate: "2023-04-21",
36+
link: "https://oanda.com",
37+
emoji: "💎",
38+
year: "2023",
39+
},
40+
{
41+
id: "carta-2022",
42+
title: "Site Reliability Engineer Intern (Hybrid)",
43+
company: "Carta Maple Technologies Inc.",
44+
location: "Waterloo, ON, Canada",
45+
startDate: "2022-05-02",
46+
endDate: "2022-08-26",
47+
link: "https://carta.com",
48+
emoji: "💎",
49+
year: "2022",
50+
},
51+
{
52+
id: "virtamove-2021",
53+
title: "Software Development Co-op Student (Remote)",
54+
company: "VirtaMove Corp.",
55+
location: "Ottawa, ON, Canada",
56+
startDate: "2021-05-06",
57+
endDate: "2021-08-27",
58+
link: "https://www.virtamove.com",
59+
emoji: "💎",
60+
year: "2021",
61+
},
62+
]
1163

1264
// Return the work experience data as JSON
1365
return NextResponse.json({ workExperience }, { status: 200 })

0 commit comments

Comments
 (0)