seo stuff + fix :splat landings

This commit is contained in:
SowinskiBraeden committed 2026-05-28 20:14:39 -07:00
1 parent b8172f68a1
commit f284702e3d
8 files changed
+263 -69

No files matched your search

+1
View File
@@ -0,0 +1 @@
https://www.sowinski.dev/* https://sowinski.dev/:splat 301!
+36 -19
View File
@@ -2,43 +2,60 @@
<html lang='en'>
<head>
<title>About | Braeden Sowinski</title>
<title>About Braeden Sowinski | Software Engineer</title>
<meta charset='utf-8'>
<meta name='description' content="Learn more about Braeden Sowinski, a BCIT CST student and software engineer focused on backend systems, APIs, data-driven software, and technical problem solving." />
<meta name='description' content="About Braeden Sowinski, a software engineer, systems administrator, and BCIT CST student focused on backend systems, APIs, data-driven software, and technical problem solving." />
<meta name='author' content="Braeden Sowinski" />
<meta name='keywords' content="Braeden Sowinski, about, software engineer, backend systems, BCIT" />
<meta name='keywords' content="Braeden Sowinski, sowinski.dev, about, software engineer, backend systems, BCIT" />
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
<meta name='robots' content='index, follow'>
<meta name='theme-color' content='#1d1e20'>
<link rel='canonical' href='https://sowinski.dev/about.html'>
<meta property='og:type' content='profile'>
<meta property='og:title' content='About | Braeden Sowinski'>
<meta property='og:description' content='Learn more about Braeden Sowinski, a BCIT CST student and software engineer focused on backend systems, APIs, data-driven software, and technical problem solving.'>
<meta property='og:title' content='About Braeden Sowinski | Software Engineer'>
<meta property='og:description' content='About Braeden Sowinski, a software engineer, systems administrator, and BCIT CST student focused on backend systems, APIs, data-driven software, and technical problem solving.'>
<meta property='og:url' content='https://sowinski.dev/about.html'>
<meta property='og:site_name' content='Braeden Sowinski'>
<meta property='og:image' content='https://avatars.githubusercontent.com/u/48144618?v=4'>
<meta property='og:image:alt' content='Braeden Sowinski profile photo'>
<meta property='profile:first_name' content='Braeden'>
<meta property='profile:last_name' content='Sowinski'>
<meta name='twitter:card' content='summary_large_image'>
<meta name='twitter:title' content='About | Braeden Sowinski'>
<meta name='twitter:description' content='Learn more about Braeden Sowinski, a BCIT CST student and software engineer focused on backend systems, APIs, data-driven software, and technical problem solving.'>
<meta name='twitter:title' content='About Braeden Sowinski | Software Engineer'>
<meta name='twitter:description' content='About Braeden Sowinski, a software engineer, systems administrator, and BCIT CST student focused on backend systems, APIs, data-driven software, and technical problem solving.'>
<meta name='twitter:image' content='https://avatars.githubusercontent.com/u/48144618?v=4'>
<script type='application/ld+json'>
{
"@context": "https://schema.org",
"@type": "Person",
"@id": "https://sowinski.dev/#person",
"name": "Braeden Sowinski",
"givenName": "Braeden",
"familyName": "Sowinski",
"url": "https://sowinski.dev/about.html",
"mainEntityOfPage": "https://sowinski.dev/about.html",
"image": "https://avatars.githubusercontent.com/u/48144618?v=4",
"jobTitle": "Software Engineer",
"description": "BCIT CST student and software engineer focused on backend systems, APIs, data-driven software, and technical problem solving.",
"alumniOf": {
"@type": "CollegeOrUniversity",
"name": "British Columbia Institute of Technology"
},
"jobTitle": [
"Software Engineer",
"Systems Administrator"
],
"email": "mailto:braeden@sowinski.dev",
"description": "Software engineer, systems administrator, and BCIT CST student focused on backend systems, APIs, data-driven software, and technical problem solving.",
"affiliation": [
{
"@type": "CollegeOrUniversity",
"name": "British Columbia Institute of Technology",
"alternateName": "BCIT"
},
{
"@type": "Organization",
"name": "Coding 4 All",
"alternateName": "C4A"
}
],
"sameAs": [
"https://github.com/SowinskiBraeden",
"https://www.linkedin.com/in/SowinskiBraeden"
"https://www.linkedin.com/in/sowinskibraeden"
],
"knowsAbout": [
"Backend systems",
@@ -59,8 +76,8 @@
<nav class="nav">
<div class="logo">
<a href="./" title="sowinski.dev (Alt + H)">
<img src="https://avatars.githubusercontent.com/u/48144618?v=4" alt="logo" style="border-radius:50%;"
aria-label="logo" height="32">sowinski.dev
<img src="https://avatars.githubusercontent.com/u/48144618?v=4" alt="Braeden Sowinski profile photo" style="border-radius:50%;"
aria-label="Braeden Sowinski profile photo" height="32">sowinski.dev
</a>
<span class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
@@ -118,7 +135,7 @@
<section id="profile">
<img src="https://avatars.githubusercontent.com/u/48144618" class="profile" alt="Braeden Sowinski profile photo">
<div class="profile-sub">
<h2 class="profile-name">Braeden Sowinski</h2>
<h1 class="profile-name">Braeden Sowinski</h1>
<p class="des profile-role">
Software Engineer &amp; Systems Admin | CST Student @ BCIT | C4A President
</p>
@@ -147,7 +164,7 @@
</div>
<section class="about" id="about">
<h3 class="title">About Me</h3>
<h2 class="title">About Me</h2>
<p class="text">
I'm Braeden Sowinski, a Computer Systems Technology student at
<abbr title="British Columbia Institute of Technology">BCIT</abbr> focused on backend development,
@@ -175,7 +192,7 @@
</section>
<section class="honors" id="honors">
<h3 class="title">Highlights</h3>
<h2 class="title">Highlights</h2>
<dl>
<dt class="text"><b>Red Team Hackathon - 3rd Place</b></dt>
+29 -6
View File
@@ -2,26 +2,49 @@
<html lang='en'>
<head>
<title>Entry | Braeden Sowinski</title>
<title>Portfolio Entry | Braeden Sowinski</title>
<meta charset='utf-8'>
<meta name='description' content="Project entry or update from Braeden Sowinski's portfolio site." />
<meta name='author' content="Braeden Sowinski" />
<meta name='keywords' content="Braeden Sowinski, portfolio entry, project, update" />
<meta name='keywords' content="Braeden Sowinski, sowinski.dev, portfolio entry, project, update" />
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
<meta name='robots' content='index, follow'>
<meta name='theme-color' content='#1d1e20'>
<link rel='canonical' href='https://sowinski.dev/entry.html'>
<meta property='og:type' content='article'>
<meta property='og:title' content='Entry | Braeden Sowinski'>
<meta property='og:title' content='Portfolio Entry | Braeden Sowinski'>
<meta property='og:description' content='Project entry or update from Braeden Sowinski.'>
<meta property='og:url' content='https://sowinski.dev/entry.html'>
<meta property='og:site_name' content='Braeden Sowinski'>
<meta property='og:image' content='https://avatars.githubusercontent.com/u/48144618?v=4'>
<meta property='og:image:alt' content='Braeden Sowinski profile photo'>
<meta name='twitter:card' content='summary_large_image'>
<meta name='twitter:title' content='Entry | Braeden Sowinski'>
<meta name='twitter:title' content='Portfolio Entry | Braeden Sowinski'>
<meta name='twitter:description' content='Project entry or update from Braeden Sowinski.'>
<meta name='twitter:image' content='https://avatars.githubusercontent.com/u/48144618?v=4'>
<script>
(function() {
var params = new URLSearchParams(window.location.search);
var type = params.get("type");
var slug = params.get("slug");
if (!type || !slug) {
return;
}
var url = "https://sowinski.dev/entry.html?type=" + encodeURIComponent(type) + "&slug=" + encodeURIComponent(slug);
var canonical = document.querySelector("link[rel='canonical']");
var ogUrl = document.querySelector("meta[property='og:url']");
if (canonical) {
canonical.setAttribute("href", url);
}
if (ogUrl) {
ogUrl.setAttribute("content", url);
}
})();
</script>
<link rel="stylesheet" href="./public/css/style.css">
<link rel="stylesheet" href="./public/css/projects.css">
@@ -32,8 +55,8 @@
<nav class="nav">
<div class="logo">
<a href="./" title="sowinski.dev (Alt + H)">
<img src="https://avatars.githubusercontent.com/u/48144618?v=4" alt="logo" style="border-radius:50%;"
aria-label="logo" height="32">sowinski.dev
<img src="https://avatars.githubusercontent.com/u/48144618?v=4" alt="Braeden Sowinski profile photo" style="border-radius:50%;"
aria-label="Braeden Sowinski profile photo" height="32">sowinski.dev
</a>
<span class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
+86 -33
View File
@@ -2,49 +2,105 @@
<html lang='en'>
<head>
<title>Braeden Sowinski | Software Engineer</title>
<title>Braeden Sowinski - Software Engineer | sowinski.dev</title>
<meta charset='utf-8'>
<meta name='description' content="Braeden Sowinski is a software engineer and BCIT CST student focused on backend systems, APIs, data-driven software, and practical technical problem solving." />
<meta name='author' content="Braeden Sowinski" />
<meta name='keywords' content="Braeden Sowinski, software engineer, backend systems, APIs, BCIT, portfolio" />
<meta name='keywords' content="Braeden Sowinski, sowinski.dev, software engineer, backend systems, APIs, BCIT, portfolio" />
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
<meta name='robots' content='index, follow'>
<meta name='theme-color' content='#1d1e20'>
<meta name='application-name' content='sowinski.dev'>
<link rel='canonical' href='https://sowinski.dev/'>
<meta property='og:type' content='website'>
<meta property='og:title' content='Braeden Sowinski | Software Engineer'>
<meta property='og:description' content='Software engineer and BCIT CST student focused on backend systems, APIs, data-driven software, and practical technical problem solving.'>
<meta property='og:title' content='Braeden Sowinski - Software Engineer | sowinski.dev'>
<meta property='og:description' content='Braeden Sowinski is a software engineer and BCIT CST student focused on backend systems, APIs, data-driven software, and practical technical problem solving.'>
<meta property='og:url' content='https://sowinski.dev/'>
<meta property='og:site_name' content='Braeden Sowinski'>
<meta property='og:image' content='https://avatars.githubusercontent.com/u/48144618?v=4'>
<meta property='og:image:alt' content='Braeden Sowinski profile photo'>
<meta name='twitter:card' content='summary_large_image'>
<meta name='twitter:title' content='Braeden Sowinski | Software Engineer'>
<meta name='twitter:description' content='Software engineer and BCIT CST student focused on backend systems, APIs, data-driven software, and practical technical problem solving.'>
<meta name='twitter:title' content='Braeden Sowinski - Software Engineer | sowinski.dev'>
<meta name='twitter:description' content='Braeden Sowinski is a software engineer and BCIT CST student focused on backend systems, APIs, data-driven software, and practical technical problem solving.'>
<meta name='twitter:image' content='https://avatars.githubusercontent.com/u/48144618?v=4'>
<script type='application/ld+json'>
{
"@context": "https://schema.org",
"@type": "Person",
"name": "Braeden Sowinski",
"url": "https://sowinski.dev/",
"image": "https://avatars.githubusercontent.com/u/48144618?v=4",
"jobTitle": "Software Engineer",
"description": "Software engineer and BCIT CST student focused on backend systems, APIs, data-driven software, and practical technical problem solving.",
"alumniOf": {
"@type": "CollegeOrUniversity",
"name": "British Columbia Institute of Technology"
},
"sameAs": [
"https://github.com/SowinskiBraeden",
"https://www.linkedin.com/in/SowinskiBraeden"
],
"knowsAbout": [
"Backend systems",
"APIs",
"Data-driven software",
"System administration",
"Software engineering"
"@graph": [
{
"@type": "WebSite",
"@id": "https://sowinski.dev/#website",
"url": "https://sowinski.dev/",
"name": "Braeden Sowinski",
"alternateName": [
"sowinski.dev",
"Braeden Sowinski Portfolio"
],
"inLanguage": "en-CA",
"publisher": {
"@id": "https://sowinski.dev/#person"
}
},
{
"@type": "ProfilePage",
"@id": "https://sowinski.dev/#profile",
"url": "https://sowinski.dev/",
"name": "Braeden Sowinski - Software Engineer",
"description": "Braeden Sowinski is a software engineer and BCIT CST student focused on backend systems, APIs, data-driven software, and practical technical problem solving.",
"isPartOf": {
"@id": "https://sowinski.dev/#website"
},
"about": {
"@id": "https://sowinski.dev/#person"
},
"mainEntity": {
"@id": "https://sowinski.dev/#person"
}
},
{
"@type": "Person",
"@id": "https://sowinski.dev/#person",
"name": "Braeden Sowinski",
"givenName": "Braeden",
"familyName": "Sowinski",
"url": "https://sowinski.dev/",
"mainEntityOfPage": {
"@id": "https://sowinski.dev/#profile"
},
"image": {
"@type": "ImageObject",
"url": "https://avatars.githubusercontent.com/u/48144618?v=4"
},
"jobTitle": [
"Software Engineer",
"Systems Administrator"
],
"email": "mailto:braeden@sowinski.dev",
"description": "Software engineer and BCIT CST student focused on backend systems, APIs, data-driven software, and practical technical problem solving.",
"affiliation": [
{
"@type": "CollegeOrUniversity",
"name": "British Columbia Institute of Technology",
"alternateName": "BCIT"
},
{
"@type": "Organization",
"name": "Coding 4 All",
"alternateName": "C4A"
}
],
"sameAs": [
"https://github.com/SowinskiBraeden",
"https://www.linkedin.com/in/sowinskibraeden"
],
"knowsAbout": [
"Backend systems",
"APIs",
"Data-driven software",
"System administration",
"Software engineering"
]
}
]
}
</script>
@@ -57,8 +113,8 @@
<nav class="nav">
<div class="logo">
<a href="./" title="sowinski.dev">
<img src="https://avatars.githubusercontent.com/u/48144618?v=4" alt="logo" style="border-radius:50%;"
aria-label="logo" height="32">sowinski.dev
<img src="https://avatars.githubusercontent.com/u/48144618?v=4" alt="Braeden Sowinski profile photo" style="border-radius:50%;"
aria-label="Braeden Sowinski profile photo" height="32">sowinski.dev
</a>
<span class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
@@ -116,14 +172,11 @@
<div class="hero-shell__shine"></div>
<img src="https://avatars.githubusercontent.com/u/48144618" class="profile" alt="Braeden Sowinski profile photo">
<div id="main-wrapper" class="svg-wrapper">
<svg height="60" width="320" xmlns="http://www.w3.org/2000/svg">
<svg height="60" width="320" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
<rect x="0" y="0" class="shape" height="60" width="320" />
<h2 style="margin-top: 16pt;" class="name">Braeden Sowinski</h2>
</svg>
<h1 class="name">Braeden Sowinski</h1>
</div>
<h2 style="margin-top: 2pt;" class="mobile-name">Braeden Sowinski</h2>
<p class="des hero-description">
Software Engineer & Systems Admin | CST Student @ BCIT
+27 -7
View File
@@ -2,26 +2,46 @@
<html lang='en'>
<head>
<title>Projects and Updates | Braeden Sowinski</title>
<title>Braeden Sowinski Projects and Updates | Software Portfolio</title>
<meta charset='utf-8'>
<meta name='description' content="Browse selected software projects, technical writeups, and recent updates from Braeden Sowinski, including backend systems, APIs, and student leadership milestones." />
<meta name='author' content="Braeden Sowinski" />
<meta name='keywords' content="Braeden Sowinski, projects, updates, portfolio, software engineer, BCIT" />
<meta name='keywords' content="Braeden Sowinski, sowinski.dev, projects, updates, portfolio, software engineer, BCIT" />
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
<meta name='robots' content='index, follow'>
<meta name='theme-color' content='#1d1e20'>
<link rel='canonical' href='https://sowinski.dev/projects.html'>
<meta property='og:type' content='website'>
<meta property='og:title' content='Projects and Updates | Braeden Sowinski'>
<meta property='og:title' content='Braeden Sowinski Projects and Updates | Software Portfolio'>
<meta property='og:description' content='Browse selected software projects, technical writeups, and recent updates from Braeden Sowinski.'>
<meta property='og:url' content='https://sowinski.dev/projects.html'>
<meta property='og:site_name' content='Braeden Sowinski'>
<meta property='og:image' content='https://avatars.githubusercontent.com/u/48144618?v=4'>
<meta property='og:image:alt' content='Braeden Sowinski profile photo'>
<meta name='twitter:card' content='summary_large_image'>
<meta name='twitter:title' content='Projects and Updates | Braeden Sowinski'>
<meta name='twitter:title' content='Braeden Sowinski Projects and Updates | Software Portfolio'>
<meta name='twitter:description' content='Browse selected software projects, technical writeups, and recent updates from Braeden Sowinski.'>
<meta name='twitter:image' content='https://avatars.githubusercontent.com/u/48144618?v=4'>
<script type='application/ld+json'>
{
"@context": "https://schema.org",
"@type": "CollectionPage",
"@id": "https://sowinski.dev/projects.html#collection",
"url": "https://sowinski.dev/projects.html",
"name": "Braeden Sowinski Projects and Updates",
"description": "Selected software projects, technical writeups, and recent updates from Braeden Sowinski.",
"isPartOf": {
"@id": "https://sowinski.dev/#website"
},
"about": {
"@id": "https://sowinski.dev/#person"
},
"author": {
"@id": "https://sowinski.dev/#person"
},
"inLanguage": "en-CA"
}
</script>
<link rel="stylesheet" href="./public/css/style.css">
<link rel="stylesheet" href="./public/css/projects.css">
@@ -32,8 +52,8 @@
<nav class="nav">
<div class="logo">
<a href="./" title="sowinski.dev (Alt + H)">
<img src="https://avatars.githubusercontent.com/u/48144618?v=4" alt="logo" style="border-radius:50%;"
aria-label="logo" height="32">sowinski.dev
<img src="https://avatars.githubusercontent.com/u/48144618?v=4" alt="Braeden Sowinski profile photo" style="border-radius:50%;"
aria-label="Braeden Sowinski profile photo" height="32">sowinski.dev
</a>
<span class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
@@ -89,7 +109,7 @@
<main class="projects-page page-shell">
<section class="projects-hero">
<p class="eyebrow">Projects & Updates</p>
<h1>Selected work, recent milestones, and technical writeups.</h1>
<h1>Braeden Sowinski projects, milestones, and technical writeups.</h1>
<p class="projects-intro">
A collection of backend, infrastructure, data-driven, and full-stack projects,
including personal tools, student work, freelance websites, and technical writeups.
+14 -4
View File
@@ -318,7 +318,7 @@ ul {
transition: 0.8s;
font-size: 30px;
font-weight: 900;
margin-bottom: 10pt;
margin: 16pt 0 10pt;
transform: translate(0, -64pt);
}
@@ -624,15 +624,25 @@ body.menu-open .overlay * {
@media only screen and (max-width: 740pt) {
.nav__links li a,
.svg-wrapper#main-wrapper {
.svg-wrapper#main-wrapper svg {
display: none;
}
.menu,
.mobile-name {
.menu {
display: block;
}
.svg-wrapper#main-wrapper {
width: auto;
height: auto;
overflow: visible;
}
.svg-wrapper#main-wrapper .name {
margin: 2pt 0 10pt;
transform: none;
}
.logo {
margin-top: 12pt;
}
+36
View File
@@ -77,6 +77,41 @@
canonical.setAttribute("href", href);
};
const setEntryJsonLd = (entry, url, image) => {
let script = document.getElementById("entry-jsonld");
if (!script) {
script = document.createElement("script");
script.id = "entry-jsonld";
script.type = "application/ld+json";
document.head.appendChild(script);
}
script.textContent = JSON.stringify({
"@context": "https://schema.org",
"@type": "Article",
"@id": `${url}#article`,
"url": url,
"headline": entry.title,
"description": entry.summary || "Project entry or update from Braeden Sowinski.",
"datePublished": entry.date || undefined,
"dateModified": entry.date || undefined,
"image": image,
"author": {
"@id": "https://sowinski.dev/#person",
"name": "Braeden Sowinski",
"url": "https://sowinski.dev/"
},
"publisher": {
"@id": "https://sowinski.dev/#person"
},
"mainEntityOfPage": url,
"isPartOf": {
"@id": "https://sowinski.dev/#website"
}
});
};
const updateEntryMeta = (entry) => {
const baseUrl = "https://sowinski.dev";
const title = `${entry.title} | Braeden Sowinski`;
@@ -94,6 +129,7 @@
setMetaContent("meta[name='twitter:title']", title);
setMetaContent("meta[name='twitter:description']", description);
setMetaContent("meta[name='twitter:image']", image);
setEntryJsonLd(entry, url, image);
};
const renderLinks = (entry, className) => {
+34
View File
@@ -2,41 +2,75 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://sowinski.dev/</loc>
<lastmod>2026-05-29</lastmod>
<changefreq>monthly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://sowinski.dev/about.html</loc>
<lastmod>2026-05-29</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://sowinski.dev/projects.html</loc>
<lastmod>2026-05-29</lastmod>
<changefreq>weekly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://sowinski.dev/entry.html?type=projects&amp;slug=schedule-generator-app</loc>
<lastmod>2023-08-01</lastmod>
<priority>0.5</priority>
</url>
<url>
<loc>https://sowinski.dev/entry.html?type=projects&amp;slug=boker</loc>
<lastmod>2026-03-22</lastmod>
<priority>0.5</priority>
</url>
<url>
<loc>https://sowinski.dev/entry.html?type=projects&amp;slug=dayz-reforger-bot</loc>
<lastmod>2024-11-08</lastmod>
<priority>0.5</priority>
</url>
<url>
<loc>https://sowinski.dev/entry.html?type=projects&amp;slug=vairo-performance-website</loc>
<lastmod>2026-03-01</lastmod>
<priority>0.5</priority>
</url>
<url>
<loc>https://sowinski.dev/entry.html?type=projects&amp;slug=lines-police-cad</loc>
<lastmod>2022-06-01</lastmod>
<priority>0.5</priority>
</url>
<url>
<loc>https://sowinski.dev/entry.html?type=projects&amp;slug=portfolio</loc>
<lastmod>2026-03-14</lastmod>
<priority>0.5</priority>
</url>
<url>
<loc>https://sowinski.dev/entry.html?type=projects&amp;slug=school-management-api</loc>
<lastmod>2023-09-01</lastmod>
<priority>0.5</priority>
</url>
<url>
<loc>https://sowinski.dev/entry.html?type=projects&amp;slug=xp-system</loc>
<lastmod>2021-05-01</lastmod>
<priority>0.5</priority>
</url>
<url>
<loc>https://sowinski.dev/entry.html?type=updates&amp;slug=appointed-president-c4a</loc>
<lastmod>2026-05-04</lastmod>
<priority>0.5</priority>
</url>
<url>
<loc>https://sowinski.dev/entry.html?type=updates&amp;slug=red-team-hackathon-2026</loc>
<lastmod>2026-03-12</lastmod>
<priority>0.5</priority>
</url>
<url>
<loc>https://sowinski.dev/entry.html?type=updates&amp;slug=joined-bcit-computing-club</loc>
<lastmod>2025-12-24</lastmod>
<priority>0.5</priority>
</url>
</urlset>