Skip to content

Commit e88b86f

Browse files
committed
adding content and images
1 parent b359501 commit e88b86f

File tree

8 files changed

+62
-20
lines changed

8 files changed

+62
-20
lines changed

public/education-one.png

307 KB
Loading

public/education-two.png

491 KB
Loading

public/experience-one.png

21.8 KB
Loading

public/experience-two.png

57.4 KB
Loading

src/components/ProjectCard.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ interface Project {
1111
export default function ProjectCard({ project }: { project: Project }) {
1212
return (
1313
<div className="rounded-2xl shadow-soft p-8 bg-card flex flex-col items-center">
14-
<img src={project.image} alt={project.name} className="w-full h-80 object-cover rounded-xl mb-6 border-2 border-primary" />
14+
<img src={project.image} alt={project.name} className="w-full aspect-[16/9] object-cover rounded-xl mb-6 border-2 border-primary" />
1515
<h3 className="text-2xl font-bold mb-2 text-center">{project.name}</h3>
1616
<p className="text-muted-foreground mb-4 text-center">{project.description}</p>
1717
<div className="flex flex-wrap gap-2 mb-4 justify-center">

src/components/TimelineItem.tsx

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ interface ExperienceItem {
55
role: string;
66
period: string;
77
location: string;
8+
image?: string;
89
bullets: string[];
910
}
1011

@@ -13,17 +14,30 @@ export default function TimelineItem({ item }: { item: ExperienceItem }) {
1314
<motion.div initial={{ x: -40, opacity: 0 }} animate={{ x: 0, opacity: 1 }} transition={{ duration: 0.4 }} className="relative pl-8">
1415
<div className="absolute left-0 top-2 w-4 h-4 bg-primary rounded-full shadow-soft" />
1516
<div className="bg-card rounded-2xl p-6 shadow-soft">
16-
<div className="flex justify-between items-center mb-2">
17-
<span className="font-semibold text-lg">{item.company}</span>
18-
<span className="text-sm text-muted-foreground">{item.period}</span>
17+
<div className="flex flex-col md:flex-row gap-6">
18+
{item.image && (
19+
<div className="flex-shrink-0">
20+
<img
21+
src={item.image}
22+
alt={`${item.company} logo`}
23+
className="w-16 h-16 object-contain rounded-xl border-2 border-primary/20 bg-muted/10"
24+
/>
25+
</div>
26+
)}
27+
<div className="flex-1">
28+
<div className="flex justify-between items-center mb-2">
29+
<span className="font-semibold text-lg">{item.company}</span>
30+
<span className="text-sm text-muted-foreground">{item.period}</span>
31+
</div>
32+
<div className="text-primary font-medium mb-1">{item.role}</div>
33+
<div className="text-sm text-muted-foreground mb-2">{item.location}</div>
34+
<ul className="list-disc ml-4 text-base">
35+
{item.bullets.map((bullet, i) => (
36+
<li key={i}>{bullet}</li>
37+
))}
38+
</ul>
39+
</div>
1940
</div>
20-
<div className="text-primary font-medium mb-1">{item.role}</div>
21-
<div className="text-sm text-muted-foreground mb-2">{item.location}</div>
22-
<ul className="list-disc ml-4 text-base">
23-
{item.bullets.map((bullet, i) => (
24-
<li key={i}>{bullet}</li>
25-
))}
26-
</ul>
2741
</div>
2842
</motion.div>
2943
);

src/data/content.json

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@
2424
"role": "Developer",
2525
"period": "2025 — Present",
2626
"location": "Glasgow, Scotland",
27+
"image": "/experience-one.png",
2728
"bullets": [
28-
"Collaborated with a cross-functional team to design and deliver a next-generation NFC product.",
29+
"Developed an iOS app that uses NFC tiles and encrypted payloads to trigger custom shortcuts and actions.",
2930
"Introduced modern DevOps workflows that reduced release friction and improved reliability."
3031
]
3132
},
@@ -34,6 +35,7 @@
3435
"role": "Software Engineer",
3536
"period": "2024 — Present",
3637
"location": "Edinburgh, Scotland",
38+
"image": "/experience-two.png",
3739
"bullets": [
3840
"Developed software to support healthcare technology used in clinical environments.",
3941
"Worked closely with engineers and medical staff to ensure safety-critical compliance."
@@ -44,14 +46,24 @@
4446
{
4547
"University": "Heriot-Watt University",
4648
"Programme": "MEng Software Engineering",
49+
"grade": "On track for First Class Honours",
4750
"period": "2022 — 2027",
51+
"image": "/education-one.png",
4852
"location": "Edinburgh, Scotland"
53+
},
54+
{
55+
"University": "Torquay Boys' Grammar School",
56+
"Programme": "A Levels: Maths, Physics, Computer Science",
57+
"grade": "AAA",
58+
"period": "2020 — 2022",
59+
"image": "/education-two.png",
60+
"location": "Torquay, England"
4961
}
5062
],
5163
"projects": [
5264
{
5365
"name": "Lumina",
54-
"description": "A smart lighting system integrating IoT hardware with a mobile app. Lumina enables users to control and automate lighting through a sleek Flutter interface while syncing with Raspberry Pi-powered devices in real time.",
66+
"description": "A smart home system integrating IoT hardware with a mobile app. Lumina enables users to control and automate devices through a sleek Flutter interface while syncing with a Raspberry Pi-powered hub in real time.",
5567
"tech": ["Flutter", "Firebase", "Socket.IO", "Raspberry Pi"],
5668
"links": {
5769
"demo": "https://demo.url",

src/routes/About.tsx

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,31 @@ export default function About() {
3030
</div>
3131
<div className="mb-6">
3232
<h2 className="text-xl font-semibold mb-4">Education</h2>
33-
<div className="grid gap-4">
33+
<div className="grid gap-6">
3434
{education.map((edu, idx) => (
35-
<div key={idx} className="rounded-2xl bg-card shadow-soft p-4 flex flex-col gap-1">
36-
<div className="font-bold text-lg text-primary">{edu.University}</div>
37-
<div className="flex flex-wrap gap-2 items-center">
38-
<span className="badge badge-outline">{edu.Programme}</span>
39-
<span className="badge badge-secondary">{edu.period}</span>
35+
<div key={idx} className="rounded-2xl bg-card shadow-soft p-6">
36+
<div className="flex flex-col md:flex-row gap-4">
37+
{edu.image && (
38+
<div className="flex-shrink-0">
39+
<img
40+
src={edu.image}
41+
alt={`${edu.University} logo`}
42+
className="w-16 h-16 object-contain rounded-xl border-2 border-primary/20 bg-muted/10"
43+
/>
44+
</div>
45+
)}
46+
<div className="flex-1">
47+
<div className="font-bold text-lg text-primary mb-2">{edu.University}</div>
48+
<div className="font-medium text-base mb-2">{edu.Programme}</div>
49+
<div className="flex flex-wrap gap-2 items-center mb-2">
50+
<span className="badge badge-outline">{edu.period}</span>
51+
{edu.grade && (
52+
<span className="badge badge-secondary">{edu.grade}</span>
53+
)}
54+
</div>
55+
<div className="text-sm text-muted-foreground">{edu.location}</div>
56+
</div>
4057
</div>
41-
<div className="text-sm text-muted-foreground">{edu.location}</div>
4258
</div>
4359
))}
4460
</div>

0 commit comments

Comments
 (0)