Compare commits

...

2 commits

Author SHA1 Message Date
1d4f7e6fc6
Improved docker workflow 2024-01-05 03:26:21 +01:00
3379a685e1
Add local assets 2024-01-05 22:15:23 +01:00
35 changed files with 67 additions and 675 deletions

View file

@ -1,5 +1,7 @@
FROM node:21-alpine AS base FROM node:21-alpine AS base
ENV NODE_ENV production
# Install dependencies only when needed # Install dependencies only when needed
FROM base AS deps FROM base AS deps
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
@ -9,8 +11,9 @@ WORKDIR /app
# Install dependencies based on the preferred package manager # Install dependencies based on the preferred package manager
COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./ COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./
RUN \ RUN \
if [ -f package-lock.json ]; then npm ci; \ if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
elif [ -f pnpm-lock.yaml ]; then npm install --global pnpm && pnpm i --frozen-lockfile; \ elif [ -f package-lock.json ]; then npm ci; \
elif [ -f pnpm-lock.yaml ]; then yarn global add pnpm && pnpm i --frozen-lockfile; \
else echo "Lockfile not found." && exit 1; \ else echo "Lockfile not found." && exit 1; \
fi fi
@ -27,8 +30,6 @@ RUN npm run build
FROM base AS runner FROM base AS runner
WORKDIR /app WORKDIR /app
ENV NODE_ENV production
RUN addgroup --system --gid 1001 nodejs RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 solidjs RUN adduser --system --uid 1001 solidjs
@ -37,8 +38,6 @@ COPY --from=builder /app/public ./public
COPY --from=builder --chown=solidjs:nodejs /app/.output ./.output COPY --from=builder --chown=solidjs:nodejs /app/.output ./.output
COPY --from=builder --chown=solidjs:nodejs /app/.vinxi ./.vinxi COPY --from=builder --chown=solidjs:nodejs /app/.vinxi ./.vinxi
RUN npm install vinxi
USER solidjs USER solidjs
EXPOSE 3000 EXPOSE 3000
@ -47,4 +46,4 @@ ENV PORT 3000
# set hostname to localhost # set hostname to localhost
ENV HOSTNAME "0.0.0.0" ENV HOSTNAME "0.0.0.0"
CMD ["npx", "vinxi", "start"] CMD ["node", ".output/server/index.mjs"]

View file

@ -68,7 +68,7 @@ if [ $deploy ]; then
fi fi
# Run Docker container in the background and capture container ID # Run Docker container in the background and capture container ID
docker build -t $image_name . docker build --no-cache -t $image_name .
if [ $deploy ]; then if [ $deploy ]; then
container_id=$(docker run --name $container_name -p 3000:3000 -d $image_name) container_id=$(docker run --name $container_name -p 3000:3000 -d $image_name)

View file

@ -17,7 +17,7 @@
"@solidjs/router": "^0.10.5", "@solidjs/router": "^0.10.5",
"@solidjs/start": "^0.4.2", "@solidjs/start": "^0.4.2",
"drizzle-orm": "^0.29.2", "drizzle-orm": "^0.29.2",
"drizzle-zod": "^0.5.1", "postgres": "^3.4.3",
"solid-js": "^1.8.7", "solid-js": "^1.8.7",
"solid-start": "^0.3.10", "solid-start": "^0.3.10",
"vinxi": "0.0.62" "vinxi": "0.0.62"
@ -26,11 +26,11 @@
"@typescript-eslint/eslint-plugin": "^6.17.0", "@typescript-eslint/eslint-plugin": "^6.17.0",
"dotenv": "^16.3.1", "dotenv": "^16.3.1",
"drizzle-kit": "^0.20.9", "drizzle-kit": "^0.20.9",
"drizzle-zod": "^0.5.1",
"eslint": "^8.56.0", "eslint": "^8.56.0",
"eslint-config-prettier": "^9.1.0", "eslint-config-prettier": "^9.1.0",
"eslint-plugin-solid": "^0.13.1", "eslint-plugin-solid": "^0.13.1",
"pg": "^8.11.3", "pg": "^8.11.3",
"postgres": "^3.4.3",
"prettier": "^3.1.1", "prettier": "^3.1.1",
"prettier-plugin-organize-imports": "^3.2.4", "prettier-plugin-organize-imports": "^3.2.4",
"sass": "^1.69.6", "sass": "^1.69.6",

File diff suppressed because it is too large Load diff

BIN
public/assets/bg.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View file

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="20" viewBox="0 0 640 512"><!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2023 Fonticons, Inc.--><path fill="#ffffff" d="M524.5 69.8a1.5 1.5 0 0 0 -.8-.7A485.1 485.1 0 0 0 404.1 32a1.8 1.8 0 0 0 -1.9 .9 337.5 337.5 0 0 0 -14.9 30.6 447.8 447.8 0 0 0 -134.4 0 309.5 309.5 0 0 0 -15.1-30.6 1.9 1.9 0 0 0 -1.9-.9A483.7 483.7 0 0 0 116.1 69.1a1.7 1.7 0 0 0 -.8 .7C39.1 183.7 18.2 294.7 28.4 404.4a2 2 0 0 0 .8 1.4A487.7 487.7 0 0 0 176 479.9a1.9 1.9 0 0 0 2.1-.7A348.2 348.2 0 0 0 208.1 430.4a1.9 1.9 0 0 0 -1-2.6 321.2 321.2 0 0 1 -45.9-21.9 1.9 1.9 0 0 1 -.2-3.1c3.1-2.3 6.2-4.7 9.1-7.1a1.8 1.8 0 0 1 1.9-.3c96.2 43.9 200.4 43.9 295.5 0a1.8 1.8 0 0 1 1.9 .2c2.9 2.4 6 4.9 9.1 7.2a1.9 1.9 0 0 1 -.2 3.1 301.4 301.4 0 0 1 -45.9 21.8 1.9 1.9 0 0 0 -1 2.6 391.1 391.1 0 0 0 30 48.8 1.9 1.9 0 0 0 2.1 .7A486 486 0 0 0 610.7 405.7a1.9 1.9 0 0 0 .8-1.4C623.7 277.6 590.9 167.5 524.5 69.8zM222.5 337.6c-29 0-52.8-26.6-52.8-59.2S193.1 219.1 222.5 219.1c29.7 0 53.3 26.8 52.8 59.2C275.3 311 251.9 337.6 222.5 337.6zm195.4 0c-29 0-52.8-26.6-52.8-59.2S388.4 219.1 417.9 219.1c29.7 0 53.3 26.8 52.8 59.2C470.7 311 447.5 337.6 417.9 337.6z"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2023 Fonticons, Inc.--><path fill="#ffffff" d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z"/></svg>

After

Width:  |  Height:  |  Size: 529 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2023 Fonticons, Inc.--><path fill="#ffffff" d="M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z"/></svg>

After

Width:  |  Height:  |  Size: 682 B

BIN
public/assets/lilJudd.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 500 500" style="enable-background:new 0 0 500 500;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#SVGID_1_);}
</style>
<g id="Logotypes">
<g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="500.0035" y1="579.1058" x2="-9.653803e-02" y2="1079.2058" gradientTransform="matrix(0.9998 0 0 0.9998 9.651873e-02 -578.99)">
<stop offset="3.435144e-03" style="stop-color:#E44857"/>
<stop offset="0.4689" style="stop-color:#C711E1"/>
<stop offset="1" style="stop-color:#7F52FF"/>
</linearGradient>
<polygon class="st0" points="500,500 0,500 0,0 500,0 250,250 "/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 898 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
public/assets/logox256.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View file

@ -6,7 +6,7 @@ function Footer() {
<div class="footerIcon"> <div class="footerIcon">
<img <img
class="footerImage" class="footerImage"
src="https://static.moonleay.net/img/lilJuddWeb/lilJudd.png" src="/assets/lilJudd.png"
alt="A cute Image of lil Judd <3" alt="A cute Image of lil Judd <3"
/> />
<p>li'l Judd</p> <p>li'l Judd</p>
@ -31,30 +31,21 @@ function Footer() {
target="_blank" target="_blank"
> >
The code of the bot{" "} The code of the bot{" "}
<img <img src="/assets/icons/external.svg" alt="external link" />
src="https://static.moonleay.net/img/lilJuddWeb/logos/external.svg"
alt="external link"
/>
</a> </a>
<a <a
href="https://git.moonleay.net/Websites/liljudd-website" href="https://git.moonleay.net/Websites/liljudd-website"
target="_blank" target="_blank"
> >
The code of the website{" "} The code of the website{" "}
<img <img src="/assets/icons/external.svg" alt="external link" />
src="https://static.moonleay.net/img/lilJuddWeb/logos/external.svg"
alt="external link"
/>
</a> </a>
<a <a
href="https://todo.moonleay.net/share/OmisuzgPDdsrCAXKjGrTfYzWwqNDNclOMGJWeMsi/auth?view=kanban" href="https://todo.moonleay.net/share/OmisuzgPDdsrCAXKjGrTfYzWwqNDNclOMGJWeMsi/auth?view=kanban"
target="_blank" target="_blank"
> >
The todo list{" "} The todo list{" "}
<img <img src="/assets/icons/external.svg" alt="external link" />
src="https://static.moonleay.net/img/lilJuddWeb/logos/external.svg"
alt="external link"
/>
</a> </a>
<a href="/acknowledgements">Acknowledgements</a> <a href="/acknowledgements">Acknowledgements</a>
</div> </div>
@ -64,32 +55,20 @@ function Footer() {
<div class="footerLinks"> <div class="footerLinks">
<a href="https://moonleay.net/"> <a href="https://moonleay.net/">
My homepage{" "} My homepage{" "}
<img <img src="/assets/icons/external.svg" alt="external link" />
src="https://static.moonleay.net/img/lilJuddWeb/logos/external.svg"
alt="external link"
/>
</a> </a>
<a href="https://moonleay.net/blog/" target="_blank"> <a href="https://moonleay.net/blog/" target="_blank">
My blog{" "} My blog{" "}
<img <img src="/assets/icons/external.svg" alt="external link" />
src="https://static.moonleay.net/img/lilJuddWeb/logos/external.svg"
alt="external link"
/>
</a> </a>
<a href="/contact">Contact me</a> <a href="/contact">Contact me</a>
<a href="https://status.moonleay.net/" target="_blank"> <a href="https://status.moonleay.net/" target="_blank">
Server Status{" "} Server Status{" "}
<img <img src="/assets/icons/external.svg" alt="external link" />
src="https://static.moonleay.net/img/lilJuddWeb/logos/external.svg"
alt="external link"
/>
</a> </a>
<a href="https://discord.gg/HTZRktfH4A" target="_blank"> <a href="https://discord.gg/HTZRktfH4A" target="_blank">
Support Discord{" "} Support Discord{" "}
<img <img src="/assets/icons/external.svg" alt="external link" />
src="https://static.moonleay.net/img/lilJuddWeb/logos/external.svg"
alt="external link"
/>
</a> </a>
</div> </div>
</div> </div>
@ -104,10 +83,7 @@ function Footer() {
target="_blank" target="_blank"
> >
The license{" "} The license{" "}
<img <img src="/assets/icons/external.svg" alt="external link" />
src="https://static.moonleay.net/img/lilJuddWeb/logos/external.svg"
alt="external link"
/>
</a> </a>
</div> </div>
</div> </div>

View file

@ -6,11 +6,7 @@ function NavBar() {
<ul> <ul>
<li class="navElem"> <li class="navElem">
<a class="textBx" href="/"> <a class="textBx" href="/">
<img <img id="logo" src="/assets/logox256.png" alt="The Bots Logo" />
id="logo"
src="https://static.moonleay.net/img/lilJuddWeb/logos/logox256.png"
alt="The Bots Logo"
/>
li&apos;l Judd li&apos;l Judd
</a> </a>
</li> </li>

View file

@ -7,7 +7,7 @@ export default createHandler(() => (
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/assets/favicon.ico" />
{assets} {assets}
</head> </head>
<body id="app"> <body id="app">

View file

@ -7,7 +7,7 @@ export default function NotFound() {
<> <>
<Title>Not Found</Title> <Title>Not Found</Title>
<HttpStatusCode code={404} /> <HttpStatusCode code={404} />
<section class="section"> <section class="index">
<h1>404 - Whoops, ink spill!</h1> <h1>404 - Whoops, ink spill!</h1>
<h5>li'l Judd couldn't find this turf.</h5> <h5>li'l Judd couldn't find this turf.</h5>
<div> <div>

View file

@ -9,10 +9,7 @@ function about() {
<h2>Why does this bot exist?</h2> <h2>Why does this bot exist?</h2>
<p> <p>
We had a person in our team, who sent{" "} We had a person in our team, who sent{" "}
<a <a href="/assets/screenshots/oldplanningmsg.png" target="_blank">
href="https://static.moonleay.net/img/lilJuddWeb/about/oldplanningmsg.png"
target="_blank"
>
these planning messages these planning messages
</a>{" "} </a>{" "}
and I thought that this should be automated. Some time later the and I thought that this should be automated. Some time later the

View file

@ -7,27 +7,18 @@ function contact() {
<h1>Contact</h1> <h1>Contact</h1>
<section class="contact"> <section class="contact">
<a href="mailto:contact@moonleay.net" target="_blank"> <a href="mailto:contact@moonleay.net" target="_blank">
<img <img src="/assets/icons/email.svg" alt="Email" />
src="https://static.moonleay.net/img/lilJuddWeb/logos/email.svg"
alt="Email"
/>
contact@moonleay.net contact@moonleay.net
</a> </a>
<a <a
href="https://discord.com/users/372703841151614976" href="https://discord.com/users/372703841151614976"
target="_blank" target="_blank"
> >
<img <img src="/assets/icons/discord.svg" alt="Discord" />
src="https://static.moonleay.net/img/lilJuddWeb/logos/discord.svg"
alt="Discord"
/>
@moonleay @moonleay
</a> </a>
<a href="https://discord.gg/HTZRktfH4A" target="_blank"> <a href="https://discord.gg/HTZRktfH4A" target="_blank">
<img <img src="/assets/icons/discord.svg" alt="discord" />
src="https://static.moonleay.net/img/lilJuddWeb/logos/discord.svg"
alt="discord"
/>
li'l Judd's home base li'l Judd's home base
</a> </a>
</section> </section>

View file

@ -8,28 +8,28 @@ function features() {
<h1 class="title">Features</h1> <h1 class="title">Features</h1>
<div class="gridlayout"> <div class="gridlayout">
<ImageSection <ImageSection
imgUrl="https://static.moonleay.net/img/lilJuddWeb/features/timeplanner.png" imgUrl="/assets/screenshots/timeplanner.png"
imgAlt="Screenshot of the time planning feature of li'l Judd" imgAlt="Screenshot of the time planning feature of li'l Judd"
title="Time Planning and Management" title="Time Planning and Management"
description="Helps you to see on which days your fellow team mates are available." description="Helps you to see on which days your fellow team mates are available."
note="The bot can send these planning messages every monday at 3AM. Members can click the buttons on each message to communicate, if they have time on that day." note="The bot can send these planning messages every monday at 3AM. Members can click the buttons on each message to communicate, if they have time on that day."
/> />
<ImageSection <ImageSection
imgUrl="https://static.moonleay.net/img/lilJuddWeb/features/matchplanner.png" imgUrl="/assets/screenshots/matchplanner.png"
imgAlt="Screenshot of the match planning feature of li'l Judd" imgAlt="Screenshot of the match planning feature of li'l Judd"
title="Match Planner" title="Match Planner"
description="Make sure that you know when your next match is and who will participate." description="Make sure that you know when your next match is and who will participate."
note="The bot can send these planning messages, when the command /match is used. Members can click the buttons on each message to communicate, if they will participate in the match. Participating members will get a role until the match has started." note="The bot can send these planning messages, when the command /match is used. Members can click the buttons on each message to communicate, if they will participate in the match. Participating members will get a role until the match has started."
/> />
<ImageSection <ImageSection
imgUrl="https://static.moonleay.net/img/lilJuddWeb/features/notifs.png" imgUrl="/assets/screenshots/notifs.png"
imgAlt="Screenshot of the notification feature of li'l Judd" imgAlt="Screenshot of the notification feature of li'l Judd"
title="Notifications" title="Notifications"
description="Make sure that you and your team members vote in the Time Planner." description="Make sure that you and your team members vote in the Time Planner."
note="The bot can add roles. The first one gets pinged, when the time planner sends the messages, the other one gets assigned to the available members of the day, so that it is possible to ping all available people." note="The bot can add roles. The first one gets pinged, when the time planner sends the messages, the other one gets assigned to the available members of the day, so that it is possible to ping all available people."
/> />
<ImageSection <ImageSection
imgUrl="https://static.moonleay.net/img/lilJuddWeb/features/rotationstatus.png" imgUrl="/assets/screenshots/rotationstatus.png"
imgAlt="Screenshot of the current x map rotation in li'l Judd's status" imgAlt="Screenshot of the current x map rotation in li'l Judd's status"
title="Rotation Status" title="Rotation Status"
description="Li'l Judd can show you the current map rotation in his status." description="Li'l Judd can show you the current map rotation in his status."
@ -37,7 +37,7 @@ function features() {
/> />
<ImageSection <ImageSection
span span
imgUrl="https://static.moonleay.net/img/lilJuddWeb/features/unknown.png" imgUrl="/assets/screenshots/unknown.png"
imgAlt="A Question Mark" imgAlt="A Question Mark"
title="More to come.." title="More to come.."
description="The bot is still in development. More features will be added." description="The bot is still in development. More features will be added."

View file

@ -15,12 +15,12 @@ function howDoI() {
<div class="imgwrapper"> <div class="imgwrapper">
<img <img
class="desktop" class="desktop"
src="https://static.moonleay.net/img/lilJuddWeb/howdoi/featureexample.png" src="/assets/screenshots/featureexample.png"
alt="A screenshot of the example in Discord." alt="A screenshot of the example in Discord."
/> />
<img <img
class="mobile" class="mobile"
src="https://static.moonleay.net/img/lilJuddWeb/howdoi/featureexamplemobile.png" src="/assets/screenshots/featureexamplemobile.png"
alt="A screenshot of the example in Discord." alt="A screenshot of the example in Discord."
/> />
{/* <p><code>/feature feature:Time Planning Feature set:Enable channel:#ich-kann-heute</code></p> */} {/* <p><code>/feature feature:Time Planning Feature set:Enable channel:#ich-kann-heute</code></p> */}
@ -36,12 +36,12 @@ function howDoI() {
<div class="imgwrapper"> <div class="imgwrapper">
<img <img
class="desktop" class="desktop"
src="https://static.moonleay.net/img/lilJuddWeb/howdoi/matchexample.png" src="/assets/screenshots/matchexample.png"
alt="A screenshot of the example in Discord." alt="A screenshot of the example in Discord."
/> />
<img <img
class="mobile" class="mobile"
src="https://static.moonleay.net/img/lilJuddWeb/howdoi/matchexamplemobile.png" src="/assets/screenshots/matchexamplemobile.png"
alt="A screenshot of the example in Discord." alt="A screenshot of the example in Discord."
/> />
{/* <p><code>/match match:Ladder Match timestamp:24.12.2069 04:20 opponent:Forbidden</code></p> */} {/* <p><code>/match match:Ladder Match timestamp:24.12.2069 04:20 opponent:Forbidden</code></p> */}

View file

@ -5,10 +5,7 @@ function stack() {
<> <>
<h1 class="stack-title">The Stack</h1> <h1 class="stack-title">The Stack</h1>
<section class="stack-section"> <section class="stack-section">
<img <img src="/assets/logos/kotlin.svg" alt="Kotlin 'K' logo" />
src="https://static.moonleay.net/img/lilJuddWeb/logos/kotlin.svg"
alt="Kotlin 'K' logo"
/>
<div class="stackgrid_3 stackitm"> <div class="stackgrid_3 stackitm">
<h1>The Kotlin programming language</h1> <h1>The Kotlin programming language</h1>
<p> <p>
@ -18,10 +15,7 @@ function stack() {
</div> </div>
</section> </section>
<section class="stack-section"> <section class="stack-section">
<img <img src="/assets/logos/kord.png" alt="The Kord logo" />
src="https://static.moonleay.net/img/lilJuddWeb/logos/kord.png"
alt="The Kord logo"
/>
<div class="stackgrid_3 stackitm"> <div class="stackgrid_3 stackitm">
<h1>The Kord library</h1> <h1>The Kord library</h1>
<p>A Kotlin library for creating Discord bots. Pretty bare bones.</p> <p>A Kotlin library for creating Discord bots. Pretty bare bones.</p>
@ -29,7 +23,7 @@ function stack() {
</section> </section>
<section class="stack-section"> <section class="stack-section">
<img <img
src="https://static.moonleay.net/img/lilJuddWeb/logos/kordextensions.png" src="/assets/logos/kordextensions.png"
alt="The Kord-Extensions logo" alt="The Kord-Extensions logo"
/> />
<div class="stackgrid_3 stackitm"> <div class="stackgrid_3 stackitm">
@ -38,10 +32,7 @@ function stack() {
</div> </div>
</section> </section>
<section class="stack-section"> <section class="stack-section">
<img <img src="/assets/logos/pgelephant.png" alt="The PostgreSQL elephant" />
src="https://static.moonleay.net/img/lilJuddWeb/logos/pgelephant.png"
alt="The PostgreSQL elephant"
/>
<div class="stackgrid_3 stackitm"> <div class="stackgrid_3 stackitm">
<h1>The PostgreSQL database</h1> <h1>The PostgreSQL database</h1>
<p> <p>

View file

@ -15,7 +15,7 @@
body { body {
color: rgb(var(--foreground-rgb)); color: rgb(var(--foreground-rgb));
background-color: black; background-color: black;
background-image: url("https://static.moonleay.net/img/lilJuddWeb/bgs/bg.jpg"); background-image: url("/assets/bg.jpg");
background-repeat: repeat; background-repeat: repeat;
background-size: 300px; background-size: 300px;
background-position: center; background-position: center;