Skip to content

Commit af6a1c7

Browse files
Merge pull request #7 from justforworkandstuff/feat/update_cv
feat: updated cv and latest experience
2 parents b96c9f7 + abfa41e commit af6a1c7

7 files changed

Lines changed: 72 additions & 78 deletions

File tree

CHANGELOG.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,20 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [1.0.1] - 2025-03-19
8+
## [1.1.2] - 2025-07-06
9+
10+
### Updated
11+
12+
- CV version
13+
- Experience list data
14+
- UI view for mobile
15+
16+
## [1.1.1] - 2025-03-29
17+
18+
### Added
19+
- 'Download CV' feature
20+
21+
## [1.0.1] - 2025-03-19
922

1023
### Fixed
1124

my-app/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

my-app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "my-app",
3-
"version": "1.1.1",
3+
"version": "1.1.2",
44
"private": true,
55
"dependencies": {
66
"@emotion/react": "^11.14.0",

my-app/public/cv_2025.pdf

22.1 KB
Binary file not shown.

my-app/src/modules/home/useUserService.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const useUserService = () => {
88
id: 1,
99
title: "Agmo Studio",
1010
startDate: ".2022",
11-
endDate: "2025.",
11+
endDate: "",
1212
role: "Software Developer | Mobile & Full-Stack Development",
1313
location: "Petaling Jaya, Malaysia",
1414
description: [
@@ -20,6 +20,19 @@ const useUserService = () => {
2020
"• Manage multiple projects, ensuring timely delivery and quality standards.",
2121
],
2222
},
23+
{
24+
id: 2,
25+
title: "dtcpay",
26+
startDate: ".2025",
27+
endDate: "present.",
28+
role: "Flutter Engineer | Mobile Development",
29+
location: "Kuala Lumpur, Malaysia",
30+
description: [
31+
"• Build and maintain the Flutter-based fintech app with focus on performance and stability.",
32+
"• Collaborate with product, design (Figma), and backend teams to deliver user-centric features.",
33+
"• Ensure app quality through testing, debugging, and ongoing performance improvements.",
34+
]
35+
}
2336
];
2437

2538
const userData: UserDataType = {

my-app/src/modules/journey/components/experienceCardMobile.tsx

Lines changed: 41 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { motion } from "motion/react";
22
import { SkillsType } from "shared/constants/enums";
33
import ExperienceType from "../../../shared/types/experienceType";
4-
import ExperienceYearItemMobile from "./experienceYearItemMobile";
54

65
interface ExperienceCardMobileProps {
76
isThemeLight: boolean;
@@ -29,64 +28,53 @@ const ExperienceCardMobile = (props: ExperienceCardMobileProps) => {
2928
initial={{ opacity: 0, y: -20 }}
3029
animate={{ opacity: 1, y: 0 }}
3130
transition={{ duration: 0.5, delay: 0.2, ease: "easeIn" }}
32-
className={`w-full h-full flex items-start justify-start text-base leading-5 ${
33-
isThemeLight ? "text-black" : "text-gray-300"
34-
}`}
31+
className={`relative w-full h-full text-base leading-5 ${isThemeLight ? "text-black" : "text-gray-300"
32+
}`}
3533
>
36-
{experienceList.map((experience, index) => {
37-
const prevYear = index > 0 ? experienceList[index - 1].endDate : null;
38-
const currentYear = experience.endDate;
39-
const isLastItem = index === experienceList.length - 1;
34+
{/* Vertical timeline line */}
35+
<div
36+
className={`absolute top-0 bottom-0 left-0 w-px ${isThemeLight ? "bg-black" : "bg-white"
37+
}`}
38+
/>
4039

40+
{experienceList.map((experience) => {
4141
return (
42-
<div key={experience.id} className="flex flex-row pt-6">
43-
{/* Border */}
44-
<div
45-
className={`flex-1 border-r-2 border-double ${
46-
isThemeLight ? "border-black" : "border-white"
47-
}`}
48-
></div>
49-
50-
{/* Year */}
51-
<div className="flex flex-col flex-1 justify-between mr-4 mt-4 mb-4">
52-
{/* End Date */}
53-
{prevYear !== currentYear && (
54-
<ExperienceYearItemMobile
55-
isThemeLight={isThemeLight}
56-
date={currentYear}
57-
/>
58-
)}
59-
60-
{/* Start Date */}
61-
<ExperienceYearItemMobile
62-
isThemeLight={isThemeLight}
63-
date={experience.startDate}
64-
/>
65-
</div>
66-
67-
{/* Item */}
68-
<div
69-
className={`flex flex-col items-center justify-start min-h-full`}
70-
>
71-
<div
72-
key={experience.id}
73-
className={`${isLastItem ? "" : "pb-4"}`}
42+
<div
43+
key={experience.id}
44+
className="flex flex-row items-stretch mb-4 mt-4 pl-6 relative"
45+
>
46+
{/* Date Column (endDate on top, startDate on bottom) */}
47+
<div className="absolute left-2 top-0 h-full flex flex-col justify-between items-center">
48+
<span
49+
className="text-xs font-bold"
50+
style={{ writingMode: "vertical-rl", textOrientation: "upright" }}
7451
>
75-
{/* Experience Title & Role */}
76-
<div className="flex flex-row items-center justify-start mb-4 leading-4">
77-
<h1 className="text-xl font-bold border-r-2 border-gray-400 pr-2">
78-
{experience.title}
79-
</h1>
80-
<h3 className="pl-2 text-base">{experience.role}</h3>
81-
</div>
52+
{experience.endDate}
53+
</span>
54+
<span
55+
className="text-xs"
56+
style={{ writingMode: "vertical-rl", textOrientation: "upright" }}
57+
>
58+
{experience.startDate}
59+
</span>
60+
</div>
8261

83-
{/* Experience Details */}
84-
{experience.description.map((item, index) => (
85-
<p key={index} className="mb-2">
86-
{highlightText(item, Object.values(SkillsType))}
87-
</p>
88-
))}
62+
{/* Experience Content */}
63+
<div className="flex flex-col flex-1 ml-8">
64+
{/* Title & Role */}
65+
<div className="flex flex-row items-center mb-2">
66+
<h1 className="text-lg font-bold border-r-2 border-gray-400 pr-2">
67+
{experience.title}
68+
</h1>
69+
<h3 className="pl-2 text-sm">{experience.role}</h3>
8970
</div>
71+
72+
{/* Description */}
73+
{experience.description.map((item, i) => (
74+
<p key={i} className="mb-2">
75+
{highlightText(item, Object.values(SkillsType))}
76+
</p>
77+
))}
9078
</div>
9179
</div>
9280
);

my-app/src/modules/journey/components/experienceYearItemMobile.tsx

Lines changed: 0 additions & 20 deletions
This file was deleted.

0 commit comments

Comments
 (0)