diff --git a/package-lock.json b/package-lock.json index 63bae9c..4319b36 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@astrojs/mdx": "^4.3.0", "@astrojs/svelte": "^7.1.0", "@tailwindcss/vite": "^4.1.8", - "astro": "^5.9.1", + "astro": "^5.10.0", "caniuse-lite": "^1.0.30001698", "moment": "^2.30.1", "moment-timezone": "^0.6.0", @@ -38,9 +38,9 @@ } }, "node_modules/@astrojs/compiler": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.12.1.tgz", - "integrity": "sha512-WDSyVIiz7sNcJcCJxJFITu6XjfGhJ50Z0auyaWsrM+xb07IlhBLFtQuDkNy0caVHWNcKTM2LISAaHhgkRqGAVg==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.12.2.tgz", + "integrity": "sha512-w2zfvhjNCkNMmMMOn5b0J8+OmUaBL1o40ipMvqcG6NRpdC+lKxmTi48DT8Xw0SzJ3AfmeFLB45zXZXtmbsjcgw==", "license": "MIT" }, "node_modules/@astrojs/internal-helpers": { @@ -1587,12 +1587,12 @@ } }, "node_modules/astro": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.9.1.tgz", - "integrity": "sha512-wxoJcTbuDZNFSv6EaL0PAlrp0Wx6VnOAULCXvy0scsV70oWMeUkdxuBxfO54JxO5Qgyvwj9h99y6E0elqOpGtA==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.10.0.tgz", + "integrity": "sha512-g/t54kVzQnFVijs+GbbbX/NBAFTl/3yNAEA/AQYq4FumLLVv7n4BIF+jKhcPGn9iFGyT1Cjvr7KB/qYyNvHEIg==", "license": "MIT", "dependencies": { - "@astrojs/compiler": "^2.12.1", + "@astrojs/compiler": "^2.12.2", "@astrojs/internal-helpers": "0.6.1", "@astrojs/markdown-remark": "6.3.2", "@astrojs/telemetry": "3.3.0", diff --git a/package.json b/package.json index 2f242ba..21b1a83 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "@astrojs/mdx": "^4.3.0", "@astrojs/svelte": "^7.1.0", "@tailwindcss/vite": "^4.1.8", - "astro": "^5.9.1", + "astro": "^5.10.0", "caniuse-lite": "^1.0.30001698", "moment": "^2.30.1", "moment-timezone": "^0.6.0", diff --git a/src/components/sections/BackToBlogs.astro b/src/components/blog/BackToBlogs.astro similarity index 100% rename from src/components/sections/BackToBlogs.astro rename to src/components/blog/BackToBlogs.astro diff --git a/src/components/sections/ContactComponent.svelte b/src/components/contact/ContactComponent.svelte similarity index 91% rename from src/components/sections/ContactComponent.svelte rename to src/components/contact/ContactComponent.svelte index 4286817..7313b3c 100644 --- a/src/components/sections/ContactComponent.svelte +++ b/src/components/contact/ContactComponent.svelte @@ -1,12 +1,12 @@
Get in Touch with me!
diff --git a/src/components/sections/ExperienceComponent.astro b/src/components/experience/ExperienceComponent.astro similarity index 96% rename from src/components/sections/ExperienceComponent.astro rename to src/components/experience/ExperienceComponent.astro index 611498a..46b4ba0 100644 --- a/src/components/sections/ExperienceComponent.astro +++ b/src/components/experience/ExperienceComponent.astro @@ -1,6 +1,6 @@ --- -import Card from "../elements/Card.astro"; -import Line from "../elements/NetworkLine.astro"; +import Card from "../global/Card.astro"; +import Line from "../global/NetworkLine.astro"; ---
diff --git a/src/components/sections/MoreExperience.astro b/src/components/experience/MoreExperience.astro similarity index 90% rename from src/components/sections/MoreExperience.astro rename to src/components/experience/MoreExperience.astro index d1c1dc3..8340ef4 100644 --- a/src/components/sections/MoreExperience.astro +++ b/src/components/experience/MoreExperience.astro @@ -1,6 +1,6 @@ --- -import Card from "../elements/Card.astro"; -import Line from "../elements/NetworkLine.astro"; +import Card from "../global/Card.astro"; +import Line from "../global/NetworkLine.astro"; ---
diff --git a/src/components/elements/Card.astro b/src/components/global/Card.astro similarity index 100% rename from src/components/elements/Card.astro rename to src/components/global/Card.astro diff --git a/src/components/sections/FooterComponent.astro b/src/components/global/FooterComponent.astro similarity index 100% rename from src/components/sections/FooterComponent.astro rename to src/components/global/FooterComponent.astro diff --git a/src/components/sections/NavBar.astro b/src/components/global/NavBar.astro similarity index 100% rename from src/components/sections/NavBar.astro rename to src/components/global/NavBar.astro diff --git a/src/components/elements/NetworkLine.astro b/src/components/global/NetworkLine.astro similarity index 100% rename from src/components/elements/NetworkLine.astro rename to src/components/global/NetworkLine.astro diff --git a/src/components/sections/IntroComponent.svelte b/src/components/home/IntroComponent.svelte similarity index 99% rename from src/components/sections/IntroComponent.svelte rename to src/components/home/IntroComponent.svelte index 7e77127..a5c846c 100644 --- a/src/components/sections/IntroComponent.svelte +++ b/src/components/home/IntroComponent.svelte @@ -1,6 +1,6 @@ + +
+
+ + +
+
diff --git a/src/components/projects/Project.astro b/src/components/projects/Project.astro new file mode 100644 index 0000000..648ce82 --- /dev/null +++ b/src/components/projects/Project.astro @@ -0,0 +1,144 @@ +--- +import { Image } from "astro:assets"; + +interface Tag { + text: string; + textColor: string; + bgColor: string; +} + +interface Props { + position?: "left" | "right"; + image?: ImageMetadata; + alt?: string; + href: string; + title: string; + description: string; + label?: string; + tags?: Tag[]; +} + +const { + image, + alt, + href, + title, + description, + label = "View Repository", + tags = [], + position = "left", +} = Astro.props; + +const leftProject = position == "left"; +--- + +
+
+ + { + image && alt && + ( + {alt} + {alt} + ) + } + +
+ +
+
+
+ {label} +
+
+

+ {title} +

+

+ {description} +

+
+ { + tags.map((tag) => ( +
+ {tag.text} +
+ )) + } +
+
+
+ + diff --git a/src/components/projects/ProjectsComponent.astro b/src/components/projects/ProjectsComponent.astro new file mode 100644 index 0000000..f30423d --- /dev/null +++ b/src/components/projects/ProjectsComponent.astro @@ -0,0 +1,156 @@ +--- +import TaskWidget from "./TaskWidget.svelte"; +import CoworkingGuide from "../images/projects/coworking-guide.webp"; +import Wnrs from "../images/projects/wnrs.webp"; +import TwitchPlays from "../images/projects/twitchplays.webp"; +import Project from "./Project.astro"; +--- + +
+
+ + + + + + + + +
+
+ + diff --git a/src/components/sections/TaskWidget.svelte b/src/components/projects/TaskWidget.svelte similarity index 55% rename from src/components/sections/TaskWidget.svelte rename to src/components/projects/TaskWidget.svelte index 607fc1a..80ab1c9 100644 --- a/src/components/sections/TaskWidget.svelte +++ b/src/components/projects/TaskWidget.svelte @@ -113,24 +113,24 @@ task: "anki flashcards", }, ]; + + interface Props { + classList: string; + } + + let { classList }: Props = $props(); -
+
-
+
Hover here! 0/100+ @@ -160,84 +160,9 @@
-
-
- Hover here! - 0/100+ -
-
-
- {#each streamers as { streamer, task }} -
- O {streamer} : {task} -
- {/each} -
-
- {#each streamers as { streamer, task }} -
- O {streamer} : {task} -
- {/each} -
-
-
-
diff --git a/src/components/sections/MoreSkills.astro b/src/components/sections/MoreSkills.astro deleted file mode 100644 index adbb4b5..0000000 --- a/src/components/sections/MoreSkills.astro +++ /dev/null @@ -1,103 +0,0 @@ ---- -import Card from "../elements/Card.astro"; -import Line from "../elements/NetworkLine.astro"; ---- - -
-
-
- -
- -
-
-

Content Creation

-
-
-

- Since I was little, I loved watching YouTube videos - and the idea of bringing joy and laughter to a wider - audience. Thus, I began my journey in content - creation through YouTube videos and Twitch - streaming. I typically do coworking & study streams - to keep myself accountable and encourage - productivity amongst viewers. I also do software and - game development streams where I showcase my - workflow. -

-
-
- OBS -
-
- DaVinci Resolve -
-
- Twitch -
-
- YouTube -
-
-
-
-
- -
- -
-
-

- Mobile Development -

-
-
-

- In my Mobile App Development unit in University, I - am tasked to develop Android apps using Android - Studio. The final app project I had developed was a - LLM-powered quiz app with features such as choosing - your own topics, viewing your question attempt - history afterwards, and upgrading your tier with - Google Pay. -

-

- The marking tutor was impressed with my work, and - offered me to join a research lab because I had good - potential. -

-
-
- Android -
-
- Java -
-
- Kotlin -
-
-
-
-
-
-
-
diff --git a/src/components/sections/ProjectsComponent.astro b/src/components/sections/ProjectsComponent.astro deleted file mode 100644 index 55e6b49..0000000 --- a/src/components/sections/ProjectsComponent.astro +++ /dev/null @@ -1,306 +0,0 @@ ---- -import TaskWidget from "./TaskWidget.svelte"; -import { Image } from "astro:assets"; -import CoworkingGuide from "./images/projects/coworking-guide.webp"; -import Wnrs from "./images/projects/wnrs.webp"; -import TwitchPlays from "./images/projects/twitchplays.webp"; ---- - -
-
-
-
- coworking guide - coworking guide - -
- -
-

- Coworking Guide -

-

- A guide to coworking streams for streamers, covers wide - range of topics from tips on how to get started with setting - up stream to how to grow your audience! -

-
-
- Astro -
-
- TypeScript -
-
- Markdown -
-
-
-
-
-
-

- Chat-Task-Tic Widget -

-

- Used by 100+ Twitch streamers, allow viewers and streamers - to add their own tasks to the widget for accountability! - Easy to setup and the customization possibilities are - endless! -

-
-
- HTML -
-
- CSS -
-
- Javascript -
-
-
- - -
- -
-
- Hex Guess - Hex Guess - -
- -
-

- We're Not Really Strangers -

-

- Otherwise abbreviated as "WNRS", this is a digital - adaptation of the popular card game designed to foster - meaningful connections through engaging questions and - prompts. -

-
-
- React -
-
- Typescript -
-
-
-
-
-
-

- Twitch Plays X -

-

- Allow Twitch chatters to play games such as Pokemon! - Chatters can enter messages such as "up up down down left - right B A" and the Python program will trigger the - corresponding keypresses. -

-
-
- Python -
-
- win32API -
-
-
- -
- Twitch Plays X - Twitch Plays X - -
-
-
-
- - diff --git a/src/components/sections/SkillsComponent.astro b/src/components/sections/SkillsComponent.astro deleted file mode 100644 index a6309e5..0000000 --- a/src/components/sections/SkillsComponent.astro +++ /dev/null @@ -1,217 +0,0 @@ ---- -import Card from "../elements/Card.astro"; -import Line from "../elements/NetworkLine.astro"; ---- - -
-

Skills

-
-
- -
-
-

Frontend Development

-
-
-

- I started my web development journey by building - websites and widgets using vanilla HTML, CSS, Javascript - and Express. As I learnt more about the fundamentals of - web development, I delved into frontend frameworks such - as Svelte, React and Astro. -

-
-
- HTML -
-
- CSS -
-
- Javascript -
-
- TypeScript -
-
- Svelte -
-
- React -
-
- Vue -
-
- WordPress -
-
- Astro -
-
- HTMX -
-
- TailwindCSS -
-
-
-
- - -
-
-

Backend Development

-
-
-

- With experience in various programming languages, I - learnt to setup databases, implement routing and - organized my code to ensure maintainability and - scalability. -

-
-
- Python -
-
- C# -
-
- Java -
-
- Kotlin -
-
- PHP -
-
- Go -
-
- Rust -
-
- PostgreSQL -
-
- MySQL -
-
- MongoDB -
-
-
-
- - -
-
-

Data Science

-
-
-

- My first exposure to data science was through learning - Computer Vision. I learn how to use OpenCV in Python to - open a webcam and detect faces. Later on, I took a - Diploma course that is focused in data science, where I - learnt how to do the fundamentals of data science such - as extracting, transforming and loading data, as well as - data visualisation. -

-
-
- Python -
-
- R -
-
- OpenCV -
-
- SAS -
-
- MySQL -
-
- Pandas -
-
- Selenium -
-
- BeautifulSoup4 -
-
-
-
-
-
-
diff --git a/src/components/skills/MoreSkills.astro b/src/components/skills/MoreSkills.astro new file mode 100644 index 0000000..12d12a1 --- /dev/null +++ b/src/components/skills/MoreSkills.astro @@ -0,0 +1,72 @@ +--- +import Card from "../global/Card.astro"; +import Line from "../global/NetworkLine.astro"; +import Skill from "./Skill.astro"; +--- + +
+
+
+ + + Since I was little, I loved watching YouTube videos and the idea + of bringing joy and laughter to a wider audience. Thus, I began + my journey in content creation through YouTube videos and Twitch + streaming. I typically do coworking & study streams to keep + myself accountable and encourage productivity amongst viewers. I + also do software and game development streams where I showcase + my workflow. + + +

+ In my Mobile App Development unit in University, I am tasked + to develop Android apps using Android Studio. The final app + project I had developed was a LLM-powered quiz app with + features such as choosing your own topics, viewing your + question attempt history afterwards, and upgrading your tier + with Google Pay. +

+

+ The marking tutor was impressed with my work, and offered me + to join a research lab because I had good potential. +

+
+
+
+
diff --git a/src/components/skills/Skill.astro b/src/components/skills/Skill.astro new file mode 100644 index 0000000..9a0c787 --- /dev/null +++ b/src/components/skills/Skill.astro @@ -0,0 +1,63 @@ +--- +import Card from "../global/Card.astro"; + +interface Tag { + text: string; + bgColor: string; + textColor?: string; + hoverTextColor?: string; +} + +interface Props { + title: string; + tags?: Tag[]; + primaryColor: string; +} + +const { title, tags, primaryColor } = Astro.props; +--- + +
+ +
+
+

{title}

+
+
+

+ +

+
+ { + tags?.map((tag, index) => ( +
+ {tag.text} +
+ )) + } +
+
+
+
+ + diff --git a/src/components/skills/SkillsComponent.astro b/src/components/skills/SkillsComponent.astro new file mode 100644 index 0000000..eb9e443 --- /dev/null +++ b/src/components/skills/SkillsComponent.astro @@ -0,0 +1,172 @@ +--- +import Card from "../global/Card.astro"; +import Line from "../global/NetworkLine.astro"; +import Skill from "./Skill.astro"; +--- + +
+

Skills

+
+
+ + I started my web development journey by building websites and + widgets using vanilla HTML, CSS, Javascript and Express. As I + learnt more about the fundamentals of web development, I delved + into frontend frameworks such as Svelte, React and Astro. + + + + + With experience in various programming languages, I learnt to + setup databases, implement routing and organized my code to + ensure maintainability and scalability. + + + + My first exposure to data science was through learning Computer + Vision. I learn how to use OpenCV in Python to open a webcam and + detect faces. Later on, I took a Diploma course that is focused + in data science, where I learnt how to do the fundamentals of + data science such as extracting, transforming and loading data, + as well as data visualisation. + +
+
+
diff --git a/src/components/elements/Socials.svelte b/src/components/socials/Socials.svelte similarity index 100% rename from src/components/elements/Socials.svelte rename to src/components/socials/Socials.svelte diff --git a/src/components/sections/StreamSchedule.svelte b/src/components/socials/StreamSchedule.svelte similarity index 100% rename from src/components/sections/StreamSchedule.svelte rename to src/components/socials/StreamSchedule.svelte diff --git a/src/components/sections/WhatIDoComponent.astro b/src/components/what-i-do/WhatIDoComponent.astro similarity index 97% rename from src/components/sections/WhatIDoComponent.astro rename to src/components/what-i-do/WhatIDoComponent.astro index 1141af6..0423e3e 100644 --- a/src/components/sections/WhatIDoComponent.astro +++ b/src/components/what-i-do/WhatIDoComponent.astro @@ -1,5 +1,5 @@ --- -import Card from "../elements/Card.astro"; +import Card from "../global/Card.astro"; ---
diff --git a/src/pages/blog/[...slug].astro b/src/pages/blog/[...slug].astro index 2c76319..6e662b5 100644 --- a/src/pages/blog/[...slug].astro +++ b/src/pages/blog/[...slug].astro @@ -1,15 +1,15 @@ --- import { getCollection } from "astro:content"; -import BackToBlogs from "../../components/sections/BackToBlogs.astro"; +import BackToBlogs from "../../components/blog/BackToBlogs.astro"; import Layout from "../../layouts/Layout.astro"; -import Footer from "../../components/sections/FooterComponent.astro"; +import Footer from "../../components/global/FooterComponent.astro"; export async function getStaticPaths() { - const blogEntries = await getCollection("blog"); - return blogEntries.map((entry) => ({ - params: { slug: entry.slug }, - props: { entry }, - })); + const blogEntries = await getCollection("blog"); + return blogEntries.map((entry) => ({ + params: { slug: entry.slug }, + props: { entry }, + })); } const { entry } = Astro.props; @@ -17,118 +17,118 @@ const { Content } = await entry.render(); --- - -
-

{entry.data.title}

-

- Published - { - new Date(entry.data.pubDate).toLocaleDateString("en-UK", { - day: "numeric", - month: "long", - year: "numeric", - }) - } -

-

by {entry.data.author}

-

{entry.data.description}

+ +
+

{entry.data.title}

+

+ Published + { + new Date(entry.data.pubDate).toLocaleDateString("en-UK", { + day: "numeric", + month: "long", + year: "numeric", + }) + } +

+

by {entry.data.author}

+

{entry.data.description}

-
- { - entry.data.tags?.map((tag) => ( -
- {tag} -
- )) - } -
+
+ { + entry.data.tags?.map((tag) => ( +
+ {tag} +
+ )) + } +
-
+
- -
-
-
-
+ +
+
+
+
diff --git a/src/pages/blog/index.astro b/src/pages/blog/index.astro index 2072ab2..ed84bac 100644 --- a/src/pages/blog/index.astro +++ b/src/pages/blog/index.astro @@ -1,82 +1,81 @@ --- -import NavBar from "../../components/sections/NavBar.astro"; import Layout from "../../layouts/Layout.astro"; -import Card from "../../components/elements/Card.astro"; -import Footer from "../../components/sections/FooterComponent.astro"; +import Card from "../../components/global/Card.astro"; +import Footer from "../../components/global/FooterComponent.astro"; import { getCollection } from "astro:content"; const blogPosts = await getCollection("blog"); --- -
-

Blog

-
-
-

- This is where I upload my blogs. No paywalls, no ads, no - bullshit. -

-
+
+

Blog

+
+
+

+ This is where I upload my blogs. No paywalls, no ads, no + bullshit. +

+
- - -
-
-
-
-
+ + +
+
+
+
+
diff --git a/src/pages/contact.astro b/src/pages/contact.astro index e96d77b..a3b4ce9 100644 --- a/src/pages/contact.astro +++ b/src/pages/contact.astro @@ -1,9 +1,9 @@ --- -import NavBar from "../components/sections/NavBar.astro"; +import NavBar from "../components/global/NavBar.astro"; import Layout from "../layouts/Layout.astro"; -import ContactComponent from "../components/sections/ContactComponent.svelte"; -import Card from "../components/elements/Card.astro"; -import Footer from "../components/sections/FooterComponent.astro"; +import ContactComponent from "../components/contact/ContactComponent.svelte"; +import Card from "../components/global/Card.astro"; +import Footer from "../components/global/FooterComponent.astro"; --- - -
- - -
-