Compare commits
11 Commits
Author | SHA1 | Date |
---|---|---|
trivernis | f24e19a795 | 4 months ago |
trivernis | 5d135d6de4 | 4 months ago |
trivernis | 5179d4aa01 | 4 months ago |
trivernis | f4f0b034f6 | 4 months ago |
trivernis | 64d2c41b22 | 4 months ago |
trivernis | 40f47df9ff | 2 years ago |
trivernis | dcb3a51950 | 2 years ago |
trivernis | 1fa616a4d0 | 2 years ago |
trivernis | b9eec17164 | 2 years ago |
trivernis | 0e16c0314c | 2 years ago |
trivernis | 3a638291e0 | 2 years ago |
@ -1,3 +1,10 @@
|
|||||||
node_modules
|
|
||||||
.git
|
.git
|
||||||
|
node_modules
|
||||||
|
.eslint*
|
||||||
|
.prettier*
|
||||||
|
.git*
|
||||||
|
.vscode
|
||||||
|
Containerfile*
|
||||||
|
public
|
||||||
|
.svelte-kit
|
||||||
build
|
build
|
@ -1,13 +0,0 @@
|
|||||||
.DS_Store
|
|
||||||
node_modules
|
|
||||||
/build
|
|
||||||
/.svelte-kit
|
|
||||||
/package
|
|
||||||
.env
|
|
||||||
.env.*
|
|
||||||
!.env.example
|
|
||||||
|
|
||||||
# Ignore files for PNPM, NPM and YARN
|
|
||||||
pnpm-lock.yaml
|
|
||||||
package-lock.json
|
|
||||||
yarn.lock
|
|
@ -1,20 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
root: true,
|
|
||||||
parser: '@typescript-eslint/parser',
|
|
||||||
extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'],
|
|
||||||
plugins: ['svelte3', '@typescript-eslint'],
|
|
||||||
ignorePatterns: ['*.cjs'],
|
|
||||||
overrides: [{ files: ['*.svelte'], processor: 'svelte3/svelte3' }],
|
|
||||||
settings: {
|
|
||||||
'svelte3/typescript': () => require('typescript')
|
|
||||||
},
|
|
||||||
parserOptions: {
|
|
||||||
sourceType: 'module',
|
|
||||||
ecmaVersion: 2020
|
|
||||||
},
|
|
||||||
env: {
|
|
||||||
browser: true,
|
|
||||||
es2017: true,
|
|
||||||
node: true
|
|
||||||
}
|
|
||||||
};
|
|
@ -1,13 +0,0 @@
|
|||||||
.DS_Store
|
|
||||||
node_modules
|
|
||||||
/build
|
|
||||||
/.svelte-kit
|
|
||||||
/package
|
|
||||||
.env
|
|
||||||
.env.*
|
|
||||||
!.env.example
|
|
||||||
|
|
||||||
# Ignore files for PNPM, NPM and YARN
|
|
||||||
pnpm-lock.yaml
|
|
||||||
package-lock.json
|
|
||||||
yarn.lock
|
|
@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"useTabs": true,
|
|
||||||
"singleQuote": true,
|
|
||||||
"trailingComma": "none",
|
|
||||||
"printWidth": 100,
|
|
||||||
"plugins": ["prettier-plugin-svelte"],
|
|
||||||
"pluginSearchDirs": ["."],
|
|
||||||
"overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
|
|
||||||
}
|
|
@ -1,23 +1,20 @@
|
|||||||
FROM docker.io/node:16.19.0-alpine AS builder
|
FROM docker.io/node:20.5.0-alpine AS builder
|
||||||
|
|
||||||
# install dependencies
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY package.json package-lock.json ./
|
COPY package.json package-lock.json ./
|
||||||
RUN npm ci
|
RUN npm ci
|
||||||
|
|
||||||
# Copy all local files into the image.
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
|
||||||
###
|
|
||||||
# Only copy over the Node pieces we need
|
FROM docker.io/node:20.5.0-alpine
|
||||||
# ~> Saves 35MB
|
|
||||||
###
|
|
||||||
FROM docker.io/nginx:alpine
|
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY --from=builder /app/build /usr/share/nginx/html
|
COPY package.json package-lock.json .
|
||||||
COPY nginx.conf /etc/nginx/nginx.conf
|
RUN npm ci --omit dev
|
||||||
|
COPY --from=builder /app/build /app
|
||||||
|
EXPOSE 3000
|
||||||
|
|
||||||
CMD ["nginx", "-g", "daemon off;"]
|
CMD ["node", "."]
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://biomejs.dev/schemas/1.3.3/schema.json",
|
||||||
|
"organizeImports": {
|
||||||
|
"enabled": true
|
||||||
|
},
|
||||||
|
"linter": {
|
||||||
|
"enabled": true,
|
||||||
|
"rules": {
|
||||||
|
"recommended": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,37 +0,0 @@
|
|||||||
user nginx;
|
|
||||||
worker_processes auto;
|
|
||||||
|
|
||||||
error_log /var/log/nginx/error.log notice;
|
|
||||||
pid /var/run/nginx.pid;
|
|
||||||
|
|
||||||
events {
|
|
||||||
worker_connections 1024;
|
|
||||||
}
|
|
||||||
|
|
||||||
http {
|
|
||||||
include /etc/nginx/mime.types;
|
|
||||||
default_type application/octet-stream;
|
|
||||||
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
|
||||||
'$status $body_bytes_sent "$http_referer" '
|
|
||||||
'"$http_user_agent" "$http_x_forwarded_for"';
|
|
||||||
access_log /var/log/nginx/access.log main;
|
|
||||||
sendfile on;
|
|
||||||
keepalive_timeout 65;
|
|
||||||
gzip on;
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
listen [::]:80;
|
|
||||||
server_name localhost;
|
|
||||||
index index.html index.htm;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
root /usr/share/nginx/html;
|
|
||||||
try_files $uri$args $uri$args/ /index.html;
|
|
||||||
}
|
|
||||||
error_page 500 502 503 504 /50x.html;
|
|
||||||
location = /50x.html {
|
|
||||||
root /usr/share/nginx/html;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,80 @@
|
|||||||
|
@use "./colors.scss";
|
||||||
|
@import "https://cdn.jsdelivr.net/npm/remixicon@3.2.0/fonts/remixicon.css";
|
||||||
|
|
||||||
|
html {
|
||||||
|
background-color: rgba(14, 1, 20, 1);
|
||||||
|
background-image:
|
||||||
|
radial-gradient(white, rgba(255,153,255,.2) 2px, transparent 40px),
|
||||||
|
radial-gradient(white, rgba(255,153,255,.15) 1px, transparent 30px),
|
||||||
|
radial-gradient(white, rgba(255,153,255,.1) 2px, transparent 50px),
|
||||||
|
radial-gradient(rgba(255,153,255,.4), rgba(255,153,255,.1) 2px, transparent 30px);
|
||||||
|
background-size: 550px 550px, 350px 350px, 250px 250px, 150px 150px;
|
||||||
|
background-position: 0 0, 40px 60px, 130px 270px, 70px 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: "Lexend","Noto Sans", "Verdana", sans-serif;
|
||||||
|
color: colors.$text;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
image-orientation: from-image;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration-line: underline;
|
||||||
|
text-decoration-color: colors.$secondary;
|
||||||
|
text-decoration-thickness: .125em;
|
||||||
|
color: colors.$text;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
border: 1px solid colors.$highlight;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
background-color: colors.$highlight;
|
||||||
|
color: colors.$highlight-text;
|
||||||
|
border: none;
|
||||||
|
height: 2.5em;
|
||||||
|
padding: 0.5em;
|
||||||
|
border-radius: 0.5em;
|
||||||
|
transition-duration: 0.25s;
|
||||||
|
font-size: 1em;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: lighten(colors.$highlight, 5%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:active {
|
||||||
|
background-color: darken(colors.$highlight, 5%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.float-left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.float-right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.card {
|
||||||
|
width: 60%;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 500px) {
|
||||||
|
.card {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 500px) and (max-width: 1000px) {
|
||||||
|
.card {
|
||||||
|
width: 75%;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
$background: rgba(14, 1, 20, 1);
|
||||||
|
|
||||||
|
$highlight: white;
|
||||||
|
$secondary: white;
|
||||||
|
|
||||||
|
$highlight-text: black;
|
||||||
|
$text: white;
|
||||||
|
$inactive-text: lighten($text, 20%);
|
||||||
|
$highlight-inactive-text: darken($highlight-text, 20%);
|
||||||
|
|
||||||
|
$blue: #848fab;
|
||||||
|
$yellow: #a7ad86;
|
||||||
|
$red: #a88b83;
|
Before Width: | Height: | Size: 351 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 273 KiB After Width: | Height: | Size: 285 KiB |
After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 7.7 KiB |
@ -0,0 +1,21 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import "../app.scss";
|
||||||
|
|
||||||
|
import { onNavigate } from "$app/navigation";
|
||||||
|
|
||||||
|
|
||||||
|
onNavigate((navigation) => {
|
||||||
|
// @ts-expect-error
|
||||||
|
if (!document.startViewTransition) return;
|
||||||
|
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
// @ts-expect-error
|
||||||
|
document.startViewTransition(async () => {
|
||||||
|
resolve();
|
||||||
|
await navigation.complete;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<slot />
|
@ -0,0 +1,28 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
export let name: string;
|
||||||
|
export let href: string;
|
||||||
|
export let description: string;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="project">
|
||||||
|
<div>
|
||||||
|
<a {href}><h2>{name}</h2></a>
|
||||||
|
</div>
|
||||||
|
<p>{description}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.project {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
margin-top: 1em;
|
||||||
|
width: 100%;
|
||||||
|
a {
|
||||||
|
display: inline;
|
||||||
|
color: white;
|
||||||
|
h2 {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -1,2 +1 @@
|
|||||||
export const csr = false;
|
|
||||||
export const prerender = true;
|
export const prerender = true;
|
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"subject":"acct:trivernis@social.funkyfish.cool",
|
||||||
|
"aliases":
|
||||||
|
[
|
||||||
|
"https://social.funkyfish.cool/@trivernis"
|
||||||
|
],
|
||||||
|
"links":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"rel":"self",
|
||||||
|
"type":"application/activity+json",
|
||||||
|
"href":"https://social.funkyfish.cool/@trivernis"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel":"http://webfinger.net/rel/profile-page",
|
||||||
|
"type":"text/html",
|
||||||
|
"href":"https://social.funkyfish.cool/@trivernis"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
Before Width: | Height: | Size: 351 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 273 KiB After Width: | Height: | Size: 285 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 4.1 KiB |