Compare commits

...

12 commits

Author SHA1 Message Date
e79123c0ca
add front matter 2025-10-11 09:12:14 -03:00
b2f0ef8a6a
add lastfm widget 2025-10-11 09:04:20 -03:00
9ec5b585bb
witch... 2025-10-11 08:18:14 -03:00
bccfe3295d
homepage draft 2025-10-11 08:14:09 -03:00
784caf13ee
add parental advisory button 2025-10-11 05:21:30 -03:00
5dad1b2fac
separate 88x31 buttons 2025-10-11 05:17:06 -03:00
7f7356f633
add links to navbar 2025-10-11 05:16:48 -03:00
0315ebcb23
add recent posts and 88x31 buttons (switch to toml) 2025-10-11 04:33:11 -03:00
677360a1ca
separate layouts into new folder 2025-10-11 02:51:39 -03:00
ec266f3995
add favicon 2025-10-11 02:33:57 -03:00
b1b59a0be2
add license and footer 2025-10-11 02:33:52 -03:00
7e1ec45599
fix banner alt text 2025-10-10 22:47:37 -03:00
25 changed files with 632 additions and 781 deletions

13
LICENSE.txt Normal file
View file

@ -0,0 +1,13 @@
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2025 yuki <yvki@riseup.net>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.

13
_data/88x31.toml Normal file
View file

@ -0,0 +1,13 @@
[buttons]
people = [
{ image = "soniweb", name = "soniweb", link = "https://soniweb.org/" },
{ image = "https://vanityruins.neocities.org/8831/8831.gif", name = "vanityruins", link = "https://vanityruins.neocities.org" },
{ image = "https://saint-images.neocities.org/images/buttons/me-zanarkand.png", name = "saint-images", link = "https://saint-images.neocities.org"},
{ image = "cidoku", name = "Cidoku", link = "https://cidoku.net" }
]
misc = [
{ image = "parentaladvisory", alt = "sorry..." },
{ image = "4everfriend", alt = "yay!!" }
]

View file

@ -1,4 +0,0 @@
{
"sitename": "yukinets",
"motd": "kill everyone now!! condone first degree murder!!"
}

2
_data/meta.toml Normal file
View file

@ -0,0 +1,2 @@
sitename = "yukinets"
motd = "kill everyone now!! condone first degree murder!!"

View file

@ -1,22 +0,0 @@
<!DOCTYPE html>
<html>
<head>
{% include "base_head.njk" %}
</head>
<body>
<div class="main-page-wrapper">
<div class="header-wrapper">
<div class="header">
<a href="/" alt="yukinets"><div class="header-banner"></div></a>
</div>
{% include "topmost_navbar.njk" %}
</div>
{{ content | safe }}
<marquee class="motd" behavior="scroll" direction="left">
<img src="/img/Witch-on-broom.gif" alt="">
</marquee>
</div>
</body>
</html>

View file

@ -2,3 +2,4 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% if title %} {{ title }} | {{ meta.sitename }} {% else %} {{ meta.sitename }} {% endif %}</title>
<link rel="stylesheet" href="/css/{{ style if style else "main" }}.css">
<link rel="icon" type="image/png" href="/img/favicon.ico" width=16px>

1
_includes/footer.njk Normal file
View file

@ -0,0 +1 @@
<p><img src="/img/buttons/4everfriend.gif" alt="yay!!"><img src="/img/buttons/parentaladvisory.gif" alt="sorry..."><br>est. 2025 | yuki &#169; <a href="LICENSE.txt">Do What the Fuck You Want to Public License</a> </p>

View file

@ -3,6 +3,8 @@
<li><a href="/">home</a></li>
<li><a href="/about">about</a></li>
<li><a href="/blog">blog</a></li>
<li><a href="/reviews">reviews</a></li>
<li><a href="/links">links</a></li>
<li><a href="/contact">contact</a></li>
</ul>
</nav>

34
_layouts/base.njk Normal file
View file

@ -0,0 +1,34 @@
---
lastfm: false
---
<!DOCTYPE html>
<html>
<head>
{% include "base_head.njk" %}
</head>
<body>
<div class="main-page-wrapper">
<div class="header-wrapper">
<div class="header">
<h1>yukinets</h1>
<a href="/"><div class="header-banner" title="{{ meta.sitename }}"></div></a>
</div>
{% include "topmost_navbar.njk" %}
</div>
<div class="base-content-wrapper">
{{ content | safe }}
</div>
<footer>
<marquee behavior="scroll" direction="left">
<a href="https://www.youtube.com/embed/w1dXpAJ1qfA"><img src="/img/Witch-on-broom.gif" alt=""></a>
</marquee>
{% include "footer.njk" %}
</footer>
</div>
{% if lastfm %}
<script src="/js/lastfm.js"></script>
{% endif %}
</body>
</html>

46
_layouts/home.njk Normal file
View file

@ -0,0 +1,46 @@
---
layout: base
title: home
lastfm: true
---
<div class="welcome-aside-left">
<div class="now-playing-wrapper box">
<h2>last played</h2>
<div id="listening"></div>
<div class="noscript">
<noscript>
<h3 style="padding: 0px 0px 4px 0px;">javascript is disabled...</h2>
</noscript>
</div>
</div>
<div class="buttons-wrapper box">
<h2>please visit...</h3>
<div class="buttons">
{% for button in 88x31.buttons.people.slice(0, 5) %}
<a href="{{ button.link }}" title="{{ button.name }}">
{% if button.image.startsWith("http") %}
<img src="{{ button.image }}" alt="{{ button.name }}">
{% else %}
<img src="/img/buttons/{{ button.image }}.gif" alt="{{ button.name }}">
{% endif %}
</a>
{% endfor %}
</div>
</div>
</div>
<div class="welcome-content">
{{ content | safe }}
<img src="/img/nekojiru.png">
</div>
<div class="welcome-aside-right">
<div class="recent-posts box">
<h2>recent posts</h2>
<ul>
{% for post in collections.post.slice(0, 5) %}
<li><p><a href="{{ post.url }}">{{ post.data.title }}</a> | <span class="date"> {{ post.date.toLocaleString("en-GB", {year: 'numeric', month: '2-digit', day: '2-digit'}) }}</span></p></li>
{% endfor %}
</ul>
</div>
</div>

4
_layouts/post.njk Normal file
View file

@ -0,0 +1,4 @@
---
layout: base
tags: post
---

14
blog/test-post.md Normal file
View file

@ -0,0 +1,14 @@
---
title: my test post
layout: post
tags: test
---
# wait
this is a test post. lalalaallaalalala
---
hehehehehe
## wait
nvm

View file

@ -5,6 +5,7 @@
@use "main-palette" as mp;
body {
color: mp.$text;
background-color: mp.$bg;
/*background-image: url("/img/bgpat.png");
background-repeat: repeat;*/
@ -12,7 +13,10 @@ body {
a { color: mp.$link; }
a:hover { color: c.adjust($color: mp.$link, $saturation: 4%, $lightness: 10%); }
p { color: mp.$text }
p {
font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
font-size: 0.8em;
}
}
.header-wrapper {
@ -21,6 +25,10 @@ body {
gap: 16px;
.header {
display: block;
h1 {
display: none;
height: 0;
}
.header-banner {
background-image: url("/img/home_banner.jpg");
width: 298px;
@ -65,4 +73,98 @@ body {
}
}
}
}
}
.base-content-wrapper {
display: flex;
align-items: flex-start;
.box {
border: 1px solid mp.$border;
margin: 10px;
h2 {
padding: 2px;
margin-bottom: 4px;
border-bottom: 1px solid mp.$border;
font-family: fonts.$ll;
font-size: 1em;
background: mp.$bg;
background: linear-gradient(0deg,rgba(0, 0, 0, 1) 10%, c.adjust($color: mp.$link, $saturation: 4%, $lightness: -20%) 100%);
}
}
.welcome-aside-left {
width: max-content;
.now-playing-wrapper {
width: 190px;
#listening {
display: flex;
align-items: flex-start;
justify-content: space-evenly;
img {
order: 1;
max-width: 36px;
padding: 4px;
}
h3 {
font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
font-size: 0.8em;
padding: 0px 0px 0px 4px;
}
p {
font-size: 0.7em;
padding: 0px 0px 2px 4px;
}
}
}
.buttons-wrapper {
width: 190px;
.buttons {
display: flex;
align-items: flex-start;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-evenly;
img {
padding: 0;
margin: 0;
}
}
}
}
.welcome-content {
margin: 8px 4px;
h1 {
font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
font-size: 1em;
}
}
.welcome-aside-right {
width: max-content;
.recent-posts {
width: 190px;
ul {
padding: 0 0 4px 0;
list-style: none;
text-align: center;
.date {
vertical-align: middle;
font-size: 0.9em;
color: c.adjust($color: mp.$text, $lightness: -10%);
}
}
}
}
}
footer p {
margin: 2px;
font-size: 0.7em;
text-align: right;
}

View file

@ -1,13 +1,18 @@
const eleventySass = require("eleventy-sass");
const toml = require("@iarna/toml");
module.exports = function (eleventyConfig) {
eleventyConfig.addPlugin(eleventySass);
eleventyConfig.addPassthroughCopy("img");
eleventyConfig.addPassthroughCopy("css/fonts");
module.exports = function(eleventyConfig) {
eleventyConfig.setLayoutsDirectory("_layouts");
eleventyConfig.addPassthroughCopy("img");
eleventyConfig.addPassthroughCopy("css/fonts");
eleventyConfig.addPassthroughCopy("js");
eleventyConfig.addPassthroughCopy("LICENSE.txt");
return {
markdownTemplateEngine: "njk",
htmlTemplateEngine: "njk"
}
};
eleventyConfig.addPlugin(eleventySass);
eleventyConfig.addDataExtension("toml", (contents) => toml.parse(contents));
return {
markdownTemplateEngine: "njk",
htmlTemplateEngine: "njk"
}
};

BIN
img/buttons/4everfriend.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
img/buttons/cidoku.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
img/buttons/soniweb.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
img/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
img/icons/lastfm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
img/nekojiru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View file

@ -1,4 +1,5 @@
---
layout: base
layout: home
---
goodbye...
# hey...
welcome to my site!! not much is done yet but please have a look around.

35
js/lastfm.js Normal file
View file

@ -0,0 +1,35 @@
// this script is under the MIT license (https://max.nekoweb.org/resources/license.txt)
const USERNAME = "kaaisudev"; // Put your LastFM username here
const BASE_URL = `https://lastfm-last-played.biancarosa.com.br/${USERNAME}/latest-song`;
const getTrack = async () => {
const request = await fetch(BASE_URL);
const json = await request.json();
let status
let isPlaying = json.track['@attr']?.nowplaying || false;
if(!isPlaying) {
// Trigger if a song isn't playing
return;
} else {
// Trigger if a song is playing
}
// Values:
// COVER IMAGE: json.track.image[1]['#text']
// TITLE: json.track.name
// ARTIST: json.track.artist['#text']
document.getElementById("listening").innerHTML = `
<img src="${json.track.image[1]['#text']}">
<div id="trackInfo">
<h3 id="trackName">${json.track.name}</h3>
<p id="artistName">${json.track.artist['#text']}</p>
</div>
`
};
getTrack();
setInterval(() => { getTrack(); }, 10000);

1085
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -14,7 +14,10 @@
"type": "commonjs",
"dependencies": {
"@11ty/eleventy": "^3.0.0",
"@iarna/toml": "^2.2.5",
"eleventy-sass": "^3.0.0-beta.0",
"markdown-it-emoji": "^3.0.0",
"markdown-it-emoji-customizer": "github:actuallysomecat/markdown-it-emoji-customizer",
"sass": "^1.86.0"
}
}