Merge branch 'svelte' into svelte-prod
@ -32,6 +32,7 @@ export default tsEslint.config(
|
|||||||
"**/build",
|
"**/build",
|
||||||
"**/node_modules",
|
"**/node_modules",
|
||||||
"**/package",
|
"**/package",
|
||||||
|
"**/app.d.ts",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
22
src/app.html
@ -2,10 +2,24 @@
|
|||||||
<html lang="en" data-theme="night">
|
<html lang="en" data-theme="night">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="%sveltekit.assets%/apple-touch-icon.png">
|
<link
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="%sveltekit.assets%/favicon-32x32.png">
|
rel="apple-touch-icon"
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="%sveltekit.assets%/favicon-16x16.png">
|
sizes="180x180"
|
||||||
<link rel="manifest" href="%sveltekit.assets%/site.webmanifest">
|
href="%sveltekit.assets%/apple-touch-icon.png"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="32x32"
|
||||||
|
href="%sveltekit.assets%/favicon-32x32.png"
|
||||||
|
/>
|
||||||
|
<link
|
||||||
|
rel="icon"
|
||||||
|
type="image/png"
|
||||||
|
sizes="16x16"
|
||||||
|
href="%sveltekit.assets%/favicon-16x16.png"
|
||||||
|
/>
|
||||||
|
<link rel="manifest" href="%sveltekit.assets%/site.webmanifest" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
</head>
|
</head>
|
||||||
|
@ -83,9 +83,11 @@
|
|||||||
{:else}
|
{:else}
|
||||||
<h3 class="p-5 text-4xl text-center">Time to Graduation<br /> ({FORMATTED})</h3>
|
<h3 class="p-5 text-4xl text-center">Time to Graduation<br /> ({FORMATTED})</h3>
|
||||||
<span class="flex countdown pb-5 font-mono text-4xl justify-center">
|
<span class="flex countdown pb-5 font-mono text-4xl justify-center">
|
||||||
<span style="--value:{years};"></span>y
|
<span style="--value:{years};"></span>y
|
||||||
<span style="--value:{months};"></span>m
|
<span style="--value:{months};"></span>m
|
||||||
<span style="--value:{days};"></span>d-
|
<span style="--value:{days};"></span>d
|
||||||
|
</span>
|
||||||
|
<span class="flex countdown pb-5 font-mono text-4xl justify-center">
|
||||||
<span style="--value:{hours};"></span>:
|
<span style="--value:{hours};"></span>:
|
||||||
<span style="--value:{minutes};"></span>:
|
<span style="--value:{minutes};"></span>:
|
||||||
<span style="--value:{seconds};"></span>
|
<span style="--value:{seconds};"></span>
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
<footer
|
<script lang="ts">
|
||||||
class="footer items-center pt-4 bg-base-300 dark:bg-neutral dark:text-neutral-content"
|
import Github from "lucide-svelte/icons/github";
|
||||||
>
|
import Gitlab from "lucide-svelte/icons/gitlab";
|
||||||
<aside class="items-center grid-flow-col">
|
</script>
|
||||||
<a class="btn btn-ghost text-xl" href="/">nickbland.dev</a>
|
|
||||||
<p>Copyright © 2024 - All right reserved</p>
|
<footer class="footer items-center py-4 bg-neutral text-neutral-content">
|
||||||
|
<aside class="items-center grid-flow-col mx-2">
|
||||||
|
<a class="btn text-xl btn-ghost" href="/">nickbland.dev</a>
|
||||||
|
<p>
|
||||||
|
Copyright © 2024 - All right reserved | <a
|
||||||
|
class="link"
|
||||||
|
href="https://git.nickbland.dev/NickBland/website-2">Source Code</a
|
||||||
|
> | Made with ❤️ using SvelteKit
|
||||||
|
</p>
|
||||||
</aside>
|
</aside>
|
||||||
<nav class="grid-flow-col gap-4 md:place-self-center md:justify-self-end">
|
<nav class="grid-flow-col gap-4 md:place-self-center md:justify-self-end mx-2">
|
||||||
<!-- Buttons Here -->
|
<div class="tooltip" data-tip="GitHub">
|
||||||
|
<a
|
||||||
|
role="button"
|
||||||
|
class="btn btn-ghost hover:shadow-lg"
|
||||||
|
href="https://github.com/NickBland"><Github /></a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<div class="tooltip" data-tip="GitLab">
|
||||||
|
<a
|
||||||
|
role="button"
|
||||||
|
class="btn btn-ghost hover:shadow-lg"
|
||||||
|
href="https://git.nickbland.dev/NickBland"><Gitlab /></a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -3,9 +3,7 @@
|
|||||||
import Menu from "lucide-svelte/icons/menu";
|
import Menu from "lucide-svelte/icons/menu";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div
|
<div class="navbar bg-neutral text-neutral-content">
|
||||||
class="navbar bg-base-300 dark:bg-neutral rounded-box mt-1 dark:text-neutral-content"
|
|
||||||
>
|
|
||||||
<div class="navbar-start">
|
<div class="navbar-start">
|
||||||
<div class="dropdown">
|
<div class="dropdown">
|
||||||
<div tabindex="0" role="button" class="btn btn-ghost lg:hidden">
|
<div tabindex="0" role="button" class="btn btn-ghost lg:hidden">
|
||||||
@ -13,18 +11,20 @@
|
|||||||
</div>
|
</div>
|
||||||
<ul
|
<ul
|
||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
class="tablist menu menu-sm dropdown-content mt-3 z-[1] p-2 shadow bg-base-300 dark:bg-neutral rounded-box w-52 dark:text-neutral-content"
|
class="tablist menu menu-sm dropdown-content mt-3 z-[1] p-2 shadow bg-neutral rounded-box w-52 text-neutral-content"
|
||||||
>
|
>
|
||||||
<li><a href="/">Home</a></li>
|
<li><a href="/">Home</a></li>
|
||||||
<li><a href="/portfolio">Portfolio</a></li>
|
<li><a href="/portfolio">Portfolio</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<a class="btn btn-ghost text-xl" href="/">nickbland.dev</a>
|
<a class="btn btn-ghost text-xl hover:shadow-lg" href="/">nickbland.dev</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="navbar-center hidden lg:flex">
|
<div class="navbar-center hidden lg:flex">
|
||||||
<ul class="menu menu-horizontal px-1">
|
<ul class="menu menu-horizontal px-1">
|
||||||
<li><a href="/" class="text-lg">Home</a></li>
|
<li><a href="/" class="btn btn-ghost text-lg hover:shadow-lg">Home</a></li>
|
||||||
<li><a href="/portfolio" class="text-lg">Portfolio</a></li>
|
<li>
|
||||||
|
<a href="/portfolio" class="btn btn-ghost text-lg hover:shadow-lg">Portfolio</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="navbar-end">
|
<div class="navbar-end">
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<!-- this hidden checkbox controls the state -->
|
<!-- this hidden checkbox controls the state -->
|
||||||
<input type="checkbox" class="theme-controller" value="winter" />
|
<input type="checkbox" class="theme-controller" value="winter" />
|
||||||
|
|
||||||
<Sun class="w-7 h-7 swap-on fill-current" />
|
<Sun class="w-7 h-7 swap-on fill-current hover:shadow-lg" />
|
||||||
|
|
||||||
<Moon class="w-7 h-7 swap-off fill-current" />
|
<Moon class="w-7 h-7 swap-off fill-current hover:shadow-lg" />
|
||||||
</label>
|
</label>
|
||||||
|
@ -9,9 +9,9 @@
|
|||||||
<div class="flex">
|
<div class="flex">
|
||||||
{#each Array(count) as _}
|
{#each Array(count) as _}
|
||||||
<!-- Need to use the var somewhere -->
|
<!-- Need to use the var somewhere -->
|
||||||
<Star name={_} class="stroke-base-content fill-base-content" />
|
<Star name={_} class="stroke-neutral-content fill-neutral-content" />
|
||||||
{/each}
|
{/each}
|
||||||
{#if half}
|
{#if half}
|
||||||
<HalfStar class="stroke-base-content fill-base-content" />
|
<HalfStar class="stroke-neutral-content fill-neutral-content" />
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
export let middle: boolean = false;
|
export let middle: boolean = false;
|
||||||
|
export let classes: string = ""; // Further classes to pass through
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- If the text is between some other text, adjust padding to not seperate it out too much -->
|
<!-- If the text is between some other text, adjust padding to not seperate it out too much -->
|
||||||
@ -7,11 +8,11 @@
|
|||||||
|
|
||||||
<div>
|
<div>
|
||||||
{#if middle}
|
{#if middle}
|
||||||
<p class="px-5 mx-auto text-xl max-w-3xl">
|
<p class="px-5 mx-auto text-xl max-w-3xl {classes}">
|
||||||
<slot />
|
<slot />
|
||||||
</p>
|
</p>
|
||||||
{:else}
|
{:else}
|
||||||
<p class="p-5 mx-auto text-xl max-w-3xl">
|
<p class="p-5 mx-auto text-xl max-w-3xl {classes}">
|
||||||
<slot />
|
<slot />
|
||||||
</p>
|
</p>
|
||||||
{/if}
|
{/if}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<ul class="timeline timeline-snap-icon max-md:timeline-compact timeline-vertical pb-8">
|
<ul class="timeline timeline-snap-icon max-md:timeline-compact timeline-vertical pb-8">
|
||||||
<li>
|
<li>
|
||||||
<div class="timeline-middle"><Circle class="fill-base-300" /></div>
|
<div class="timeline-middle"><Circle class="fill-base-300" /></div>
|
||||||
<div class="timeline-end timeline-box bg-base-300 mb-10 max-w-3xl">
|
<div class="timeline-end timeline-box bg-base-300 mb-10 max-w-3xl shadow-lg">
|
||||||
<time class="font-mono" datetime="2020-3">Mar 2020 - Jul 2020</time>
|
<time class="font-mono" datetime="2020-3">Mar 2020 - Jul 2020</time>
|
||||||
<div class="text-xl">Villanova College</div>
|
<div class="text-xl">Villanova College</div>
|
||||||
<div class="text-sm">Information Technology Officer</div>
|
<div class="text-sm">Information Technology Officer</div>
|
||||||
@ -46,7 +46,7 @@
|
|||||||
<li>
|
<li>
|
||||||
<hr />
|
<hr />
|
||||||
<div class="timeline-middle"><Circle class="fill-base-300" /></div>
|
<div class="timeline-middle"><Circle class="fill-base-300" /></div>
|
||||||
<div class="timeline-start timeline-box bg-base-300 mb-10 max-w-3xl">
|
<div class="timeline-start timeline-box bg-base-300 mb-10 max-w-3xl shadow-lg">
|
||||||
<div class="md:text-end">
|
<div class="md:text-end">
|
||||||
<time class="font-mono" datetime="2020-8">Aug 2020 - Oct 2022</time>
|
<time class="font-mono" datetime="2020-8">Aug 2020 - Oct 2022</time>
|
||||||
<div class="text-xl">St Pauls School</div>
|
<div class="text-xl">St Pauls School</div>
|
||||||
@ -86,7 +86,7 @@
|
|||||||
<li>
|
<li>
|
||||||
<hr />
|
<hr />
|
||||||
<div class="timeline-middle"><Circle class="fill-base-300" /></div>
|
<div class="timeline-middle"><Circle class="fill-base-300" /></div>
|
||||||
<div class="timeline-end timeline-box bg-base-300 max-w-3xl">
|
<div class="timeline-end timeline-box bg-base-300 max-w-3xl shadow-lg">
|
||||||
<time class="font-mono" datetime="2022-10">Oct 2022 - Feb 2023</time>
|
<time class="font-mono" datetime="2022-10">Oct 2022 - Feb 2023</time>
|
||||||
<div class="text-xl">St Pauls School</div>
|
<div class="text-xl">St Pauls School</div>
|
||||||
<div class="text-sm pb-2">System Administrator</div>
|
<div class="text-sm pb-2">System Administrator</div>
|
||||||
|
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 7.2 KiB |
Before Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 6.9 KiB |
@ -60,7 +60,9 @@
|
|||||||
I felt it appropriate to not hem myself in to a single major or minor.
|
I felt it appropriate to not hem myself in to a single major or minor.
|
||||||
</TextContent>
|
</TextContent>
|
||||||
|
|
||||||
<h1 class="my-6 text-6xl p-5 text-center text-base-content font-bold">Skills</h1>
|
<h1 class="my-6 text-6xl p-5 text-center text-base-content font-bold">
|
||||||
|
Skills & Confidence
|
||||||
|
</h1>
|
||||||
<Skills />
|
<Skills />
|
||||||
<TextContent>
|
<TextContent>
|
||||||
While this isn't an exhaustive list of all my skills, it is a brief list of skills I
|
While this isn't an exhaustive list of all my skills, it is a brief list of skills I
|
||||||
@ -70,3 +72,43 @@
|
|||||||
|
|
||||||
<h1 class="my-6 text-6xl p-5 text-center text-base-content font-bold">Experiences</h1>
|
<h1 class="my-6 text-6xl p-5 text-center text-base-content font-bold">Experiences</h1>
|
||||||
<Timeline />
|
<Timeline />
|
||||||
|
<h3 class="p-5 text-4xl text-center">Informal Experience</h3>
|
||||||
|
<TextContent>
|
||||||
|
Griffith University has also been helpful in engaging me with industry panels and
|
||||||
|
experiences. In early 2024, one of my units had a panel with some industry experts who
|
||||||
|
discussed what the future of the IT industry would look like. Coming away from that
|
||||||
|
panel, I felt better about the path I had taken. The experts all agreed that the
|
||||||
|
industry is an ever-changing field, so it really doesn't make sense to stay comfortable
|
||||||
|
with a single expertise.
|
||||||
|
</TextContent>
|
||||||
|
<TextContent middle={true}>
|
||||||
|
Another extracurricular activity I undertook was the 2023 'James-Jam'. In this activity,
|
||||||
|
groups were formed and given two weeks to construct a working game in p5play.js. The
|
||||||
|
theme was a game remniscient of Homeworld (1999). While this wasn't a competition, our
|
||||||
|
group did an amazing job at constructing a fully working game. You can play the game at
|
||||||
|
<a class="link" href="https://gamejam2023.nickbland.dev/">this link here</a>. And if you
|
||||||
|
want to view the source code, it can be found
|
||||||
|
<a class="link" href="https://github.com/NickBland">on my GitHub</a>.
|
||||||
|
</TextContent>
|
||||||
|
<TextContent middle={true} classes={"pt-5"}>
|
||||||
|
Outside of work experience and university, I also aim to learn new projects in my own
|
||||||
|
time. For example, the website you are reading this on was built by hand by me. You can
|
||||||
|
find the source code for this project, and others at my personal <a
|
||||||
|
class="link"
|
||||||
|
href="https://git.nickbland.dev">GitLab instance here</a
|
||||||
|
>
|
||||||
|
or my <a class="link" href="https://github.com/NickBland">GitHub here</a>.
|
||||||
|
</TextContent>
|
||||||
|
<TextContent middle={true} classes={"pt-5"}>
|
||||||
|
On top of that, I also have my own homelab setup. Utilising Proxmox, I run hosts and
|
||||||
|
containers for various services that both me, and my friends and family enjoy. For a
|
||||||
|
list of services that I am running, you can visit my <a
|
||||||
|
class="link"
|
||||||
|
href="https://status.nickbland.dev/">AWS-hosted status page here</a
|
||||||
|
>.
|
||||||
|
</TextContent>
|
||||||
|
<TextContent>
|
||||||
|
The homelab is a constantly evolving project that has given enabled me to self-teach
|
||||||
|
myself aspects of linux administration in a safer environment. In the future, I may have
|
||||||
|
a blog with some of the more interesting projects I've worked on.
|
||||||
|
</TextContent>
|
||||||
|
@ -1 +1,11 @@
|
|||||||
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
|
{
|
||||||
|
"name": "",
|
||||||
|
"short_name": "",
|
||||||
|
"icons": [
|
||||||
|
{ "src": "/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" },
|
||||||
|
{ "src": "/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" }
|
||||||
|
],
|
||||||
|
"theme_color": "#ffffff",
|
||||||
|
"background_color": "#ffffff",
|
||||||
|
"display": "standalone"
|
||||||
|
}
|
||||||
|
@ -13,9 +13,8 @@ const config = {
|
|||||||
// See https://kit.svelte.dev/docs/adapters for more information about adapters.
|
// See https://kit.svelte.dev/docs/adapters for more information about adapters.
|
||||||
adapter: adapter({
|
adapter: adapter({
|
||||||
routes: {
|
routes: {
|
||||||
include: ['/*'],
|
include: ["/*"],
|
||||||
|
},
|
||||||
}
|
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|