187 lines
10 KiB
HTML
Executable File
187 lines
10 KiB
HTML
Executable File
<!DOCTYPE html>
|
|
<html lang='en'>
|
|
|
|
<head>
|
|
<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, 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='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='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">
|
|
</head>
|
|
|
|
<body class="js-stop-transition">
|
|
<header class="header">
|
|
<nav class="nav">
|
|
<div class="logo">
|
|
<a href="./" title="sowinski.dev (Alt + H)">
|
|
<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)">
|
|
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
|
|
stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
<path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z" />
|
|
</svg>
|
|
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
|
|
stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
<circle cx="12" cy="12" r="5" />
|
|
<line x1="12" y1="1" x2="12" y2="3" />
|
|
<line x1="12" y1="21" x2="12" y2="23" />
|
|
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64" />
|
|
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78" />
|
|
<line x1="1" y1="12" x2="3" y2="12" />
|
|
<line x1="21" y1="12" x2="23" y2="12" />
|
|
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36" />
|
|
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22" />
|
|
</svg>
|
|
</button>
|
|
</span>
|
|
</div>
|
|
<ul id="menu" class="nav__links">
|
|
<li id="home-link">
|
|
<a href="./" title="Home">
|
|
<span class="active">Home</span>
|
|
</a>
|
|
</li>
|
|
<li id="about-link">
|
|
<a href="./about.html" title="About">
|
|
<span class="active">About</span>
|
|
</a>
|
|
</li>
|
|
<li id="projects-link">
|
|
<a href="./projects.html" title="Projects">
|
|
<span class="active">Projects</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
<p class="menu cta">Menu</p>
|
|
</nav>
|
|
|
|
<div id="mobile__menu" class="overlay">
|
|
<button type="button" class="close" aria-label="Close menu">×</button>
|
|
<div class="overlay__content">
|
|
<a href="./" title="Home"><span class="active">Home</span></a>
|
|
<a href="./about.html" title="About"><span class="active">About</span></a>
|
|
<a href="./projects.html" title="Projects"><span class="active">Projects</span></a>
|
|
</div>
|
|
</div>
|
|
</header>
|
|
|
|
<main class="projects-page page-shell">
|
|
<section class="projects-hero">
|
|
<p class="eyebrow">Projects & Updates</p>
|
|
<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.
|
|
</p>
|
|
</section>
|
|
|
|
<section class="content-section">
|
|
<div class="section-heading">
|
|
<div>
|
|
<p class="eyebrow">Portfolio</p>
|
|
<h2>Selected Projects</h2>
|
|
</div>
|
|
<a class="section-link" href="https://git.sowinski.dev/SowinskiBraeden" target="_blank" rel="noopener noreferrer">View Gitea</a>
|
|
</div>
|
|
<div id="projects-grid" class="content-grid">
|
|
<p class="loading-state">Loading projects...</p>
|
|
</div>
|
|
<div id="projects-toggle-shell" class="projects-toggle-shell" hidden>
|
|
<button id="projects-toggle" class="projects-toggle" type="button" aria-expanded="false">
|
|
Show More Projects
|
|
</button>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="content-section updates-section">
|
|
<div class="section-heading">
|
|
<div>
|
|
<p class="eyebrow">Recent</p>
|
|
<h2>Updates & Achievements</h2>
|
|
</div>
|
|
</div>
|
|
<div id="updates-grid" class="content-grid updates-grid">
|
|
<p class="loading-state">Loading updates...</p>
|
|
</div>
|
|
</section>
|
|
|
|
<footer class="footer flex-container site-footer">
|
|
<p>Get in touch with me!</p>
|
|
<div class="social-icons">
|
|
<a class="icon" href="https://www.linkedin.com/in/SowinskiBraeden" target="_blank" rel="noopener noreferrer me"
|
|
title="LinkedIn">
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-linkedin"
|
|
viewBox="0 0 16 16">
|
|
<path
|
|
d="M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854zm4.943 12.248V6.169H2.542v7.225zm-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248S2.4 3.226 2.4 3.934c0 .694.521 1.248 1.327 1.248zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016l.016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225z" />
|
|
</svg>
|
|
</a>
|
|
<a class="icon" href="https://git.sowinski.dev/SowinskiBraeden" target="_blank" rel="noopener noreferrer me" title="Gitea" aria-label="Gitea">
|
|
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor">
|
|
<path
|
|
d="M4.209 4.603c-.247 0-.525.02-.84.088-.333.07-1.28.283-2.054 1.027C-.403 7.25.035 9.685.089 10.052c.065.446.263 1.687 1.21 2.768 1.749 2.141 5.513 2.092 5.513 2.092s.462 1.103 1.168 2.119c.955 1.263 1.936 2.248 2.89 2.367 2.406 0 7.212-.004 7.212-.004s.458.004 1.08-.394c.535-.324 1.013-.893 1.013-.893s.492-.527 1.18-1.73c.21-.37.385-.729.538-1.068 0 0 2.107-4.471 2.107-8.823-.042-1.318-.367-1.55-.443-1.627-.156-.156-.366-.153-.366-.153s-4.475.252-6.792.306c-.508.011-1.012.023-1.512.027v4.474l-.634-.301c0-1.39-.004-4.17-.004-4.17-1.107.016-3.405-.084-3.405-.084s-5.399-.27-5.987-.324c-.187-.011-.401-.032-.648-.032zm.354 1.832h.111s.271 2.269.6 3.597C5.549 11.147 6.22 13 6.22 13s-.996-.119-1.641-.348c-.99-.324-1.409-.714-1.409-.714s-.73-.511-1.096-1.52C1.444 8.73 2.021 7.7 2.021 7.7s.32-.859 1.47-1.145c.395-.106.863-.12 1.072-.12zm8.33 2.554c.26.003.509.127.509.127l.868.422-.529 1.075a.686.686 0 0 0-.614.359.685.685 0 0 0 .072.756l-.939 1.924a.69.69 0 0 0-.66.527.687.687 0 0 0 .347.763.686.686 0 0 0 .867-.206.688.688 0 0 0-.069-.882l.916-1.874a.667.667 0 0 0 .237-.02.657.657 0 0 0 .271-.137 8.826 8.826 0 0 1 1.016.512.761.761 0 0 1 .286.282c.073.21-.073.569-.073.569-.087.29-.702 1.55-.702 1.55a.692.692 0 0 0-.676.477.681.681 0 1 0 1.157-.252c.073-.141.141-.282.214-.431.19-.397.515-1.16.515-1.16.035-.066.218-.394.103-.814-.095-.435-.48-.638-.48-.638-.467-.301-1.116-.58-1.116-.58s0-.156-.042-.27a.688.688 0 0 0-.148-.241l.516-1.062 2.89 1.401s.48.218.583.619c.073.282-.019.534-.069.657-.24.587-2.1 4.317-2.1 4.317s-.232.554-.748.588a1.065 1.065 0 0 1-.393-.045l-.202-.08-4.31-2.1s-.417-.218-.49-.596c-.083-.31.104-.691.104-.691l2.073-4.272s.183-.37.466-.497a.855.855 0 0 1 .35-.077z" />
|
|
</svg>
|
|
</a>
|
|
<a class="icon" href="mailto:braeden@sowinski.dev" target="_blank" rel="noopener noreferrer me" title="Email">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 21" fill="none" stroke="currentcolor" stroke-width="2"
|
|
stroke-linecap="round" stroke-linejoin="round">
|
|
<path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z" />
|
|
<polyline points="22,6 12,13 2,6" />
|
|
</svg>
|
|
</a>
|
|
</div>
|
|
</footer>
|
|
</main>
|
|
|
|
<script src="./public/scripts/mobile.js"></script>
|
|
<script src="./public/scripts/theme.js"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
|
<script src="./public/scripts/content.js"></script>
|
|
<script>
|
|
window.PORTFOLIO_CONTENT.initListPage();
|
|
</script>
|
|
</body>
|
|
|
|
</html>
|