Add github Actions deploy workflow

This commit is contained in:
m0onmo0n 2026-04-12 17:27:20 +02:00
parent 9d2f1e9508
commit 9f42452ba5
4 changed files with 530 additions and 460 deletions

19
.github/workflows/deploy.yml vendored Normal file
View file

@ -0,0 +1,19 @@
name: Deploy to Server
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Deploy via SSH
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USERNAME }}
key: ${{ secrets.SERVER_SSH_KEY }}
script: |
cd /home/prodesk/live-site || exit 1
git checkout main
git pull origin main
echo "Deployed successfully"

View file

@ -21,13 +21,11 @@
<button class="mobile-nav-toggle" aria-controls="primary-navigation"><span class="sr-only" aria-expanded="false">Menu</span></button> <button class="mobile-nav-toggle" aria-controls="primary-navigation"><span class="sr-only" aria-expanded="false">Menu</span></button>
<nav> <nav>
<ul id="primary-navigation" data-visible="false" class="primary-navigation flex"> <ul id="primary-navigation" data-visible="false" class="primary-navigation flex">
<li><a class="ff-sans-cond uppercase text-white letter-spacing-1" href="https://lab.moonmoon.tech"><span aria-hidden="true">01</span>Dashboard</a> <li><a class="ff-sans-cond uppercase text-white letter-spacing-1" href="https://lab1.moonmoon.tech"><span aria-hidden="true">01</span>Dashboard</a>
<li><a class="ff-sans-cond uppercase text-white letter-spacing-1" href="https://pdf.moonmoon.tech"><span aria-hidden="true">02</span>PDF.tools</a> <li><a class="ff-sans-cond uppercase text-white letter-spacing-1" href="https://tech.moonmoon.tech"><span aria-hidden="true">02</span>IT.tools</a>
<li><a class="ff-sans-cond uppercase text-white letter-spacing-1" href="https://tech.moonmoon.tech"><span aria-hidden="true">03</span>IT.tools</a> <li><a class="ff-sans-cond uppercase text-white letter-spacing-1" href="https://myip.moonmoon.tech"><span aria-hidden="true">03</span>IP.tools</a>
<li><a class="ff-sans-cond uppercase text-white letter-spacing-1" href="https://myip.moonmoon.tech"><span aria-hidden="true">04</span>IP.tools</a> <li><a class="ff-sans-cond uppercase text-white letter-spacing-1" href="https://omni.moonmoon.tech"><span aria-hidden="true">04</span>Omni.tools</a>
<li><a class="ff-sans-cond uppercase text-white letter-spacing-1" href="https://ll.moonmoon.tech"><span aria-hidden="true">05</span>Socials</a> <li><a class="ff-sans-cond uppercase text-white letter-spacing-1" href="https://ll.moonmoon.tech"><span aria-hidden="true">05</span>Socials</a>
<li><a class="ff-sans-cond uppercase text-white letter-spacing-1" href="https://csanalyser.moonmoon.tech"><span aria-hidden="true">06</span>CStools</a>
<li><a class="ff-sans-cond uppercase text-white letter-spacing-1" href="https://www.cswatch.in"><span aria-hidden="true">07</span>CSwatch</a>
</ul> </ul>
</nav> </nav>
</header> </header>
@ -39,7 +37,7 @@
<h1 class="text-accent fs-500 ff-sans-cond uppercase letter-spacing-1">Welcome to <h1 class="text-accent fs-500 ff-sans-cond uppercase letter-spacing-1">Welcome to
<span class="d-block fs-900 ff-serif text-white">Moon Moon's Hub</span></h1> <span class="d-block fs-900 ff-serif text-white">Moon Moon's Hub</span></h1>
<p>I am a 28-year-old Norwegian guy that occasionally streams, is a tech head, and hosts various things on my local server. <p>I am a 29-year-old Norwegian guy that occasionally streams, is a tech head, and hosts various things on my local server.
Some of these you can check out at my dashborad.</p> Some of these you can check out at my dashborad.</p>
</div> </div>
</main> </main>

View file

@ -2,13 +2,12 @@ const nav = document.querySelector(".primary-navigation");
const navToggle = document.querySelector(".mobile-nav-toggle"); const navToggle = document.querySelector(".mobile-nav-toggle");
navToggle.addEventListener("click", () => { navToggle.addEventListener("click", () => {
const visibility = nav.getAttribute("data-visible");
const visiblity = nav.getAttribute("data-visible"); if (visibility === "false") {
if (visiblity === "false") {
nav.setAttribute("data-visible", true); nav.setAttribute("data-visible", true);
navToggle.setAttribute("aria-expanded", true); navToggle.setAttribute("aria-expanded", true);
} else { } else {
nav.setAttribute("data-visible", false); nav.setAttribute("data-visible", false);
navToggle.setAttribute("aria-expanded", false); navToggle.setAttribute("aria-expanded", false);
} }
}) });

174
style.css
View file

@ -1,10 +1,10 @@
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700;800;900&display=swap'); @import url("https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700;800;900&display=swap");
* { * {
margin: 0; margin: 0;
padding: 0; padding: 0;
box-sizing: border-box; box-sizing: border-box;
font-family: 'Poppins', sans-serif; font-family: "Poppins", sans-serif;
} }
/* ------------------- */ /* ------------------- */
/* Custom properties */ /* Custom properties */
@ -32,13 +32,75 @@
--ff-sans-normal: "Barlow", sans-serif; --ff-sans-normal: "Barlow", sans-serif;
} }
@media (min-width: 35em) { @media (max-width: 35rem) {
:root { .primary-navigation {
--fs-800: 5rem; --underline-gap: 0.35rem;
--fs-700: 2.5rem; position: fixed;
--fs-600: 1.5rem; z-index: 1000;
--fs-500: 1.25rem; inset: 0 0 0 28%;
--fs-400: 1rem; list-style: none;
margin: 0;
padding: min(16vh, 6rem) 1.25rem 1.5rem;
display: flex;
flex-direction: column;
gap: 0.5rem;
background: rgba(10, 12, 18, 0.96);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
border-left: 1px solid rgba(255, 255, 255, 0.08);
box-shadow: -18px 0 40px rgba(0, 0, 0, 0.35);
transform: translateX(100%);
transition: transform 500ms ease-in-out;
}
.primary-navigation[data-visible="true"] {
transform: translateX(0);
}
.primary-navigation.underline-indicators > .active {
border: 0;
}
.primary-navigation a {
display: block;
margin: 0;
padding: 0.7rem 0;
font-size: 1rem;
line-height: 1.2;
}
.primary-navigation a > span {
margin-right: 0.4em;
}
.primary-navigation a::after {
bottom: 0;
}
.mobile-nav-toggle {
display: block;
position: absolute;
z-index: 2000;
right: 1rem;
top: 2rem;
background: transparent;
background-image: url("Assets/icon-hamburger.svg");
background-repeat: no-repeat;
background-position: center;
width: 1.5rem;
aspect-ratio: 1;
border: 0;
}
.mobile-nav-toggle[aria-expanded="true"] {
background-image: url("Assets/icon-close.svg");
}
.mobile-nav-toggle:focus-visible {
outline: 5px solid white;
outline-offset: 5px;
} }
} }
@ -90,10 +152,10 @@ p {
/* set up the body */ /* set up the body */
body { body {
color: hsl( var(--clr-white) ); color: hsl(var(--clr-white));
font-family: var(--ff-sans-normal); font-family: var(--ff-sans-normal);
font-size: var(--fs-400); font-size: var(--fs-400);
background-color: hsl( var(--clr-dark) ); background-color: hsl(var(--clr-dark));
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
@ -108,12 +170,12 @@ body {
left: 0; left: 0;
width: 100%; width: 100%;
min-height: 100vh; min-height: 100vh;
background-image: url('Assets/background.jpg'); background-image: url("Assets/background.jpg");
background-repeat: no repeat; background-repeat: no repeat;
background-position: bottom center; background-position: bottom center;
background-size: cover; background-size: cover;
z-index: -1; z-index: -1;
filter:blur(5px) saturate(100%) brightness(75%); filter: blur(5px) saturate(100%) brightness(75%);
} }
/* primary-header */ /* primary-header */
@ -137,7 +199,6 @@ body {
user-select: none; user-select: none;
} }
.primary-navigation { .primary-navigation {
--gap: clamp(1.5rem, 5vw, 3.5rem); --gap: clamp(1.5rem, 5vw, 3.5rem);
--underline-gap: 2rem; --underline-gap: 2rem;
@ -152,7 +213,7 @@ body {
.primary-navigation a > span { .primary-navigation a > span {
font-weight: 700; font-weight: 700;
margin-right: .5em; margin-right: 0.5em;
} }
.mobile-nav-toggle { .mobile-nav-toggle {
@ -161,7 +222,7 @@ body {
@media (max-width: 35rem) { @media (max-width: 35rem) {
.primary-navigation { .primary-navigation {
--underline-gap: .5rem; --underline-gap: 0.5rem;
position: fixed; position: fixed;
z-index: 1000; z-index: 1000;
inset: 0 0 0 30%; inset: 0 0 0 30%;
@ -178,7 +239,7 @@ body {
} }
.primary-navigation.underline-indicators > .active { .primary-navigation.underline-indicators > .active {
border: 0; border: 0;
} }
.mobile-nav-toggle { .mobile-nav-toggle {
@ -188,7 +249,7 @@ body {
right: 1rem; right: 1rem;
top: 2rem; top: 2rem;
background: transparent; background: transparent;
background-image: url('Assets/icon-hamburger.svg'); background-image: url("Assets/icon-hamburger.svg");
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; background-position: center;
width: 1.5rem; width: 1.5rem;
@ -197,14 +258,13 @@ body {
} }
.mobile-nav-toggle[aria-expanded="true"] { .mobile-nav-toggle[aria-expanded="true"] {
background-image: url('Assets/icon-close.svg'); background-image: url("Assets/icon-close.svg");
} }
.mobile-nav-toggle:focus-visible { .mobile-nav-toggle:focus-visible {
outline: 5px solid white; outline: 5px solid white;
outline-offset: 5px; outline-offset: 5px;
} }
} }
@media (min-width: 35em) { @media (min-width: 35em) {
@ -220,17 +280,16 @@ body {
} }
@media (min-width: 45em) { @media (min-width: 45em) {
.primary-header::after {
.primary-header::after { content: "";
content: ''; display: block;
display: block; position: relative;
position: relative; height: 1px;
height: 1px; width: 100%;
width: 100%; margin-right: -2.5rem;
margin-right: -2.5rem; background: hsl(var(--clr-white) / 0.25);
background: hsl( var(--clr-white) / .25); order: 1;
order: 1; }
}
nav { nav {
order: 2; order: 2;
@ -239,11 +298,8 @@ body {
.primary-navigation { .primary-navigation {
margin-block: 2rem; margin-block: 2rem;
} }
} }
.primary-navigation a { .primary-navigation a {
position: relative; position: relative;
align-self: flex-end; align-self: flex-end;
@ -258,7 +314,7 @@ body {
} }
.primary-navigation a::after { .primary-navigation a::after {
content: ''; content: "";
position: absolute; position: absolute;
left: 0; left: 0;
bottom: -6px; bottom: -6px;
@ -268,7 +324,7 @@ body {
border-radius: 5px; border-radius: 5px;
transform-origin: right; transform-origin: right;
transform: scaleX(0); transform: scaleX(0);
transition: transform .5s; transition: transform 0.5s;
} }
.primary-navigation a:hover::after { .primary-navigation a:hover::after {
@ -276,7 +332,6 @@ body {
transform: scaleX(1); transform: scaleX(1);
} }
.content { .content {
display: flex; display: flex;
justify-content: center; justify-content: center;
@ -292,7 +347,6 @@ body {
height: auto; height: auto;
} }
footer { footer {
position: fixed; position: fixed;
display: flex; display: flex;
@ -304,7 +358,6 @@ footer {
overflow-x: hidden; overflow-x: hidden;
} }
.social-buttons { .social-buttons {
display: flex; display: flex;
align-self: center; align-self: center;
@ -320,22 +373,24 @@ footer {
width: 45px; width: 45px;
height: 45px; height: 45px;
background: transparent; background: transparent;
box-shadow: 0 4px 4px rgba(0, 0, 0, .3); box-shadow: 0 4px 4px rgba(0, 0, 0, 0.3);
margin: 0 8px; margin: 0 8px;
z-index: 1; z-index: 1;
text-align: center; text-align: center;
line-height: 45px; line-height: 45px;
transition: .3s; transition: 0.3s;
} }
.social-buttons a:hover{ .social-buttons a:hover {
background: rgb(63, 9, 126); background: rgb(63, 9, 126);
transform: rotate(135deg); transform: rotate(135deg);
box-shadow: 0 0 5px rgb(63, 9, 126), 0 0 10px rgb(63, 9, 126); box-shadow:
0 0 5px rgb(63, 9, 126),
0 0 10px rgb(63, 9, 126);
} }
.social-buttons a::before { .social-buttons a::before {
content: ''; content: "";
position: absolute; position: absolute;
top: 50%; top: 50%;
left: 50%; left: 50%;
@ -349,13 +404,12 @@ footer {
.social-buttons a i { .social-buttons a i {
font-size: 18px; font-size: 18px;
color: #000; color: #000;
transition: .3s; transition: 0.3s;
} }
.social-buttons a i:hover { .social-buttons a i:hover {
transform: rotate(225deg); transform: rotate(225deg);
color: rgb(63, 9, 126); color: rgb(63, 9, 126);
} }
/* ------------------- */ /* ------------------- */
@ -366,7 +420,7 @@ footer {
.flex { .flex {
display: flex; display: flex;
gap: var(--gap, .5rem) gap: var(--gap, 0.5rem);
} }
.grid { .grid {
@ -383,7 +437,7 @@ footer {
} }
.flow--space-small { .flow--space-small {
--flow-space: .75rem; --flow-space: 0.75rem;
} }
.container { .container {
@ -393,23 +447,23 @@ footer {
} }
.sr-only { .sr-only {
position: absolute; position: absolute;
width: 1px; width: 1px;
height: 1px; height: 1px;
padding: 0; padding: 0;
margin: -1px; margin: -1px;
overflow: hidden; overflow: hidden;
clip: rect(0, 0, 0, 0); clip: rect(0, 0, 0, 0);
white-space: nowrap; /* added line */ white-space: nowrap; /* added line */
border: 0; border: 0;
} }
.skip-to-content { .skip-to-content {
position: absolute; position: absolute;
z-index: 9999; z-index: 9999;
background: hsl( var(--clr-white) ); background: hsl(var(--clr-white));
color: hsl( var(--clr-dark) ); color: hsl(var(--clr-dark));
padding: .5em 1em; padding: 0.5em 1em;
margin-inline: auto; margin-inline: auto;
transform: translateY(-100%); transform: translateY(-100%);
transition: transform 250ms ease-in; transition: transform 250ms ease-in;