diff --git a/package-lock.json b/package-lock.json index 55e254f..3af93c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@astrojs/rss": "^4.0.11", "@astrojs/sitemap": "3.4.0", "@tailwindcss/vite": "^4.1.8", - "astro": "^5.8.0", + "astro": "^5.8.1", "astro-icon": "^1.1.5", "rehype-external-links": "^3.0.0", "tailwindcss": "^4.1.8", @@ -2455,9 +2455,9 @@ } }, "node_modules/astro": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.8.0.tgz", - "integrity": "sha512-G57ELkdIntDiSrucA5lQaRtBOjquaZ9b9NIwoz2f471ZuuJcynLjWgItgBzlrz5UMY4WqnFbVWUCKlJb7nt9bA==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.8.1.tgz", + "integrity": "sha512-lkBg1smMRFW+FQ6i92SgEN53o4+ItRjlRt6Ck+rEjmTcb57Bid7faTNKUQNYuNnxiesTWw3NJDyVPQPbfKDyfw==", "license": "MIT", "dependencies": { "@astrojs/compiler": "^2.11.0", diff --git a/package.json b/package.json index b800357..da264b5 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "@astrojs/rss": "^4.0.11", "@astrojs/sitemap": "3.4.0", "@tailwindcss/vite": "^4.1.8", - "astro": "^5.8.0", + "astro": "^5.8.1", "astro-icon": "^1.1.5", "rehype-external-links": "^3.0.0", "tailwindcss": "^4.1.8", diff --git a/public/assets/icon.png b/public/assets/icon.png deleted file mode 100644 index 397eedc..0000000 Binary files a/public/assets/icon.png and /dev/null differ diff --git a/src/components/CvProjects.astro b/src/components/CvProjects.astro deleted file mode 100644 index a3fbdba..0000000 --- a/src/components/CvProjects.astro +++ /dev/null @@ -1,91 +0,0 @@ ---- -import Link from "@components/Link.astro"; -import { createSlug } from "@lib/utils"; - -const projects = [ - { - id: 1, - name: "MUST FIND BEANS", - description: - "A fast-paced first person shooter set following the realization that you’re all out of beans. The problem is, you’re nearing the end of cooking all the other items and you can’t just not have them. Without beans, the day just won’t be started off right.", - tags: ["Godot", "Blender", "GIMP", "Steamworks"], - link: "/projects/must-find-beans", - done: false, - }, - { - id: 2, - name: "troylusty.com", - description: - "My personal website made using Astro as a way to show off my portfolio of work and display blog posts.", - tags: [ - "Astro", - "Tailwind CSS", - "TypeScript", - "Self-hosted Forgejo Actions", - "Docker", - ], - link: "https://code.threepop.com/troy/troylusty.com", - done: true, - }, - { - id: 3, - name: "Artwork", - description: - "A collection of digital artwork created with a variety of tools.", - tags: ["Blender", "Cinema 4D", "DaVinci Resolve"], - link: "/projects", - done: true, - }, - { - id: 4, - name: "Packard", - description: - "Packard is a simple terminal based RSS aggregator meant to allow you to take a quick glance at what’s occurring in topics you care about.", - tags: ["Rust", "Tokio", "Clap", "NixOS Flake"], - link: "/projects/packard", - done: true, - }, -]; -const sortedProjects = [...projects].sort((a, b) => a.id - b.id); ---- - -
    - { - sortedProjects.map((project) => ( -
  1. -
    -
    - <> -

    - - {project.done ? ( - - ) : ( - - )} - {project.name} - -

    -

    {project.description}

    - -
    -
    -
    -
    - {project.tags.map((tag) => ( - - {tag} - - ))} -
    -
    -
  2. - )) - } -
diff --git a/src/components/Hero.astro b/src/components/Hero.astro index 37c5127..8410f6b 100644 --- a/src/components/Hero.astro +++ b/src/components/Hero.astro @@ -16,15 +16,4 @@ >outdoor apparel business.

-

- Think I could help with a project you're working on? - - Send me a message - -

diff --git a/src/components/RelatedArticles.astro b/src/components/RelatedArticles.astro index c2680c1..7f1ccbf 100644 --- a/src/components/RelatedArticles.astro +++ b/src/components/RelatedArticles.astro @@ -1,5 +1,5 @@ --- -import Button from "./Button.astro"; +import Button from "@components/Button.astro"; import { type CollectionEntry, getCollection } from "astro:content"; type Props = { diff --git a/src/consts.ts b/src/consts.ts index 5b2efe6..c2016f4 100644 --- a/src/consts.ts +++ b/src/consts.ts @@ -34,11 +34,6 @@ export const SITE: Site = { href: "/sitemap-index.xml", icon: "mdi:sitemap", }, - { - name: "Curriculum vitae", - href: "/cv", - icon: "mdi:trophy", - }, { name: "Email", href: "mailto:hello@troylusty.com", @@ -64,6 +59,10 @@ export const SITE: Site = { name: "Posts", href: "/posts", }, + { + name: "About", + href: "/about", + }, ], }; @@ -88,8 +87,3 @@ export const ABOUT: Metadata = { TITLE: "About", DESCRIPTION: "About me.", }; - -export const CV: Metadata = { - TITLE: "Troy Lusty", - DESCRIPTION: "Curriculum vitae.", -}; diff --git a/src/icons/cat.svg b/src/icons/cat.svg deleted file mode 100644 index a3e116a..0000000 --- a/src/icons/cat.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/layouts/Cv.astro b/src/layouts/Cv.astro deleted file mode 100644 index c5fa20e..0000000 --- a/src/layouts/Cv.astro +++ /dev/null @@ -1,88 +0,0 @@ ---- -import Layout from "@layouts/Layout.astro"; -import { SITE, CV } from "@consts"; -import { Image } from "astro:assets"; -import { Icon } from "astro-icon/components"; -import Link from "@components/Link.astro"; -import icon from "public/assets/icon.png"; ---- - - -
-
-

- {CV.TITLE}{CV.DESCRIPTION} -

-

Digital designer.

- - - Devon, United Kingdom, GMT - -

- - - - - - - - - - - - - -
- -
- Troy Lusty - -
-
-
- -
-
-
diff --git a/src/pages/about/camouflage-store.png b/src/pages/about/camouflage-store.png new file mode 100644 index 0000000..2edfcbf Binary files /dev/null and b/src/pages/about/camouflage-store.png differ diff --git a/src/pages/about/index.astro b/src/pages/about/index.astro new file mode 100644 index 0000000..c0f51c6 --- /dev/null +++ b/src/pages/about/index.astro @@ -0,0 +1,363 @@ +--- +import Layout from "@layouts/Layout.astro"; +import { SITE, ABOUT } from "@consts"; +import { Image } from "astro:assets"; +import { Icon } from "astro-icon/components"; +import Link from "@components/Link.astro"; +import { createSlug } from "@lib/utils"; + +import me from "./me.jpg"; +import camoicon from "./camouflage-store.png"; +import nisaicon from "./nisa.png"; +import pphicon from "./paigntonpicturehouse.png"; +import webbossicon from "./webboss.png"; + +import uopicon from "./uop.png"; +import ucsdicon from "./ucsd.png"; +import sdcicon from "./sdc.png"; + +const projects = [ + { + id: 1, + name: "MUST FIND BEANS", + description: + "A fast-paced first person shooter set following the realization that you’re all out of beans. The problem is, you’re nearing the end of cooking all the other items and you can’t just not have them. Without beans, the day just won’t be started off right.", + tags: ["Godot", "Blender", "GIMP", "Steamworks"], + link: "/projects/must-find-beans", + done: false, + }, + { + id: 2, + name: "troylusty.com", + description: + "My personal website made using Astro as a way to show off my portfolio of work and display blog posts.", + tags: [ + "Astro", + "Tailwind CSS", + "TypeScript", + "Self-hosted Forgejo Actions", + "Docker", + ], + link: "https://code.threepop.com/troy/troylusty.com", + done: true, + }, + { + id: 3, + name: "Artwork", + description: + "A collection of digital artwork created with a variety of tools.", + tags: ["Blender", "Cinema 4D", "DaVinci Resolve"], + link: "/projects", + done: true, + }, + { + id: 4, + name: "Packard", + description: + "Packard is a simple terminal based RSS aggregator meant to allow you to take a quick glance at what’s occurring in topics you care about.", + tags: ["Rust", "Tokio", "Clap", "NixOS Flake"], + link: "/projects/packard", + done: true, + }, +]; +const sortedProjects = [...projects].sort((a, b) => a.id - b.id); + +const experience = [ + { + id: 1, + name: "Camouflage Store", + image: camoicon, + role: "E-commerce management", + date: "2020 - Now", + link: "/projects/camouflage-store", + }, + { + id: 2, + name: "Nisa", + image: nisaicon, + role: "Promotional graphic design", + date: "2022", + link: "https://www.nisalocally.co.uk", + }, + { + id: 3, + name: "WebBoss", + image: webbossicon, + role: "Website mock-up templates (Work experience)", + date: "2019", + link: "https://webboss.io", + }, + { + id: 4, + name: "Paignton Picture House Trust", + image: pphicon, + role: "Photogrammetrist (Volunteering)", + date: "2023", + link: "https://paigntonpicturehouse.org", + }, +]; +const sortedExperience = [...experience].sort((a, b) => a.id - b.id); + +const education = [ + { + id: 1, + name: "University of Plymouth", + image: uopicon, + course: "BA (Hons) Game Arts and Design", + date: "2024 - Now", + }, + { + id: 2, + name: "University Centre South Devon", + image: ucsdicon, + course: "FdA Games and Interactive Design", + date: "2022 - 2024", + }, + { + id: 3, + name: "South Devon College", + image: sdcicon, + course: + "UAL Level 3 Extended Diploma in Creative Media Production and Technology", + date: "2020 - 2022", + }, +]; +const sortedEducation = [...education].sort((a, b) => a.id - b.id); +--- + + +
+
+

+ {SITE.AUTHOR}Digital designer. +

+

+ + + Devon, United Kingdom, GMT + +

+ + + + + + + + + + + + +
+ +
+ Troy Lusty + +
+ +
+

+ I’m a Game Arts and Design degree student with a chosen area of focus on the design, lighting, and rendering + of 3D environments. Using either real-time or offline rendering techniques + in software packages such as Blender and Unreal Engine. In addition to this + I also have an interest in web development, graphic design, and cyber security + which make up a large part of my hobbies ...oh and motorbikes. If you're reading + this offline, my portfolio of work can be found on my website at troylusty.com/projects. +

+
+ +
+
+
+

+ Ready to make something cool? +

+

+ Do you think I'd be a good fit to help out on a project you're working + on, or maybe just want to chat? + Send me an email! +

+
+
+ +
+
+
+ +
+

Education

+
+ { + sortedEducation.map((education) => ( +
+
+ {education.name} +

+ {education.course}, + {education.name} +

+
+

+ {education.date} +

+
+ )) + } +
+
+ +

Full drivers licence (A & B)

+
+
+ +
+

Experience

+
+ { + sortedExperience.map((experience) => ( +
+
+ + {experience.name} + +

+ {experience.role}, + + {experience.name} + +

+
+

+ {experience.date} +

+
+ )) + } +
+
+ +
+

Projects

+
    + { + sortedProjects.map((project) => ( +
  1. +
    +
    + <> +

    + + {project.done ? ( + + ) : ( + + )} + {project.name} + +

    +

    {project.description}

    + +
    +
    +
    +
    + {project.tags.map((tag) => ( + + {tag} + + ))} +
    +
    +
  2. + )) + } +
+
+
diff --git a/src/pages/about/me.jpg b/src/pages/about/me.jpg new file mode 100644 index 0000000..867811f Binary files /dev/null and b/src/pages/about/me.jpg differ diff --git a/src/pages/about/nisa.png b/src/pages/about/nisa.png new file mode 100644 index 0000000..6b3622a Binary files /dev/null and b/src/pages/about/nisa.png differ diff --git a/src/pages/about/paigntonpicturehouse.png b/src/pages/about/paigntonpicturehouse.png new file mode 100644 index 0000000..be0d230 Binary files /dev/null and b/src/pages/about/paigntonpicturehouse.png differ diff --git a/src/pages/about/sdc.png b/src/pages/about/sdc.png new file mode 100644 index 0000000..56b161f Binary files /dev/null and b/src/pages/about/sdc.png differ diff --git a/src/pages/about/ucsd.png b/src/pages/about/ucsd.png new file mode 100644 index 0000000..38db740 Binary files /dev/null and b/src/pages/about/ucsd.png differ diff --git a/src/pages/about/uop.png b/src/pages/about/uop.png new file mode 100644 index 0000000..7dc0fe9 Binary files /dev/null and b/src/pages/about/uop.png differ diff --git a/src/pages/about/webboss.png b/src/pages/about/webboss.png new file mode 100644 index 0000000..eb6e8f9 Binary files /dev/null and b/src/pages/about/webboss.png differ diff --git a/src/pages/cv.mdx b/src/pages/cv.mdx deleted file mode 100644 index 248026f..0000000 --- a/src/pages/cv.mdx +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Troy Lusty -description: Curriculum Vitae -layout: "@layouts/Cv.astro" ---- - -import Projects from "@components/CvProjects.astro"; - -## About - -I'm a [Game Arts and Design](#education) degree student with a chosen area of focus on the design, lighting, and rendering of 3D environments. Using either real-time or offline rendering techniques in software packages such as Blender and Unreal Engine. In addition to this I also have an interest in web development, graphic design, and cyber security which make up a large part of my hobbies. My current portfolio of work can be found on my website at [troylusty.com/projects](/projects). - ---- - -## Experience - -### **E-commerce Business Management**, [Camouflage Store](/projects/camouflage-store) (2020 - Current) - -My role has me in charge of managing an online e-commerce store in addition to creating, editing, and publishing informational YouTube and social media content for a family run outdoors store. This includes the recent branding redesign, migration of content to Shopify, and any maintenance or general upkeep of the site with all its related systems, such as the self-hosted analytics platform. - -### Volunteering and smaller roles - -- **Production Assistant**, SDC Radiant Rumble (2024) -- **Photogrammetrist**, Paignton Picture House (2023) -- **Promo Graphic Design**, Nisa (2022) -- **Website Mock-up Templates**, WebBoss (2019) - ---- - -## Education - -### **BA (Hons) Game Arts and Design**, University of Plymouth (2024 - 2025) - -- 1st year: Completion May/June 2025 - -### **FdA Games and Interactive Design**, University Centre South Devon (2022 - 2024) - -- 2nd year: 70.25% State Aggregate Mark -- 1st year: 69.43% State Aggregate Mark - -### **UAL Level 3 Extended Diploma in Creative Media Production and Technology**, South Devon College (2020 - 2022) - -- 2nd year: Extended Diploma - Distinction -- 1st year: Diploma - Distinction - -### **BTEC & A-level**, Kennicott Sixth Form (2018 - 2020) - -- Pearson BTEC Level 3 National Extended Diploma in Art and Design - Distinction Merit Merit -- AQA GCE/A Computer Science ADV (Python) - C - -### **GCSEs & Cambridge Nationals qualification**, King Edward VI Community College (2014 - 2018) - -- 10 GCSEs including Maths and English -- OCR Cambridge Nationals Creative iMedia Level 1/2 Award/Certificate - Merit at Level 2 - -### Additional - -- Full drivers licence (A & B) - ---- - -## Projects - -