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
|
||||
node_modules
|
||||
.eslint*
|
||||
.prettier*
|
||||
.git*
|
||||
.vscode
|
||||
Containerfile*
|
||||
public
|
||||
.svelte-kit
|
||||
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
|
||||
COPY package.json package-lock.json ./
|
||||
RUN npm ci
|
||||
|
||||
# Copy all local files into the image.
|
||||
COPY . .
|
||||
|
||||
RUN npm run build
|
||||
|
||||
###
|
||||
# Only copy over the Node pieces we need
|
||||
# ~> Saves 35MB
|
||||
###
|
||||
FROM docker.io/nginx:alpine
|
||||
|
||||
FROM docker.io/node:20.5.0-alpine
|
||||
|
||||
WORKDIR /app
|
||||
COPY --from=builder /app/build /usr/share/nginx/html
|
||||
COPY nginx.conf /etc/nginx/nginx.conf
|
||||
COPY package.json package-lock.json .
|
||||
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;
|
@ -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 |