feat: begin restyling cv into about
All checks were successful
Docker / build-and-push-image (push) Successful in 48s

This commit is contained in:
Troy 2025-05-29 20:46:12 +01:00
parent 237eeb4cac
commit ad9a5d49d8
Signed by: troy
GPG key ID: DFC06C02ED3B4711
19 changed files with 373 additions and 276 deletions

View file

@ -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 youre all out of beans. The problem is, youre nearing the end of cooking all the other items and you cant just not have them. Without beans, the day just wont 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 whats 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);
---
<ol class="grid grid-cols-1 gap-3 pl-0 md:grid-cols-2 print:grid-cols-2">
{
sortedProjects.map((project) => (
<li class="flex flex-col overflow-hidden pl-0">
<div class="flex flex-col space-y-1.5">
<div class="space-y-1">
<>
<h3 class="mt-0 text-base font-semibold tracking-tight">
<Link
href={project.link}
class="text-secondary inline-flex items-center gap-1 hover:underline"
>
{project.done ? (
<span class="mr-1 h-1 w-1 rounded-full bg-green-500" />
) : (
<span class="mr-1 h-1 w-1 rounded-full bg-amber-500" />
)}
{project.name}
</Link>
</h3>
<p class="text-secondary/70 text-xs">{project.description}</p>
</>
</div>
</div>
<div class="mt-auto flex text-sm text-pretty">
<div class="mt-2 flex flex-wrap gap-1">
{project.tags.map((tag) => (
<a
href={`/tags/${createSlug(tag)}`}
class="bg-button text-secondary hover:bg-button-active flex w-fit flex-row items-center gap-1 justify-self-center rounded-sm px-2 py-1 text-center font-sans text-[10px] font-light text-nowrap capitalize no-underline transition-colors duration-300"
>
{tag}
</a>
))}
</div>
</div>
</li>
))
}
</ol>

View file

@ -16,15 +16,4 @@
>outdoor apparel business</a
>.
</p>
<p
class="text-tertiary animate-reveal text-lg font-medium opacity-0 [animation-delay:0.2s]"
>
Think I could help with a project you're working on?
<a
href="mailto:hello@troylusty.com"
class="ml-1 w-fit rounded-sm bg-lime-500/20 px-2 py-1 text-sm text-lime-800 ring ring-lime-500 transition-colors duration-300 hover:bg-lime-500/30 dark:text-lime-200"
>
Send me a message
</a>
</p>
</section>

View file

@ -1,5 +1,5 @@
---
import Button from "./Button.astro";
import Button from "@components/Button.astro";
import { type CollectionEntry, getCollection } from "astro:content";
type Props = {

View file

@ -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.",
};

View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="894.49" height="469.63" version="1.1" viewBox="0 0 236.67 124.26" xmlns="http://www.w3.org/2000/svg">
<g transform="translate(-14.138 -70.162)">
<path d="m127.62 70.168c-8.2954 0.02321-42.603 1.3047-60.61 20.243-15.698 16.51-38.209 42.724-48.005 54.231-3.0462 3.5782-4.8629 5.7341-4.8629 5.7341l4.9889 2.5192 30.696 15.496s15.971 12.517 21.441 11.791c8.3522-1.1083 12.418-3.9027 16.676-15.967 4.2579-12.064 13.587-30.244 13.587-30.244s2.3056-7.033 2.7351-11.626c0.50179-5.3654 5.6984-18.845 10.29-22.708 4.2494-3.576 9.5814-8.1617 13.13 4.2571 3.5482 12.419 8.5145 33.354 13.482 37.612 4.9675 4.2579 8.5162 8.8705 11.71 8.5157s7.4506-1e-3 10.999-3.5493c3.5482-3.5482 16.42-18.782 22.355-15.611 2.1392 1.1428 2.4694 3.5357 1.4185 6.031-2.3125 5.491-6.3862 23.774-5.3218 31.935 1.0645 8.1609 6.0315 26.612 14.902 25.547 8.8706-1.0645 53.579-6.0325 53.579-6.0325s-7.8055-58.9-34.772-81.609c-26.967-22.709-45.772-37.256-86.577-36.546 0 0-0.65483-0.02321-1.8399-0.02031zm-3.2014 79.664s-6.4645 11.471-3.6198 17.631c2.8447 6.1602 9.8265-17.631 3.6198-17.631zm29.768 10.203c-0.30642-2e-3 -0.63762 0.0435-0.99567 0.14248 0 0-3.6887 10.162 0.47684 16.066 2.6042 3.6908 6.7494-16.167 0.51883-16.208z" fill="currentColor" stroke-linecap="square" stroke-linejoin="bevel" stroke-miterlimit="0" stroke-width="11.516" style="paint-order:markers stroke fill"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -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";
---
<Layout title={CV.TITLE} description={CV.DESCRIPTION}>
<div class="animate-reveal flex items-center justify-between opacity-0">
<div class="flex-1 space-y-1.5">
<h1
class="animate-reveal flex flex-col text-start text-3xl font-semibold opacity-0 sm:block"
>
<span class="text-secondary text-nowrap">{CV.TITLE}</span><span
class="text-tertiary sm:ml-2">{CV.DESCRIPTION}</span
>
</h1>
<p class="text-secondary/70 max-w-md text-pretty">Digital designer.</p><p
class="text-secondary/70 max-w-md items-center text-sm text-pretty"
>
<Link
class="inline-flex gap-x-1.5 align-baseline leading-none hover:underline"
href="https://www.google.com/maps/place/Devon"
>
<Icon name="mdi:earth" class="h-3 w-3" />
Devon, United Kingdom, GMT
</Link>
</p><div class="text-secondary/70 flex gap-x-1 pt-1 text-sm print:hidden">
<a
href={`mailto:${SITE.EMAIL}`}
class="bg-button text-secondary hover:bg-button-active flex w-fit flex-row items-center gap-1 justify-self-center rounded-full p-2 text-center text-sm text-nowrap capitalize transition-colors duration-300"
>
<Icon name="mdi:email" title="Email" class="h-4 w-4" />
</a>
<Link
href="/"
class="bg-button text-secondary hover:bg-button-active flex w-fit flex-row items-center gap-1 justify-self-center rounded-full p-2 text-center text-sm text-nowrap capitalize transition-colors duration-300"
>
<Icon name="mdi:link-variant" title="Website" class="h-4 w-4" />
</Link>
<Link
href="https://code.threepop.com"
class="bg-button text-secondary hover:bg-button-active flex w-fit flex-row items-center gap-1 justify-self-center rounded-full p-2 text-center text-sm text-nowrap capitalize transition-colors duration-300"
>
<Icon name="mdi:git" title="Git" class="h-4 w-4" />
</Link>
<Link
href="https://store.steampowered.com/developer/troy"
class="bg-button text-secondary hover:bg-button-active flex w-fit flex-row items-center gap-1 justify-self-center rounded-full p-2 text-center text-sm text-nowrap capitalize transition-colors duration-300"
>
<Icon name="mdi:steam" title="Steamworks" class="h-4 w-4" />
</Link>
</div>
<p
class="text-secondary/70 hidden max-w-md items-center text-sm text-pretty print:flex"
>
<Link
class="inline-flex gap-x-1.5 align-baseline leading-none hover:underline"
href={`mailto:${SITE.EMAIL}`}
>
<Icon name="mdi:email" class="h-3 w-3" />
{SITE.EMAIL}
</Link>
</p>
</div><span
class="relative flex h-28 w-28 shrink-0 overflow-hidden rounded-sm"
>
<Image
src={icon}
alt="Troy Lusty"
class="aspect-square h-full w-full"
loading="eager"
/>
</span>
</div>
<div
class="animate-reveal mx-auto max-w-full opacity-0 [animation-delay:0.2s]"
>
<div
class="prose prose-neutral dark:prose-invert prose-sm prose-a:hover:no-underline prose-hr:my-4 prose-li:prose-p:my-0 prose-p:text-secondary/70 prose-li:text-secondary/70 prose-a:decoration-2 prose-a:underline-offset-2 max-w-full"
>
<slot />
</div>
</div>
</Layout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

363
src/pages/about/index.astro Normal file
View file

@ -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 youre all out of beans. The problem is, youre nearing the end of cooking all the other items and you cant just not have them. Without beans, the day just wont 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 whats 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);
---
<Layout title={SITE.TITLE} description={ABOUT.DESCRIPTION}>
<div class="animate-reveal flex items-center justify-between opacity-0">
<div class="flex-1 space-y-1.5">
<h1
class="animate-reveal flex flex-col text-start text-3xl font-semibold opacity-0 sm:block"
>
<span class="text-secondary text-nowrap">{SITE.AUTHOR}</span><span
class="text-tertiary sm:ml-2">Digital designer.</span
>
</h1>
<p class="text-secondary/70 max-w-md text-pretty">
<Link
class="inline-flex items-center gap-x-1.5 align-baseline leading-none hover:underline"
href="https://www.google.com/maps/place/Devon"
>
<Icon name="mdi:earth" class="h-3 w-3" />
Devon, United Kingdom, GMT
</Link>
</p><div class="text-secondary/70 flex gap-x-1 pt-1 text-sm print:hidden">
<Link
href="/"
class="bg-button text-secondary hover:bg-button-active flex w-fit flex-row items-center gap-1 justify-self-center rounded-full p-2 text-center text-sm text-nowrap capitalize transition-colors duration-300"
>
<Icon name="mdi:link-variant" title="Website" class="h-4 w-4" />
</Link>
<Link
href={`mailto:${SITE.EMAIL}`}
class="bg-button text-secondary hover:bg-button-active flex w-fit flex-row items-center gap-1 justify-self-center rounded-full p-2 text-center text-sm text-nowrap capitalize transition-colors duration-300"
>
<Icon name="mdi:email" title="Email" class="h-4 w-4" />
</Link>
<Link
href="https://code.threepop.com"
class="bg-button text-secondary hover:bg-button-active flex w-fit flex-row items-center gap-1 justify-self-center rounded-full p-2 text-center text-sm text-nowrap capitalize transition-colors duration-300"
>
<Icon name="mdi:git" title="Git" class="h-4 w-4" />
</Link>
<Link
href="https://store.steampowered.com/developer/troy"
class="bg-button text-secondary hover:bg-button-active flex w-fit flex-row items-center gap-1 justify-self-center rounded-full p-2 text-center text-sm text-nowrap capitalize transition-colors duration-300"
>
<Icon name="mdi:steam" title="Steamworks" class="h-4 w-4" />
</Link>
</div>
<p
class="text-secondary/70 hidden max-w-md items-center text-sm text-pretty print:flex"
>
<Link
class="inline-flex gap-x-1.5 align-baseline leading-none hover:underline"
href={`mailto:${SITE.EMAIL}`}
>
<Icon name="mdi:email" class="h-3 w-3" />
{SITE.EMAIL}
</Link>
</p>
</div><span
class="relative flex h-28 w-28 shrink-0 overflow-hidden rounded-sm"
>
<Image
src={me}
alt="Troy Lusty"
class="aspect-square h-full w-full"
loading="eager"
/>
</span>
</div>
<section class="animate-reveal opacity-0 [animation-delay:0.1s]">
<p class="text-secondary/70 text-lg font-medium">
Im a <a
href="#education"
class="text-secondary underline decoration-2 underline-offset-2 hover:no-underline"
>Game Arts and Design</a
> 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 <a
href="/projects"
class="text-secondary underline decoration-2 underline-offset-2 hover:no-underline"
>troylusty.com/projects</a
>.
</p>
</section>
<section class="animate-reveal opacity-0 [animation-delay:0.2s]">
<div
class="flex justify-between gap-5 rounded-sm bg-orange-200/20 p-6 transition-transform duration-300 hover:scale-101 dark:bg-orange-900/20"
>
<div class="flex w-3/4 flex-col gap-4">
<h3 class="text-secondary text-3xl font-medium">
Ready to make something cool?
</h3>
<p class="text-secondary/70">
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? <Link
href="mailto:hello@troylusty.com"
class="underline decoration-2 underline-offset-2 hover:no-underline"
>
Send me an email!</Link
>
</p>
</div>
<div class="flex items-center">
<Icon
name="mdi:handshake"
class="h-26 w-auto rounded-full bg-orange-200/70 p-1 text-orange-600 dark:bg-orange-900/70 dark:text-orange-400"
/>
</div>
</div>
</section>
<section
id="education"
class="animate-reveal opacity-0 [animation-delay:0.3s]"
>
<h2 class="text-2xl font-semibold">Education</h2>
<div class="mt-3 flex flex-col gap-3">
{
sortedEducation.map((education) => (
<div class="bg-tertiary/20 flex items-center justify-between gap-2 rounded-sm p-3 transition-transform duration-300 hover:-translate-y-1">
<div class="flex items-center gap-2">
<Image
src={education.image}
alt={education.name}
class="h-12 w-auto rounded-sm"
loading="eager"
/>
<p class="font-medium">
{education.course},
<span class="text-secondary/70">{education.name}</span>
</p>
</div>
<p class="font-mono text-sm font-light text-nowrap">
{education.date}
</p>
</div>
))
}
</div>
<div
class="mt-3 flex w-fit items-center gap-2 rounded-full bg-green-200/20 px-3 py-1.5 dark:bg-green-900/20"
>
<Icon
name="mdi:check-decagram-outline"
class="h-auto w-6 rounded-full bg-green-200/70 p-0.5 text-green-600 dark:bg-green-900/70 dark:text-green-400"
/>
<p class="text-sm">Full drivers licence (A & B)</p>
</div>
</section>
<section
id="experience"
class="animate-reveal opacity-0 [animation-delay:0.4s]"
>
<h2 class="text-2xl font-semibold">Experience</h2>
<div class="mt-3 flex flex-col gap-3">
{
sortedExperience.map((experience) => (
<div class="bg-tertiary/20 flex items-center justify-between gap-2 rounded-sm p-3 transition-transform duration-300 hover:-translate-y-1">
<div class="flex items-center gap-2">
<Link href={experience.link}>
<Image
src={experience.image}
alt={experience.name}
class="h-12 w-auto rounded-sm"
loading="eager"
/>
</Link>
<p class="font-medium">
{experience.role},
<Link
href={experience.link}
class="text-secondary/70 underline hover:no-underline"
>
{experience.name}
</Link>
</p>
</div>
<p class="font-mono text-sm font-light text-nowrap">
{experience.date}
</p>
</div>
))
}
</div>
</section>
<section
id="projects"
class="animate-reveal opacity-0 [animation-delay:0.5s]"
>
<h2 class="text-2xl font-semibold">Projects</h2>
<ol class="mt-3 grid grid-cols-1 gap-3 md:grid-cols-2 print:grid-cols-2">
{
sortedProjects.map((project) => (
<li class="bg-tertiary/20 flex flex-col overflow-hidden rounded-sm p-3">
<div class="flex flex-col space-y-1.5">
<div class="space-y-1">
<>
<h3 class="mt-0 text-base font-semibold tracking-tight">
<Link
href={project.link}
class="inline-flex items-center gap-1 font-medium underline hover:no-underline"
>
{project.done ? (
<span class="mr-1 h-1 w-1 rounded-full bg-green-500" />
) : (
<span class="mr-1 h-1 w-1 rounded-full bg-amber-500" />
)}
{project.name}
</Link>
</h3>
<p class="text-secondary/70 text-sm">{project.description}</p>
</>
</div>
</div>
<div class="mt-auto flex text-sm text-pretty">
<div class="mt-2 flex flex-wrap gap-1">
{project.tags.map((tag) => (
<a
href={`/tags/${createSlug(tag)}`}
class="bg-button text-secondary hover:bg-button-active flex w-fit flex-row items-center gap-1 justify-self-center rounded-sm px-2 py-1 text-center font-sans text-xs font-light text-nowrap capitalize no-underline transition-colors duration-300"
>
{tag}
</a>
))}
</div>
</div>
</li>
))
}
</ol>
</section>
</Layout>

BIN
src/pages/about/me.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

BIN
src/pages/about/nisa.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
src/pages/about/sdc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
src/pages/about/ucsd.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
src/pages/about/uop.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

BIN
src/pages/about/webboss.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -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) <small class="font-light font-mono text-xs">(2020 - Current)</small>
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 <small class="font-light font-mono text-xs">(2024)</small>
- **Photogrammetrist**, Paignton Picture House <small class="font-light font-mono text-xs">(2023)</small>
- **Promo Graphic Design**, Nisa <small class="font-light font-mono text-xs">(2022)</small>
- **Website Mock-up Templates**, WebBoss <small class="font-light font-mono text-xs">(2019)</small>
---
## Education
### **BA (Hons) Game Arts and Design**, University of Plymouth <small class="font-light font-mono text-xs">(2024 - 2025)</small>
- 1st year: Completion May/June 2025
### **FdA Games and Interactive Design**, University Centre South Devon <small class="font-light font-mono text-xs">(2022 - 2024)</small>
- 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 <small class="font-light font-mono text-xs">(2020 - 2022)</small>
- 2nd year: Extended Diploma - Distinction
- 1st year: Diploma - Distinction
### **BTEC & A-level**, Kennicott Sixth Form <small class="font-light font-mono text-xs">(2018 - 2020)</small>
- 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 <small class="font-light font-mono text-xs">(2014 - 2018)</small>
- 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
<Projects />