updated experience

This commit is contained in:
liyunze 2026-03-31 23:29:17 +11:00
parent b2b0e2b036
commit b2abd4eecd

View file

@ -53,16 +53,27 @@ function ExperienceTabContent() {
className: "pb-5", className: "pb-5",
})} })}
{Position({ {Position({
title: "Full Stack Developer (Part Time)", title: "Student Project Frontend Lead",
dateRange: "Dec 2024 - Feb 2026", dateRange: "Mar 2026 - Now",
country: "Malaysia", country: "Australia",
highlights: [ highlights: [
"Led a team to develop Astro websites with Payload CMS backend implementation.", "Led the migration from 40+ Javascript files to Typescript while preserving original functionality with minor bug fixes.",
"Managed Github Actions CI/CD and deployments.", "Improved navigation adhering to UX principles.",
], ],
className: "pb-5", className: "pb-5",
})} })}
{Position({ {Position({
title: "Lead Full Stack Developer (Part Time)",
dateRange: "Dec 2024 - Feb 2026",
country: "Malaysia",
highlights: [
"Led a team to develop Astro websites with Payload CMS backend implementation.",
"Translated Figma wireframes into website implementation efficiently.",
"Managed Github Actions CI/CD and deployments.",
],
className: "pb-5",
})}
{/* {Position({
title: "Frontend Web Developer Intern", title: "Frontend Web Developer Intern",
dateRange: "Jan 2024 - Apr 2024", dateRange: "Jan 2024 - Apr 2024",
country: "Malaysia", country: "Malaysia",
@ -71,7 +82,7 @@ function ExperienceTabContent() {
"Used lazy-loading to optimise page load speeds. ", "Used lazy-loading to optimise page load speeds. ",
"Ensured CMS allowed easy yet flexible customisations for clients.", "Ensured CMS allowed easy yet flexible customisations for clients.",
], ],
})} })} */}
</> </>
); );
} }
@ -210,53 +221,58 @@ const lineMoveCSS = `
`; `;
function Position({ function Position({
title, title,
dateRange, institution,
country, dateRange,
summary = "", country,
className = "", summary = "",
highlights = [], className = "",
highlights = [],
}: { }: {
title: string; title: string;
institution?: string; institution?: string;
dateRange: string; dateRange: string;
country: string; country: string;
summary?: string; summary?: string;
className?: string; className?: string;
highlights?: Array<string>; highlights?: Array<string>;
}) { }) {
return ( return (
<> <>
<style>{lineMoveCSS}</style> <style>{lineMoveCSS}</style>
<div className="position-el flex flex-row items-start gap-3"> <div className="position-el flex flex-row items-start gap-3">
<div className="flex flex-col items-center justify-start gap-2 self-stretch pt-2"> <div className="flex flex-col items-center justify-start gap-2 self-stretch pt-2">
<div className="bg-accent h-2 w-2 rounded-full"></div> <div className="bg-accent h-2 w-2 rounded-full"></div>
<div className="w-[1px] flex-grow bg-gray-700"></div> <div className="w-[1px] flex-grow bg-gray-700"></div>
</div> </div>
<div className={className}> <div className={className}>
<h2 className="text-lg font-bold">{title}</h2> <h2 className="text-lg font-bold">{title}</h2>
<div className="mt-1 flex flex-col items-start justify-start gap-1"> <div className="mt-1 flex flex-col items-start justify-start gap-1">
<div className="text-muted-foreground flex flex-row items-center justify-start gap-1 bg-size-[100%_200%] text-xs"> <div className="text-muted-foreground flex flex-row items-center justify-start gap-1 text-xs">
{CalendarIcon()} {dateRange} <CalendarIcon /> {dateRange}
</div> </div>
<div className="text-muted-foreground mb-2 flex w-full flex-row items-center justify-start gap-5 text-xs"> <div className="text-muted-foreground mb-2 flex w-full flex-row items-center justify-start gap-5 text-xs">
<div className="flex flex-row items-center justify-start gap-1"> {institution && (
{LocationIcon()} {country} <div className="flex flex-row items-center justify-start gap-1">
</div> <BriefCaseIcon /> {institution}
</div> </div>
</div> )}
{
summary && ( <div className="flex flex-row items-center justify-start gap-1">
<p className="text-base">{summary}</p> <LocationIcon /> {country}
) </div>
} </div>
<ul className="list-inside list-disc">
{highlights.map((highlight, i) => ( {summary && <p className="text-base">{summary}</p>}
<li key={`highlight-{i}`}>{highlight}</li>
))} <ul className="list-inside list-disc">
</ul> {highlights.map((highlight, i) => (
</div> <li key={`highlight-${i}`}>{highlight}</li>
</div> ))}
</> </ul>
); </div>
</div>
</div>
</>
);
} }