site v3
/ build (push) Has been cancelled Details

This commit is contained in:
core 2024-02-06 14:46:35 -05:00
parent c7729358d3
commit 6f269c18b7
Signed by: core
GPG Key ID: FDBF740DADDCEECF
50 changed files with 2849 additions and 2442 deletions

View File

@ -0,0 +1,14 @@
on: [push]
jobs:
build:
runs-on: docker
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Install nodejs
uses: actions/setup-node@v4
- name: Install dependencies
run: npm i
- name: Build static bundle
run: npm run build

View File

@ -1,38 +1,3 @@
# create-svelte # coredoesdev
Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte). core's personal site & portfolio
## Creating a project
If you're seeing this, you've probably already done this step. Congrats!
```bash
# create a new project in the current directory
npm create svelte@latest
# create a new project in my-app
npm create svelte@latest my-app
```
## Developing
Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
```bash
npm run dev
# or start the server and open the app in a new browser tab
npm run dev -- --open
```
## Building
To create a production version of your app:
```bash
npm run build
```
You can preview the production build with `npm run preview`.
> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment.

View File

@ -12,25 +12,31 @@
"format": "prettier --plugin-search-dir . --write ." "format": "prettier --plugin-search-dir . --write ."
}, },
"devDependencies": { "devDependencies": {
"@sveltejs/adapter-auto": "^2.0.0", "@bitmachina/highlighter": "1.0.0-alpha.5",
"@sveltejs/adapter-cloudflare": "^2.3.0", "@sveltejs/adapter-auto": "^3.1.1",
"@sveltejs/adapter-static": "^2.0.2", "@sveltejs/adapter-cloudflare": "^4.1.0",
"@sveltejs/kit": "^1.5.0", "@sveltejs/adapter-static": "^3.0.1",
"@types/prismjs": "^1.26.0", "@sveltejs/kit": "^2.5.0",
"@typescript-eslint/eslint-plugin": "^5.45.0", "@sveltejs/vite-plugin-svelte": "^3.0.0",
"@typescript-eslint/parser": "^5.45.0", "@types/prismjs": "^1.26.3",
"eslint": "^8.28.0", "@typescript-eslint/eslint-plugin": "^6.21.0",
"eslint-config-prettier": "^8.5.0", "@typescript-eslint/parser": "^6.21.0",
"eslint-plugin-svelte": "^2.26.0", "eslint": "^8.56.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-svelte": "^2.35.1",
"mdsvex": "^0.11.0", "mdsvex": "^0.11.0",
"prettier": "^2.8.0", "prettier": "^3.2.5",
"prettier-plugin-svelte": "^2.8.1", "prettier-plugin-svelte": "^3.1.2",
"prismjs": "^1.29.0", "prismjs": "^1.29.0",
"svelte": "^3.54.0", "svelte": "^4.2.10",
"svelte-check": "^3.0.1", "svelte-check": "^3.6.3",
"tslib": "^2.4.1", "tslib": "^2.6.2",
"typescript": "^5.0.0", "typescript": "^5.3.3",
"vite": "^4.3.0" "vite": "^5.0.12"
}, },
"type": "module" "type": "module",
"dependencies": {
"lucide-svelte": "^0.323.0",
"shiki": "1.0.0-rc.0"
}
} }

2409
pnpm-lock.yaml Normal file

File diff suppressed because it is too large Load Diff

View File

@ -7,6 +7,6 @@
%sveltekit.head% %sveltekit.head%
</head> </head>
<body data-sveltekit-preload-data="hover"> <body data-sveltekit-preload-data="hover">
<div style="display: contents">%sveltekit.body%</div> <div style="display: contents; position: absolute;">%sveltekit.body%</div>
</body> </body>
</html> </html>

View File

@ -1,99 +0,0 @@
<script lang="ts">
export let selected;
let pages = [
{id: "home", href: "/"},
{id: "projects", href: "/projects"},
{id: "about", href: "/about"},
{id: "contact", href: "/contact"},
{id: "blog", href: "/blog"}
]
</script>
<div class="bar">
<img alt="logo" src="/img/logo.png" class="logo" />
<div class="bar-right">
<nav class="nav">
<ul class="menu">
{#each pages as page}
{#if page.id === selected}
<li class="item"><a href="{page.href}" class="link selected">{page.id}();</a></li>
{:else}
<li class="item"><a href="{page.href}" class="link gradienthover">{page.id}();</a></li>
{/if}
{/each}
</ul>
</nav>
</div>
</div>
<style>
.bar {
width: 100%;
height: 60px;
}
.checkbox {
display: none;
}
.logo {
position: absolute;
top: 0;
left: 0;
width: 60px;
}
.bar-right {
float: right;
margin-top: 5px;
}
a {
text-decoration: none;
color: white;
}
a.selected {
color: #585b5f;
cursor: default;
}
ul {
list-style: none;
margin: 0;
padding: 0;
}
li {
text-align: right;
}
@media only screen and (max-width: 500px) {
li {
margin-bottom: 5px;
}
}
@media only screen and (min-width: 500px) {
.item {
display: inline;
margin-left: 5px;
}
.hideonlarge {
display: none;
}
}
.gradienthover:hover {
background-image: var(--core-gradient);
background-clip: text;
color: transparent;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-size: 100%;
background-repeat: repeat;
}
.item {
padding: 2px;
}
</style>

View File

@ -1,19 +0,0 @@
<script lang="ts">
export let offset = "35";
</script>
<div class="content">
<div style="--offset:{offset};" class="content-text">
<slot></slot>
</div>
</div>
<style>
@media only screen and (min-width: 500px) {
.content-text {
position: absolute;
top: calc(var(--offset) * 1%);
margin-left: 3.5%;
}
}
</style>

View File

@ -1,37 +0,0 @@
<script lang="ts">
export let title;
export let published;
export let description;
export let url;
</script>
<a class="blog-link" href="{url}">
<h2 class="blog-title">{title}</h2>
<time>{new Date(published).toLocaleDateString()}</time>
</a>
<p class="blog-description">{description}</p>
<style>
.blog-title {
display: inline;
}
.blog-link {
text-decoration: none;
text-decoration-color: transparent;
color: white;
transition: 0.2s;
}
.blog-link:hover {
text-decoration: underline;
text-decoration-color: white;
transition: 0.2s;
}
.blog-description {
font-size: 11pt;
color: #ababab;
}
</style>

View File

@ -4,7 +4,7 @@
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-display: swap; font-display: swap;
src: url(/fonts/firacode/woff2/firacode_cyrillic-ext.woff2) format('woff2'); src: url(/firacode/woff2/firacode_cyrillic-ext.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
} }
/* cyrillic */ /* cyrillic */
@ -13,7 +13,7 @@
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-display: swap; font-display: swap;
src: url(/fonts/firacode/woff2/firacode_cyrillic.woff2) format('woff2'); src: url(/firacode/woff2/firacode_cyrillic.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} }
/* greek-ext */ /* greek-ext */
@ -22,7 +22,7 @@
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-display: swap; font-display: swap;
src: url(/fonts/firacode/woff2/firacode_greek-ext.woff2) format('woff2'); src: url(/firacode/woff2/firacode_greek-ext.woff2) format('woff2');
unicode-range: U+1F00-1FFF; unicode-range: U+1F00-1FFF;
} }
/* greek */ /* greek */
@ -31,7 +31,7 @@
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-display: swap; font-display: swap;
src: url(/fonts/firacode/woff2/firacode_greek.woff2) format('woff2'); src: url(/firacode/woff2/firacode_greek.woff2) format('woff2');
unicode-range: U+0370-03FF; unicode-range: U+0370-03FF;
} }
/* latin-ext */ /* latin-ext */
@ -40,7 +40,7 @@
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-display: swap; font-display: swap;
src: url(/fonts/firacode/woff2/firacode_latin-ext.woff2) format('woff2'); src: url(/firacode/woff2/firacode_latin-ext.woff2) format('woff2');
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
} }
/* latin */ /* latin */
@ -49,6 +49,6 @@
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-display: swap; font-display: swap;
src: url(/fonts/firacode/woff2/firacode_latin.woff2) format('woff2'); src: url(/firacode/woff2/firacode_latin.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
} }

View File

@ -0,0 +1,4 @@
<script>
import Icon from './Icon.svelte';
</script>
<Icon alt="GitHub"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38C13.71 14.53 16 11.53 16 8c0-4.42-3.58-8-8-8Z" fill="#fff"/></svg></Icon>

18
src/lib/Icon/Icon.svelte Normal file
View File

@ -0,0 +1,18 @@
<script lang="ts">
export const alt: string | undefined = undefined;
</script>
<span class="icon" aria-label={alt}><slot /></span>
<style>
.icon {
height: 1em;
width: 1em;
opacity: 0.5;
display: inline-block;
transition: 0.2s;
}
:global(a) .icon:hover {
opacity: 0.9;
}
</style>

View File

@ -0,0 +1,8 @@
<script>
import Icon from './Icon.svelte'
</script>
<Icon alt="JavaScript">
<svg xmlns="http://www.w3.org/2000/svg" cursor="default" viewBox="0 0 1052 1052"><path fill-rule="evenodd" fill="#fff" d="M0 526v526h1053V0H0v526m783-48c-37 3-69 17-92 40-24 24-36 53-36 91 0 41 12 73 39 98 20 20 43 34 93 56 55 23 70 33 78 49 6 12 6 27 0 39s-21 24-39 28c-12 2-38 2-50-1-26-6-47-21-65-48l-6-8-79 45c-1 1 0 3 4 10 9 15 16 24 29 37a212 212 0 0 0 147 55c27-1 45-4 69-11a134 134 0 0 0 90-94c2-11 2-13 2-33l-1-31c-5-26-17-48-35-67-21-21-48-37-103-61-42-18-55-25-64-35-9-9-13-21-12-34 1-10 4-18 11-25 9-10 20-14 37-14 12 0 20 1 30 6 8 4 21 17 27 27l7 8 75-49c0-2-16-25-25-34-26-27-56-41-99-44h-32M473 659l-2 184c-5 21-16 32-34 36-8 2-26 1-33-1-17-5-29-16-42-39l-6-9-40 24-40 24 4 9c19 35 48 60 85 72 41 14 94 12 131-4 39-17 63-49 73-98l2-191V483h-98v176"/></svg>
</Icon>

7
src/lib/Icon/Kofi.svelte Normal file
View File

@ -0,0 +1,7 @@
<script>
import Icon from './Icon.svelte'
</script>
<Icon alt="Ko-fi">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#fff" d="M23.88 8.95c-.77-4.09-4.86-4.6-4.86-4.6H.72c-.6 0-.68.8-.68.8L.02 16.97c.17 2.43 2.59 2.68 2.59 2.68l11.96-.05c2.44-.43 2.69-2.57 2.66-3.74 4.35.24 7.42-2.83 6.65-6.91zm-11.06 3.5c-1.25 1.46-4.01 3.99-4.01 3.99s-.12.11-.31.02l-.11-.1-4.03-3.95c-.71-.96-1.05-2.7-.1-3.7.96-1.02 3.01-1.1 4.37.4 0 0 1.56-1.78 3.47-.96 1.9.82 1.83 3 .72 4.3zm6.17.49c-.93.11-1.68.02-1.68.02V7.29h1.77s1.97.55 1.97 2.64c0 1.92-.98 2.67-2.06 3.02z"/></svg>
</Icon>

View File

@ -0,0 +1,7 @@
<script lang="ts">
import Icon from "$lib/Icon/Icon.svelte";
</script>
<Icon alt="Laravel">
<svg viewBox="0 0 50 52" xmlns="http://www.w3.org/2000/svg"><path d="M49.626 11.564a.809.809 0 0 1 .028.209v10.972a.8.8 0 0 1-.402.694l-9.209 5.302V39.25c0 .286-.152.55-.4.694L20.42 51.01c-.044.025-.092.041-.14.058-.018.006-.035.017-.054.022a.805.805 0 0 1-.41 0c-.022-.006-.042-.018-.063-.026-.044-.016-.09-.03-.132-.054L.402 39.944A.801.801 0 0 1 0 39.25V6.334c0-.072.01-.142.028-.21.006-.023.02-.044.028-.067.015-.042.029-.085.051-.124.015-.026.037-.047.055-.071.023-.032.044-.065.071-.093.023-.023.053-.04.079-.06.029-.024.055-.05.088-.069h.001l9.61-5.533a.802.802 0 0 1 .8 0l9.61 5.533h.002c.032.02.059.045.088.068.026.02.055.038.078.06.028.029.048.062.072.094.017.024.04.045.054.071.023.04.036.082.052.124.008.023.022.044.028.068a.809.809 0 0 1 .028.209v20.559l8.008-4.611v-10.51c0-.07.01-.141.028-.208.007-.024.02-.045.028-.068.016-.042.03-.085.052-.124.015-.026.037-.047.054-.071.024-.032.044-.065.072-.093.023-.023.052-.04.078-.06.03-.024.056-.05.088-.069h.001l9.611-5.533a.801.801 0 0 1 .8 0l9.61 5.533c.034.02.06.045.09.068.025.02.054.038.077.06.028.029.048.062.072.094.018.024.04.045.054.071.023.039.036.082.052.124.009.023.022.044.028.068zm-1.574 10.718v-9.124l-3.363 1.936-4.646 2.675v9.124l8.01-4.611zm-9.61 16.505v-9.13l-4.57 2.61-13.05 7.448v9.216l17.62-10.144zM1.602 7.719v31.068L19.22 48.93v-9.214l-9.204-5.209-.003-.002-.004-.002c-.031-.018-.057-.044-.086-.066-.025-.02-.054-.036-.076-.058l-.002-.003c-.026-.025-.044-.056-.066-.084-.02-.027-.044-.05-.06-.078l-.001-.003c-.018-.03-.029-.066-.042-.1-.013-.03-.03-.058-.038-.09v-.001c-.01-.038-.012-.078-.016-.117-.004-.03-.012-.06-.012-.09v-.002-21.481L4.965 9.654 1.602 7.72zm8.81-5.994L2.405 6.334l8.005 4.609 8.006-4.61-8.006-4.608zm4.164 28.764l4.645-2.674V7.719l-3.363 1.936-4.646 2.675v20.096l3.364-1.937zM39.243 7.164l-8.006 4.609 8.006 4.609 8.005-4.61-8.005-4.608zm-.801 10.605l-4.646-2.675-3.363-1.936v9.124l4.645 2.674 3.364 1.937v-9.124zM20.02 38.33l11.743-6.704 5.87-3.35-8-4.606-9.211 5.303-8.395 4.833 7.993 4.524z" fill="#fff" fill-rule="evenodd"/></svg>
</Icon>

View File

@ -0,0 +1,7 @@
<script>
import Icon from './Icon.svelte'
</script>
<Icon alt="Matrix">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><text x="106" y="346" font-family="Arial" font-size="346"><tspan x="106" y="346" fill="#fff" font-weight="bold">m</tspan></text><path fill="#fff" d="M0 0h48v512H0zm48 0h64v48H48zm0 464h64v48H48zM512 0h-48v512h48zm-48 0h-64v48h64zm0 464h-64v48h64z"/></svg>
</Icon>

View File

@ -0,0 +1,7 @@
<script>
import Icon from './Icon.svelte'
</script>
<Icon alt="Python">
<svg fill="#fff" viewBox="0 0 110.4 109.8" xmlns="http://www.w3.org/2000/svg"><path d="M55 0C27 0 28.6 12.2 28.6 12.2v12.6h26.8v3.7H18s-18-2-18 26.3S15.8 82 15.8 82H25V69s-.5-15.6 15.4-15.6H67s15 .2 15-14.4V14.5S84.4-.2 55-.2zM40 8.5c2.7 0 4.8 2.2 4.8 4.8S42.7 18 40 18s-4.8-2.2-4.8-4.8 2-4.8 4.8-4.8zm15.6 101.3c28 0 26.3-12.2 26.3-12.2V85H55v-3.8h37.4s18 2 18-26.3-15.7-27.4-15.7-27.4h-9.3v13s.6 16-15.4 16H43.5s-15-.2-15 14.4v24s-2.3 14.7 27 14.7zm14.8-8.5c-2.7 0-4.8-2.2-4.8-4.8s2.2-4.8 4.8-4.8 4.8 2.2 4.8 4.8-2.2 4.8-4.8 4.8z"/></svg>
</Icon>

7
src/lib/Icon/Rust.svelte Normal file
View File

@ -0,0 +1,7 @@
<script>
import Icon from './Icon.svelte'
</script>
<Icon alt="Rust">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="16.47 16.57 109.07 108.88"><path fill="#fff" d="M71 23.7C45 23.7 23.8 45 23.8 71S45 118.2 71 118.2 118.3 97 118.3 71 97 23.7 71 23.7zm0 4.3a3.1 3.1 0 0 1 3 3.1 3.1 3.1 0 1 1-3-3.1zm7 5a38.3 38.3 0 0 1 26.2 18.7l-3.7 8.3c-.6 1.4 0 3 1.4 3.8l7 3a38.3 38.3 0 0 1 .1 6.6h-4c-.4 0-.5.3-.5.6v2c0 4.2-2.4 5.2-4.5 5.4-2 .2-4.2-.8-4.5-2-1.2-6.6-3-8-6.2-10.5 3.8-2.4 7.8-6 7.8-11 0-5.2-3.6-8.5-6-10a17 17 0 0 0-8.2-2.7H42.5A38.3 38.3 0 0 1 64 33l4.8 5c1 1 3 1.2 4 .1zM34 56a3.1 3.1 0 1 1-3.2 3.1A3.1 3.1 0 0 1 34 56zm74.2.1a3.1 3.1 0 1 1-3.2 3.1 3.1 3.1 0 0 1 3.2-3.1zm-68.3.5h5.4V81h-11A38.3 38.3 0 0 1 33 66.5l6.7-3c1.4-.6 2-2.3 1.4-3.7zm22.6.3h13c.7 0 4.7.8 4.7 3.8 0 2.5-3 3.4-5.7 3.4h-12zm0 17.6h10c1 0 4.8.3 6 5.3.4 1.5 1.3 6.6 1.8 8.2.6 1.8 3 5.4 5.5 5.4h16a38.3 38.3 0 0 1-3.5 4.1L91.8 96c-1.5-.3-3 .7-3.4 2.2l-1.6 7.3a38.3 38.3 0 0 1-31.9-.2L53.4 98c-.3-1.5-1.8-2.5-3.4-2.2l-6.4 1.4a38.3 38.3 0 0 1-3.3-3.9h31.3c.3 0 .6-.1.6-.4V82c0-.3-.2-.4-.6-.4h-9zM48 99.8a3.1 3.1 0 1 1-3.2 3.1 3.1 3.1 0 0 1 3.2-3.1zm46 .1a3.1 3.1 0 1 1-3.2 3.1 3.1 3.1 0 0 1 3.2-3.1z"/><path fill-rule="evenodd" fill="#fff" stroke="#fff" stroke-linejoin="round" stroke-width="3" d="M115.7 71a44.6 44.6 0 0 1-89.3 0 44.6 44.6 0 0 1 89.3 0zm-.8-4.3 7 4.3-7 4.3 6 5.6-7.7 3 4.8 6.7-8 1.3 3.4 7.5-8.2-.3 2 8-8-2 .3 8.2-7.5-3.4-1.3 8-6.7-4.8-3 7.7-5.6-6-4.3 7-4.3-7-5.6 6-3-7.7-6.6 4.8-1.3-8-7.5 3.4V105l-8 2 2-8-8.2.3 3.4-7.5-8-1.3 4.8-6.7-7.7-3 6-5.6-7-4.3 7-4.3-6-5.6 7.7-3-4.8-6.6 8-1.3-3.4-7.5 8.2.3-2-8 8 2v-8.2l7.5 3.4 1.3-8 6.6 4.8 3-7.7 5.6 6 4.3-7 4.3 7 5.6-6 3 7.7 6.7-4.8 1.3 8 7.5-3.4L99 37l8-2-2 8 8.2-.3-3.4 7.5 8 1.3-4.8 6.6 7.7 3z"/></svg>
</Icon>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,7 @@
<script>
import Icon from './Icon.svelte'
</script>
<Icon alt="TypeScript">
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 512 512"><path fill="#fff" d="M1 477V38l2-1C8 20 19 8 36 3l1-2h439l1 2c17 5 29 16 34 33l2 1v439l-2 1c-5 17-16 29-33 34l-1 2H38l-1-2c-17-5-29-16-34-33l-2-1m386-46c-25 2-48-6-69-22v42c0 8 0 8 7 11 32 11 64 12 97 4 39-10 55-41 47-79-4-18-16-30-32-39l-40-19c-7-4-15-8-21-14-9-9-8-22 4-29 4-3 9-5 14-6 16-3 32-1 47 4l20 9v-43l-4-4c-30-9-61-10-91-2-19 6-35 16-44 35a62 62 0 0 0 27 81c12 7 25 12 38 18 9 4 18 9 25 17 9 10 7 24-5 30-5 3-12 4-20 6m-204-71v108h51V285h64v-41H119v41h64v75z"/></svg>
</Icon>

27
src/lib/InlineIcon.svelte Normal file
View File

@ -0,0 +1,27 @@
<script lang="ts">
import GitHub from "$lib/Icon/GitHub.svelte";
import JavaScript from "$lib/Icon/JavaScript.svelte";
import Kofi from "$lib/Icon/Kofi.svelte";
import Matrix from "$lib/Icon/Matrix.svelte";
import Python from "$lib/Icon/Python.svelte";
import Rust from "$lib/Icon/Rust.svelte";
import Svelte from "$lib/Icon/Svelte.svelte";
import TypeScript from "$lib/Icon/TypeScript.svelte";
import Laravel from "$lib/Icon/Laravel.svelte";
export let id: string;
let options = new Map(Object.entries({
"github": GitHub,
"javascript": JavaScript,
"kofi": Kofi,
"matrix": Matrix,
"python": Python,
"rust": Rust,
"svelte": Svelte,
"typescript": TypeScript,
"laravel": Laravel,
}));
</script>
<svelte:component this={options.get(id)} />

View File

@ -1,27 +0,0 @@
<script>
export let title = 'Untitled';
export let published = '';
</script>
<svelte:head>
<title>{title} - blog - coredoesdev</title>
</svelte:head>
<h1>{title}</h1>
<span><a class="blog-link" href="/blog/">← Back</a> - <time>{new Date(published).toLocaleDateString()}</time></span>
<slot />
<style>
.blog-link {
text-decoration: none;
text-decoration-color: transparent;
color: white;
transition: 1s;
}
.blog-link:hover {
text-decoration: underline;
text-decoration-color: white;
}
</style>

54
src/lib/app.css Normal file
View File

@ -0,0 +1,54 @@
@import "FiraCode.css";
:root {
--bg-color: #0e1313;
--core-green: rgba(0, 214, 143, 1);
--core-green-transparent: rgba(0, 214, 143, 0.5);
--core-blue: rgba(5, 40, 176, 1);
--core-light-blue: #007ec2;
--core-gradient: linear-gradient(90deg, rgba(0, 214, 143, 1) 0%, rgba(5, 40, 176, 1) 100%);
}
html {
scroll-behavior: smooth;
font-family: 'Fira Code', monospace;
padding-top: 10vh;
padding-bottom: 10vh;
}
@media only screen and (max-width: 480px) {
html {
padding-top: 2vh;
padding-bottom: 0;
}
}
body {
background-color: var(--bg-color);
color: white;
background-size: 40px 40px;
background-image: radial-gradient(circle, var(--core-green-transparent) 1px, rgba(0, 0, 0, 0) 1px);
animation: linear 2s bg-scroll infinite;
}
@keyframes bg-scroll {
0% {
background-position: 0 0;
}
100% {
background-position: 40px 40px;
}
}
a {
color: var(--core-green);
}
h1 {
margin-top: 0;
}
.shiki {
padding: 10px;
border-radius: 5px;
}

10
src/lib/blog.json Normal file
View File

@ -0,0 +1,10 @@
{
"posts": [
{
"name": "Who is core?",
"slug": "who-is-core",
"about": "A *very* brief introduction to who I am and what I do",
"posted": "2024-02-06T18:19:25.205Z"
}
]
}

16
src/lib/highlighter.js Normal file
View File

@ -0,0 +1,16 @@
import {codeToHtml} from 'shiki';
const THEME = 'vitesse-dark';
async function highlighter(code, lang, meta) {
return (await codeToHtml(code, {
theme: THEME,
lang,
decorations: JSON.parse(meta)
})).replace(
/[{}`]/g,
(character) => ({ '{': '&lbrace;', '}': '&rbrace;', '`': '&grave;' }[character]),
);
}
export default highlighter;

92
src/lib/projects.json Normal file
View File

@ -0,0 +1,92 @@
{
"projects": [
{
"name": "StarKingdoms.TK",
"role": "Co-Developer",
"about": "A browser game about floating through space",
"source": "https://gitlab.com/starkingdoms.tk/starkingdoms.tk/-/tree/bevy_rewrite",
"link": "https://starkingdoms.io",
"tech": ["rust", "svelte", "typescript", "github"]
},
{
"name": "Trifid",
"role": "Creator",
"about": "A free and open source reimplementation of the Defined Networking control server & clients",
"source": "https://git.e3t.cc/core/trifid",
"link": "https://next.trifid.e3t.cc",
"tech": ["rust", "github"]
},
{
"name": "Hayya",
"role": "Project Lead",
"about": "The next-generation division HQ for VATSIM Middle East & North Africa",
"source": "https://github.com/VATMENA/hayya",
"link": "httpa://hayya.vatsim.me",
"tech": ["svelte", "typescript", "github"]
},
{
"name": "vZTL ARTCC Website",
"role": "Team Member",
"about": "The current vZTL ARTCC website",
"source": "https://github.com/ZTL-ARTCC/Current_Website",
"link": "https://ztlartcc.org",
"tech": ["laravel", "javascript", "github"]
},
{
"name": "Personal Site",
"role": "Creator",
"about": "The site you're looking at right now!",
"source": "https://git.e3t.cc/core/coredoesdev",
"link": "https://coredoes.dev",
"tech": ["svelte", "github"]
},
{
"name": "Personal Site",
"role": "Creator",
"about": "The site you're looking at right now!",
"source": "https://git.e3t.cc/core/coredoesdev",
"link": "https://coredoes.dev",
"tech": ["svelte", "github"]
},
{
"name": "Personal Site",
"role": "Creator",
"about": "The site you're looking at right now!",
"source": "https://git.e3t.cc/core/coredoesdev",
"link": "https://coredoes.dev",
"tech": ["svelte", "github"]
},
{
"name": "Personal Site",
"role": "Creator",
"about": "The site you're looking at right now!",
"source": "https://git.e3t.cc/core/coredoesdev",
"link": "https://coredoes.dev",
"tech": ["svelte", "github"]
},
{
"name": "Personal Site",
"role": "Creator",
"about": "The site you're looking at right now!",
"source": "https://git.e3t.cc/core/coredoesdev",
"link": "https://coredoes.dev",
"tech": ["svelte", "github"]
},
{
"name": "Personal Site",
"role": "Creator",
"about": "The site you're looking at right now!",
"source": "https://git.e3t.cc/core/coredoesdev",
"link": "https://coredoes.dev",
"tech": ["svelte", "github"]
},
{
"name": "Personal Site",
"role": "Creator",
"about": "The site you're looking at right now!",
"source": "https://git.e3t.cc/core/coredoesdev",
"link": "https://coredoes.dev",
"tech": ["svelte", "github"]
}
]
}

View File

@ -1,53 +1,39 @@
<script lang="ts"> <script lang="ts">
// Prism core import "$lib/app.css";
import Prism from "prismjs";
// Prism theme
import "prismjs/themes/prism-twilight.css";
// Prism languages
import "prismjs/components/prism-rust.js";
import "prismjs/components/prism-diff.js";
// Prism plugins
import "prismjs/plugins/line-numbers/prism-line-numbers.js"; // Line numbers
import "prismjs/plugins/line-numbers/prism-line-numbers.css"; // Line numbers
import "prismjs/plugins/line-highlight/prism-line-highlight.js"; // Line highlight
import "prismjs/plugins/line-highlight/prism-line-highlight.css"; // Line highlight
import "prismjs/plugins/autolinker/prism-autolinker.js"; // Autolinker
import "prismjs/plugins/autolinker/prism-autolinker.css"; // Autolinker
import "prismjs/plugins/toolbar/prism-toolbar.css"; // Toolbar
import "prismjs/plugins/toolbar/prism-toolbar.js"; // Toolbar
import "prismjs/plugins/show-language/prism-show-language.js"; // Show Language (broken?)
import "prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js"; // Copy to Clipboard
import "prismjs/plugins/download-button/prism-download-button.js"; // Download Button
import "prismjs/plugins/match-braces/prism-match-braces.css"; // Match Braces
import "prismjs/plugins/match-braces/prism-match-braces.js"; // Match Braces
import "prismjs/plugins/diff-highlight/prism-diff-highlight.css"; // Diff Highlight
import "prismjs/plugins/diff-highlight/prism-diff-highlight.js"; // Diff Highlight
import "prismjs/plugins/treeview/prism-treeview.css"; // Treeview
import "prismjs/plugins/treeview/prism-treeview.js"; // Treeview
import {onMount} from "svelte";
onMount(() => {
window.Prism = window.Prism || {};
window.Prism.manual = true;
Prism.highlightAll();
})
</script> </script>
<svelte:head> <div class="content-container">
<link rel="stylesheet" href="/css/common.css"> <slot></slot>
</svelte:head> </div>
<slot></slot> <span class="footer">made with &lt;3 by core</span>
<style>
.footer {
position: fixed;
bottom: 1vh;
left: 1vw;
}
.content-container {
border: 1px solid var(--core-blue);
border-radius: 10px;
height: min-content;
width: 30vw;
position: relative;
top: 0;
left: 0;
bottom: 0;
right: 0;
padding: 20px;
margin: auto;
background-color: var(--bg-color);
}
@media only screen and (max-width: 480px) {
.content-container {
width: 90vw;
box-sizing: border-box;
}
}
</style>

View File

@ -1 +0,0 @@
export const prerender = true;

View File

@ -1,58 +1,14 @@
<script>
import Bar from "$components/Bar.svelte";
import Content from "$components/Content.svelte";
</script>
<svelte:head> <svelte:head>
<title>coredoesdev</title> <title>coredoesdev</title>
</svelte:head> </svelte:head>
<Bar selected="home"/> <h1>hi, i'm core</h1>
<Content> <p>i'm a software developer and sysadmin that likes to make cool things. i host things with my buddies in <a href="https://e3t.cc">e3team</a>.</p>
<p>Hi, I'm <span class="gradient">core</span>.</p> <p>check out <a href="/projects">my projects</a> or <a href="/blog">my blog</a></p>
<p>I'm a freelance software developer and video editor.</p>
<span><span class="coregreen">[core ~]$</span> ls</span>
<ul class="lsres">
<li class="lsli"><a class="ls" href="/">.</a></li>
<li class="lsli"><a class="ls" href="/projects">projects/</a></li>
<li class="lsli"><a class="ls" href="/about">about.txt</a></li>
<li class="lsli"><a class="ls" href="/contact">contact.txt</a></li>
<li class="lsli"><a class="ls" href="/blog">blog/</a></li>
</ul>
<p>click to navigate</p>
</Content>
<style> <h2>contact</h2>
.gradient { <p>find me on <a href="https://github.com/c0repwn3r">github</a>, <a href="https://discord.com/users/476905356723748867">discord</a>, or <a href="mailto:core@coredoes.dev">email</a>.</p>
background-image: var(--core-gradient);
background-clip: text;
color: transparent;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
-moz-background-clip: text;
-moz-text-fill-color: transparent;
background-size: 100%;
background-repeat: repeat;
}
.coregreen { <h2>pgp</h2>
color: var(--core-green); <p>my PGP keys are <a href="https://keyserver.ubuntu.com/pks/lookup?search=0993C4025628F30A47381A43FDBF740DADDCEECF&fingerprint=on&op=index">this one</a> <b>and</b> <a href="https://keyserver.ubuntu.com/pks/lookup?search=8581C1619952B409DC4C5DB79D0DAED5555DD0B4&fingerprint=on&op=index">this one too</a></p>
}
.ls {
color: var(--core-light-blue);
transition: 0.2s;
text-decoration: none;
}
.ls:hover:not(.nohover) {
color: var(--core-blue);
}
.lsres {
list-style: none;
margin: 0;
padding: 0;
}
</style>

View File

@ -1,50 +0,0 @@
<script>
import Bar from "$components/Bar.svelte";
import Content from "$components/Content.svelte";
</script>
<svelte:head>
<title>about - coredoesdev</title>
</svelte:head>
<Bar selected="about"/>
<Content offset="20">
<span><span class="coregreen">[core ~]$</span> cat about.txt</span>
<p><i>Q: Who are you?</i></p>
<p>A: I'm core, an independent freelance software developer and video editor.</p>
<p><i>Q: What do you make?</i></p>
<p>A: I make lots of different things. You can see all the projects I am involved in <a class="hover-click hovergradient link" href="/projects">here.</a> This list isn't complete though.</p>
<p><i>Q: What programming languages/technologies do you use?</i></p>
<p>A: All of them! In all seriousness, for each project (if it's not too important) I try to learn some new technique, technology or language. If I am making something important, I'll use something I am comfortable with, typically Svelte for web-anything and Rust for everything else. I also use Python quite a lot. You can scroll through the project page and each project has a listing of what language or technology was used to build it.</p>
<p><i>Q: Who do you work with?</i></p>
<p>A: Most of the time I'm working with my buddies in <a class="hover-click hovergradient link" href="https://e3t.cc">e3team.</a></p>
<p><a class="link hovergradient" href="/">&larr; return home</a></p>
</Content>
<style>
.hover-click {
cursor: pointer;
}
.hovergradient:hover {
background-image: var(--core-gradient);
background-clip: text;
color: transparent;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
-moz-background-clip: text;
-moz-text-fill-color: transparent;
background-size: 100%;
background-repeat: repeat;
}
.link {
text-decoration: none;
color: var(--core-light-blue);
}
.coregreen {
color: var(--core-green);
}
</style>

View File

@ -1,30 +1,20 @@
<script lang="ts"> <script lang="ts">
import Bar from "$components/Bar.svelte"; import posts from "$lib/blog.json";
import Content from "$components/Content.svelte";
import PostPreview from "$components/PostPreview.svelte";
import blog_test from "./blog-test/data.json";
import hello from "./hello/data.json";
interface PostData {
title: string,
published: string,
short_description: string,
slug: string
}
let posts = [
blog_test,
hello
];
</script> </script>
<Bar selected="blog"/> <h1>blog</h1>
<Content offset="15"> {#each posts.posts as post}
{#each posts as post} <h3><a href="/blog/{post.slug}">{post.name}</a></h3>
<PostPreview title={post.title} published={post.published} description={post.short_description} url="/blog/{post.slug}" /> <p class="darker">{post.about}</p>
<br> <p class="darkest">Posted: {new Date(post.posted).toLocaleString()}</p>
{/each} {/each}
</Content>
<style>
.darker {
color: rgba(255, 255, 255, 0.8);
}
.darkest {
color: rgba(255, 255, 255, 0.6);
}
</style>

View File

@ -1,59 +0,0 @@
<script lang="ts">
import PostContent from "./page.svx";
import Bar from "$components/Bar.svelte";
import Content from "$components/Content.svelte";
// Prism core
import Prism from "prismjs";
// Prism theme
import "prismjs/themes/prism-twilight.css";
// Prism languages
import "prismjs/components/prism-rust.js";
import "prismjs/components/prism-diff.js";
// Prism plugins
import "prismjs/plugins/line-numbers/prism-line-numbers.js"; // Line numbers
import "prismjs/plugins/line-numbers/prism-line-numbers.css"; // Line numbers
import "prismjs/plugins/line-highlight/prism-line-highlight.js"; // Line highlight
import "prismjs/plugins/line-highlight/prism-line-highlight.css"; // Line highlight
import "prismjs/plugins/autolinker/prism-autolinker.js"; // Autolinker
import "prismjs/plugins/autolinker/prism-autolinker.css"; // Autolinker
import "prismjs/plugins/toolbar/prism-toolbar.css"; // Toolbar
import "prismjs/plugins/toolbar/prism-toolbar.js"; // Toolbar
import "prismjs/plugins/show-language/prism-show-language.js"; // Show Language (broken?)
import "prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js"; // Copy to Clipboard
import "prismjs/plugins/download-button/prism-download-button.js"; // Download Button
import "prismjs/plugins/match-braces/prism-match-braces.css"; // Match Braces
import "prismjs/plugins/match-braces/prism-match-braces.js"; // Match Braces
import "prismjs/plugins/diff-highlight/prism-diff-highlight.css"; // Diff Highlight
import "prismjs/plugins/diff-highlight/prism-diff-highlight.js"; // Diff Highlight
import "prismjs/plugins/treeview/prism-treeview.css"; // Treeview
import "prismjs/plugins/treeview/prism-treeview.js"; // Treeview
import {onMount} from "svelte";
onMount(() => {
window.Prism = window.Prism || {};
window.Prism.manual = true;
Prism.highlightAll();
})
</script>
<Bar selected="none"/>
<Content offset="10">
<PostContent />
</Content>

View File

@ -1,6 +0,0 @@
{
"title": "Blog Test",
"published": "2023-06-30T22:22:19+0000",
"short_description": "Testing the new blog system",
"slug": "blog-test"
}

View File

@ -1,29 +0,0 @@
---
title: Blog Test
published: 2023-06-30T22:22:19+0000
---
# Testing out the blog system
i wanted to make a new blog lol
so, uh Ahere we are!
```rust?lines=2-3
pub fn code_highlighting() {
// lines can be highlighted
println!("works!");
// links are converted: https://example.com
}
```
Diff's work too:
```diff-rust
pub fn code_highlighting() {
// lines can be highlighted
- println!("works!");
+ let foo = 1;
// links are converted: https://example.com
}
```

View File

@ -1,59 +0,0 @@
<script lang="ts">
import PostContent from "./page.svx";
import Bar from "$components/Bar.svelte";
import Content from "$components/Content.svelte";
// Prism core
import Prism from "prismjs";
// Prism theme
import "prismjs/themes/prism-twilight.css";
// Prism languages
import "prismjs/components/prism-rust.js";
import "prismjs/components/prism-diff.js";
// Prism plugins
import "prismjs/plugins/line-numbers/prism-line-numbers.js"; // Line numbers
import "prismjs/plugins/line-numbers/prism-line-numbers.css"; // Line numbers
import "prismjs/plugins/line-highlight/prism-line-highlight.js"; // Line highlight
import "prismjs/plugins/line-highlight/prism-line-highlight.css"; // Line highlight
import "prismjs/plugins/autolinker/prism-autolinker.js"; // Autolinker
import "prismjs/plugins/autolinker/prism-autolinker.css"; // Autolinker
import "prismjs/plugins/toolbar/prism-toolbar.css"; // Toolbar
import "prismjs/plugins/toolbar/prism-toolbar.js"; // Toolbar
import "prismjs/plugins/show-language/prism-show-language.js"; // Show Language (broken?)
import "prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.js"; // Copy to Clipboard
import "prismjs/plugins/download-button/prism-download-button.js"; // Download Button
import "prismjs/plugins/match-braces/prism-match-braces.css"; // Match Braces
import "prismjs/plugins/match-braces/prism-match-braces.js"; // Match Braces
import "prismjs/plugins/diff-highlight/prism-diff-highlight.css"; // Diff Highlight
import "prismjs/plugins/diff-highlight/prism-diff-highlight.js"; // Diff Highlight
import "prismjs/plugins/treeview/prism-treeview.css"; // Treeview
import "prismjs/plugins/treeview/prism-treeview.js"; // Treeview
import {onMount} from "svelte";
onMount(() => {
window.Prism = window.Prism || {};
window.Prism.manual = true;
Prism.highlightAll();
})
</script>
<Bar selected="none"/>
<Content offset="10">
<PostContent />
</Content>

View File

@ -1,6 +0,0 @@
{
"title": "Welcome to my blog!",
"published": "2023-07-01T19:08:18+0000",
"short_description": "An introduction to me and what this blog is about",
"slug": "hello"
}

View File

@ -1,6 +0,0 @@
---
title: Welcome to my blog!
published: 2023-07-01T19:08:18+0000
---
Hello! I'm core, I make silly things and this is my blog.

View File

@ -0,0 +1,14 @@
# who is core?
hi, i'm core, a full-stack developer and systems administrator. i do silly things and this is my website/blog/portfolio!
## codeblock testing
```javascript []
fn main() {
test;
}
fn blah() {
well ello;
}
```

View File

@ -1,55 +0,0 @@
<script>
import Bar from "$components/Bar.svelte";
import Content from "$components/Content.svelte";
</script>
<svelte:head>
<title>contact - coredoesdev</title>
</svelte:head>
<Bar selected="contact"/>
<Content offset="30">
<span><span class="coregreen">[core ~]$</span> cat contact.txt</span>
<p>You can reach me in many places.</p>
<ul>
<li>Matrix: @core:e3t.cc</li>
<li>Mastodon: TBD</li>
<li>Discord: core#8531</li>
<li>Email: core (AT) coredoes (DOT) dev, or core (AT) e3t (DOT) cc</li>
</ul>
<p>I take security very seriously. Do <b>not</b> be afraid to ask for PGP. My two PGP keys are:</p>
<ul>
<li class="hover-click"><a href="https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xb630ee3b52b8ab02b29588b907956edecb6d8a16" class="link hovergradient">B630EE3B52B8AB02B29588B907956EDECB6D8A16</a></li>
<li class="hover-click"><a href="https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x8581c1619952b409dc4c5db79d0daed5555dd0b4" class="link hovergradient">8581C1619952B409DC4C5DB79D0DAED5555DD0B4</a></li>
<li class="hover-click"><a href="https://meta.e3t.cc/~core.pgp" class="link hovergradient">or, download both</a></li>
</ul>
<p><a class="link hovergradient" href="/">&larr; return home</a></p>
</Content>
<style>
.hover-click {
cursor: pointer;
}
.hovergradient:hover {
background-image: var(--core-gradient);
background-clip: text;
color: transparent;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
-moz-background-clip: text;
-moz-text-fill-color: transparent;
background-size: 100%;
background-repeat: repeat;
}
.link {
text-decoration: none;
color: var(--core-light-blue);
}
.coregreen {
color: var(--core-green);
}
</style>

View File

@ -1,163 +1,57 @@
<script lang="ts"> <script lang="ts">
import Bar from "$components/Bar.svelte"; import projects from "$lib/projects.json";
import Content from "$components/Content.svelte"; import InlineIcon from "$lib/InlineIcon.svelte";
enum TechOrLang {
TypeScript = 'typescript',
Rust = 'rust',
Ansible = 'ansible',
Bash = 'bash',
InkScape = 'inkscape',
Jenkins = 'jenkins',
Python = 'python',
Squarespace = 'squarespace',
ActixWeb = 'actix-web',
Postgresql = 'postgres',
SeaORM = 'seaorm',
NebulaVPN = 'nebula-vpn',
Cryptography = 'cryptography',
PKI = 'pki',
JavaScript = 'javascript',
Electron = 'electron',
React = 'react',
Wordpress = 'wordpress',
PHP = 'php',
Ed25519 = 'ed25519',
Networking = 'networking',
Tarpaulin = 'tarpaulin',
Tokio = 'tokio',
AsyncStd = 'async-std'
}
interface Project {
id: string,
name: string,
role: string,
tech: TechOrLang[],
link: string
}
let projects: Project[] = [
{
id: "starkingdoms.io",
name: "StarKingdoms.IO",
role: "Co-Developer",
tech: [TechOrLang.TypeScript, TechOrLang.Rust,
TechOrLang.Ansible, TechOrLang.Bash,
TechOrLang.InkScape, TechOrLang.Jenkins,
TechOrLang.Python, TechOrLang.AsyncStd],
link: "https://starkingdoms.io"
},
{
id: "4circlecoaching",
name: "4 Circle Coaching",
role: "Contributor",
tech: [TechOrLang.Squarespace],
link: "https://4circlecoaching.com"
},
{
id: "trifid",
name: "trifid",
role: "Project Lead",
tech: [TechOrLang.Rust, TechOrLang.Cryptography, TechOrLang.ActixWeb, TechOrLang.NebulaVPN, TechOrLang.Postgresql, TechOrLang.SeaORM, TechOrLang.PKI],
link: "https://hub.e3t.cc/~core/trifid"
},
{
id: "dnapi-rs",
name: "dnapi-rs",
role: "Project Lead",
tech: [TechOrLang.Rust, TechOrLang.Cryptography, TechOrLang.NebulaVPN, TechOrLang.PKI],
link: "https://crates.io/crates/dnapi-rs"
},
{
id: "pyblocks",
name: "PyBlocks",
role: "Project Lead",
tech: [TechOrLang.JavaScript, TechOrLang.Python, TechOrLang.Electron, TechOrLang.React],
link: "https://git.e3t.cc/~core/pyblocks"
},
{
id: "smst",
name: "Stingrays Summer Swim Team",
role: "Freelance Developer",
tech: [TechOrLang.Wordpress, TechOrLang.PHP],
link: "https://gosmst.com"
},
{
id: "e3pf",
name: "e3team Protocol Framework",
role: "Project Lead",
tech: [TechOrLang.Rust, TechOrLang.Cryptography, TechOrLang.Networking, TechOrLang.Ed25519, TechOrLang.Tokio],
link: "https://git.e3t.cc/~core/e3pf"
}
];
</script> </script>
<svelte:head> <h1>projects</h1>
<title>projects - coredoesdev</title>
</svelte:head>
<Bar selected="projects"/> <div class="projects">
{#each projects.projects as project}
<div class="project-container">
<div class="project-header">
<a href={project.link}>{project.name}</a>
<Content offset="25"> {#each project.tech as techId}
<p>This is a <i>rough</i> listing of projects I am or have been involved with, along with my role and relavent concepts or technologies. This list is not complete as some projects do not warrant inclusion here.</p> <div class="icon">
<span><span class="coregreen">[core ~]$</span> ls projects/</span> {#if techId === "github"}
<ul class="lsres"> <a href={project.source} title="Source"><InlineIcon id={techId} /></a>
{#each projects as project} {:else}
<li class="lsli"><a class="ls" href="{project.link}">{project.name}</a> - {project.role} - {project.tech.join(', ')}</li> <InlineIcon id={techId}/>
{/each} {/if}
</ul> </div>
<p>click to visit</p> {/each}
<p><a class="link hovergradient" href="/">&larr; return home</a></p> </div>
</Content> <p>{project.role} - {project.about}</p>
</div>
{/each}
</div>
<a href="/">go back</a>
<style> <style>
.gradient { .icon {
background-image: var(--core-gradient); display: inline-block;
background-clip: text; }
color: transparent; .icon:not(:first-child) {
-webkit-background-clip: text; margin-left: 0.5rem;
-webkit-text-fill-color: transparent;
-moz-background-clip: text;
-moz-text-fill-color: transparent;
background-size: 100%;
background-repeat: repeat;
} }
.hovergradient:hover { .project-container {
background-image: var(--core-gradient); display: block;
background-clip: text; padding-bottom: 10px;
color: transparent; border-bottom: 1px dashed var(--core-blue);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
-moz-background-clip: text;
-moz-text-fill-color: transparent;
background-size: 100%;
background-repeat: repeat;
} }
.link { .project-container:not(:first-child) {
text-decoration: none; margin-top: 10px;
color: var(--core-light-blue);
} }
.coregreen { .project-container:last-child {
color: var(--core-green); margin-bottom: 10px;
} }
.ls { .project-container .project-header {
color: var(--core-light-blue); font-size: large;
transition: 0.2s; color: white;
text-decoration: none;
}
.ls:hover:not(.nohover) {
color: var(--core-blue);
}
.lsres {
list-style: none;
margin: 0;
padding: 0;
} }
</style> </style>

View File

@ -1,19 +0,0 @@
@import url('/fonts/firacode/FiraCode.css');
:root {
--bg-color: #0E1313;
--core-green: rgba(0, 214, 143, 1);
--core-blue: rgba(5, 40, 176, 1);
--core-light-blue: #007ec2;
--core-gradient: linear-gradient(90deg, rgba(0, 214, 143, 1) 0%, rgba(5, 40, 176, 1) 100%);
}
html {
scroll-behavior: smooth; /* smooth scroll anchors */
}
body {
background-color: var(--bg-color);
font-family: 'Fira Code', monospace;
color: white;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

View File

@ -1,40 +1,7 @@
import adapter from '@sveltejs/adapter-static'; import adapter from '@sveltejs/adapter-static';
import { vitePreprocess } from '@sveltejs/kit/vite'; import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
import {mdsvex} from "mdsvex"; import {mdsvex} from "mdsvex";
import highlighter from "./src/lib/highlighter.js";
function escapeBraces(unsafe)
{
return unsafe
.replace(/{/g, "&#123;")
.replace(/}/g, "&#125;");
}
function highlighter(code, lang) {
// Lang can be:
// just the lang ('rust')
// the lang, then in brackets lines to hightlight ('rust[1-5,9,21-23]')
let params = new URLSearchParams(lang.split('?')[1]);
let real_lang = lang.split('?')[0];
let classes = [`language-${real_lang}`];
let props = "";
if (params.has("lines")) {
props += `data-line="${params.get("lines")}" `;
}
if (params.has("src")) {
props += `data-src="${params.get("src")}" `;
}
if (params.has("enableDownload")) {
props += "data-download-link ";
}
if (params.has("downloadLabel")) {
props += `data-download-link-label="${params.get("downloadLabel")}" `;
}
return `<pre class="rainbow-braces diff-highlight line-numbers match-braces ${classes}" ${props}><code class="language-${real_lang}" ${props}>${escapeBraces(code)}</code></pre>`
}
/** @type {import('@sveltejs/kit').Config} */ /** @type {import('@sveltejs/kit').Config} */
const config = { const config = {
@ -43,8 +10,6 @@ const config = {
preprocess: [ preprocess: [
vitePreprocess(), vitePreprocess(),
mdsvex({ mdsvex({
extensions: ['.svx'],
layout: './src/lib/PostLayout.svelte',
highlight: { highlight: {
highlighter highlighter
} }
@ -58,9 +23,6 @@ const config = {
// If your environment is not supported or you settled on a specific environment, switch out the adapter. // If your environment is not supported or you settled on a specific environment, switch out the adapter.
// 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(),
alias: {
"$components": "src/components"
}
} }
}; };

1595
yarn.lock

File diff suppressed because it is too large Load Diff