feat: begin restyling cv into about
All checks were successful
Docker / build-and-push-image (push) Successful in 48s
|
@ -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);
|
||||
---
|
||||
|
||||
<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>
|
|
@ -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>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
import Button from "./Button.astro";
|
||||
import Button from "@components/Button.astro";
|
||||
import { type CollectionEntry, getCollection } from "astro:content";
|
||||
|
||||
type Props = {
|
||||
|
|
|
@ -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.",
|
||||
};
|
||||
|
|
|
@ -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 |
|
@ -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>
|
BIN
src/pages/about/camouflage-store.png
Normal file
After Width: | Height: | Size: 32 KiB |
363
src/pages/about/index.astro
Normal 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 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);
|
||||
---
|
||||
|
||||
<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">
|
||||
I’m 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
After Width: | Height: | Size: 97 KiB |
BIN
src/pages/about/nisa.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
src/pages/about/paigntonpicturehouse.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
src/pages/about/sdc.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
src/pages/about/ucsd.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
src/pages/about/uop.png
Normal file
After Width: | Height: | Size: 107 KiB |
BIN
src/pages/about/webboss.png
Normal file
After Width: | Height: | Size: 17 KiB |
|
@ -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 />
|