professional + personal projects

This commit is contained in:
Oliver Bryan
2025-10-05 10:00:08 +01:00
parent a271a07a75
commit b129e4866d
9 changed files with 59 additions and 41 deletions

View File

@@ -8,6 +8,7 @@ const {
isDevMode = false, isDevMode = false,
isHidden = false, isHidden = false,
tags = [], tags = [],
type = "personal",
} = Astro.props; } = Astro.props;
tags.sort(); tags.sort();

View File

@@ -12,6 +12,7 @@ export interface Props {
github?: string; github?: string;
hidden: boolean; hidden: boolean;
tags?: string[]; tags?: string[];
type: string;
}; };
} }

View File

@@ -13,6 +13,7 @@ interface ProjectMetadata {
hidden: boolean; hidden: boolean;
image?: string; image?: string;
tags?: string[]; tags?: string[];
type: string;
} }
interface AstroModule { interface AstroModule {
@@ -146,7 +147,8 @@ const sortedTags = Array.from(allTags).sort((a, b) => a.localeCompare(b));
Developer Junior Developer Junior
</li> </li>
<li> <li>
<span class="text-ayu-red-500 font-500">Education: </span>Final Year Software Engineeering (BEng), University of Westminster (2024-2026) <span class="text-ayu-red-500 font-500">Education: </span>Final Year
Software Engineeering (BEng), University of Westminster (2024-2026)
</li> </li>
<li> <li>
<span class="text-ayu-blue-500 font-500">Experience: </span>7 years, <span class="text-ayu-blue-500 font-500">Experience: </span>7 years,
@@ -171,43 +173,54 @@ const sortedTags = Array.from(allTags).sort((a, b) => a.localeCompare(b));
</li> --> </li> -->
</ul> </ul>
<h2 class="text-2xl font-600 text-ayu-green-500 mt-6">PROJECTS</h2> {
projects.filter((project) => project.type === "professional").length >
0 && (
<>
<h2 class="text-2xl font-600 text-ayu-green-500 mt-6">
PROFESSIONAL PROJECTS
</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-2 gap-4 py-2">
{projects
.filter((project) => project.type === "professional")
.map((project) => (
<ProjectListItem
title={project.title}
description={project.description}
date={project.date}
image={project.image}
slug={project.slug}
isDevMode={isDevMode}
isHidden={project.hidden}
tags={project.tags || []}
/>
))}
</div>
</>
)
}
<h2 class="text-2xl font-600 text-ayu-green-500 mt-6">PERSONAL PROJECTS</h2>
<div class="flex flex-col mb-2">
<div class="flex flex-wrap items-center gap-x-1 gap-y-1 mt-1">
<!-- <span class="text-sm mr-1 text-ayu-fg opacity-50 font-600"
>FILTER:</span
> -->
<Icon name="mdi:filter" class="w-5 h-5 text-ayu-gutter" />
{
sortedTags.map((tag) => (
<span
id={`tag-${tag}`}
data-tag={tag}
class="no-select cursor-pointer rounded-md border border-ayu-gutter text-ayu-fg px-2 py-0 text-xs font-600"
>
{tag}
</span>
))
}
</div>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-2 gap-4 py-2"> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-2 gap-4 py-2">
{ {
projects.map((project) => ( projects
<ProjectListItem .filter((project) => project.type === "personal")
title={project.title} .map((project) => (
description={project.description} <ProjectListItem
date={project.date} title={project.title}
image={project.image} description={project.description}
slug={project.slug} date={project.date}
isDevMode={isDevMode} image={project.image}
isHidden={project.hidden} slug={project.slug}
tags={project.tags || []} isDevMode={isDevMode}
/> isHidden={project.hidden}
)) tags={project.tags || []}
/>
))
} }
</div> </div>
<script> <script>
const selectedTagBg = "bg-ayu-accent"; const selectedTagBg = "bg-ayu-accent";
const selectedTagText = "text-ayu-bg"; const selectedTagText = "text-ayu-bg";

View File

@@ -12,6 +12,7 @@ export const metadata = {
github: "https://github.com/hex248/factor-e", github: "https://github.com/hex248/factor-e",
hidden: false, hidden: false,
tags: ["Game", "C++", "OpenGL", "CMake", "Pixel Art"], tags: ["Game", "C++", "OpenGL", "CMake", "Pixel Art"],
type: "personal",
}; };
--- ---

View File

@@ -19,6 +19,7 @@ export const metadata = {
"Blob Storage", "Blob Storage",
"Databases", "Databases",
], ],
type: "personal",
}; };
--- ---

View File

@@ -17,6 +17,7 @@ export const metadata = {
"Discord API", "Discord API",
"Database", "Database",
], ],
type: "personal",
}; };
--- ---

View File

@@ -10,18 +10,16 @@ export const metadata = {
image: "/shleep-icon.svg", image: "/shleep-icon.svg",
url: "https://bigbootstudio.itch.io/shleep", url: "https://bigbootstudio.itch.io/shleep",
hidden: true, hidden: true,
tags: [ tags: ["Unity", "C#", "HLSL", "Shader Graph", "Visual Effects Graph"],
"Unity", type: "personal",
"C#",
"HLSL",
"Shader Graph",
"Visual Effects Graph"
],
}; };
--- ---
<ProjectPage metadata={metadata}> <ProjectPage metadata={metadata}>
<p>Shleep is a couch co-op base defense game where you can build towers to help aid you and your party to protect a sleeping child from nightmares.</p> <p>
Shleep is a couch co-op base defense game where you can build towers to
help aid you and your party to protect a sleeping child from nightmares.
</p>
<p>images here</p> <p>images here</p>

View File

@@ -21,6 +21,7 @@ export const metadata = {
"OAuth2", "OAuth2",
"Databases", "Databases",
], ],
type: "personal",
}; };
--- ---

View File

@@ -12,6 +12,7 @@ export const metadata = {
github: "https://github.com/hex248/wiskatron", github: "https://github.com/hex248/wiskatron",
hidden: false, hidden: false,
tags: ["Web", "React", "TypeScript", "Spotify API"], tags: ["Web", "React", "TypeScript", "Spotify API"],
type: "personal",
}; };
--- ---