reorderd stuff, added homepage

This commit is contained in:
2026-03-02 20:55:04 +01:00
parent 245508f81a
commit 67bbc3cf9a
32 changed files with 480 additions and 379 deletions

View File

@@ -4,7 +4,6 @@ import mdx from '@astrojs/mdx';
import sitemap from '@astrojs/sitemap'; import sitemap from '@astrojs/sitemap';
import { defineConfig } from 'astro/config'; import { defineConfig } from 'astro/config';
// https://astro.build/config
export default defineConfig({ export default defineConfig({
site: 'https://example.com', site: 'https://example.com',
integrations: [mdx(), sitemap()], integrations: [mdx(), sitemap()],

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

@@ -1,15 +0,0 @@
---
const today = new Date();
---
<footer>
This is my Foot
</footer>
<style>
footer {
padding: 2em 1em 6em 1em;
background: linear-gradient(var(--gray-gradient)) no-repeat;
color: rgb(var(--gray));
text-align: center;
}
</style>

View File

@@ -3,7 +3,10 @@ import { SITE_TITLE } from '../consts';
import HeaderLink from './HeaderLink.astro'; import HeaderLink from './HeaderLink.astro';
import { getCollection } from 'astro:content'; import { getCollection } from 'astro:content';
const posts = (await getCollection('blog')).sort( const personalPosts = (await getCollection('personal')).sort(
(a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf(),
);
const uniPosts = (await getCollection('uni')).sort(
(a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf(), (a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf(),
); );
--- ---
@@ -12,10 +15,21 @@ const posts = (await getCollection('blog')).sort(
<nav> <nav>
<h2><a href="/">{SITE_TITLE}</a></h2> <h2><a href="/">{SITE_TITLE}</a></h2>
<ul> <ul>
<h4>Personal</h4>
{ {
posts.map((post) => ( personalPosts.map((post) => (
<li> <li>
<HeaderLink href={`/blog/${post.id}/`}>{post.data.title}</HeaderLink> <HeaderLink href={`/blog/personal/${post.id}/`}>{post.data.title}</HeaderLink>
</li>
))
}
<hr>
<h4>University</h4>
<h6>(Group Projects)</h6>
{
uniPosts.map((post) => (
<li>
<HeaderLink href={`/blog/university/${post.id}/`}>{post.data.title}</HeaderLink>
</li> </li>
)) ))
} }

View File

@@ -1,9 +1,9 @@
import { defineCollection, z } from 'astro:content'; import { defineCollection, z } from 'astro:content';
import { glob } from 'astro/loaders'; import { glob } from 'astro/loaders';
const blog = defineCollection({ const personal = defineCollection({
// Load Markdown and MDX files in the `src/content/blog/` directory. // Load Markdown and MDX files in the `src/content/blog/` directory.
loader: glob({ base: './src/content/blog', pattern: '**/*.{md,mdx}' }), loader: glob({ base: './src/content/blog/personal', pattern: '**/*.{md,mdx}' }),
// Type-check frontmatter using a schema // Type-check frontmatter using a schema
schema: ({ image }) => schema: ({ image }) =>
z.object({ z.object({
@@ -16,4 +16,20 @@ const blog = defineCollection({
}), }),
}); });
export const collections = { blog };
const uni = defineCollection({
// Load Markdown and MDX files in the `src/content/blog/` directory.
loader: glob({ base: './src/content/blog/university', pattern: '**/*.{md,mdx}' }),
// Type-check frontmatter using a schema
schema: ({ image }) =>
z.object({
title: z.string(),
description: z.string(),
// Transform string to Date object
pubDate: z.coerce.date(),
gitLink: z.string().optional(),
heroImage: image().optional(),
}),
});
export const collections = { personal, uni };

View File

@@ -1,28 +0,0 @@
---
title: 'FileClap'
description: 'Doormat'
pubDate: 'Jul 08 2022'
gitLink: 'https://github.com/juli0n21/fileclap'
---
<style is:global>
h1 { color: #ffdf20 }
body {background: #030712 }
.wrapper {background: #101828 }
p { color: #cacbcd}
a { color: #cacbcd }
img { border: 10px solid;
border-color: #ffdf20; }
ul li {
color: #ffdf20;
}
</style>
# FileClap: Clear the paperwork off the table
Your digital assistant for students and trainees
No more paper chaos! FileClap helps you easily organize photos, receipts, and important documents. Securely stored and accessible from anywhere—for a stress-free daily life with more clarity!
![homeviwe](../../../assets/fileclap/homeview.png)
Uses Vector embeddings to aid in context aware searching
<a href="fileclap.com/home"><h1>check it out!</h1></a>

View File

@@ -0,0 +1,39 @@
---
title: 'FileClap'
description: 'Doormat'
pubDate: 'Mar 01 2026'
gitLink: 'https://github.com/juli0n21/fileclap'
---
import { Image } from 'astro:assets';
import homeview from '../../../assets/fileclap/homeview.png';
import search from '../../../assets/fileclap/search.png';
<style is:global>{`
h1, h2, h3, h4, h5, h6, figcaption::before { color: #ffdf20 }
body {background: #030712 }
.wrapper {background: #101828 }
p { color: #cacbcd}
a { color: #cacbcd }
img { border: 10px solid;
border-color: #ffdf20; }
ul li {
color: #ffdf20;
}
}
`}</style>
# FileClap: Clear the paperwork off the table
Your digital assistant for students and trainees
No more paper chaos! FileClap helps you easily organize photos, receipts, and important documents. Securely stored and accessible from anywhere—for a stress-free daily life with more clarity!
<Image src={homeview} alt="homeview" />
Advanced Search Capabilites using Vector embeddings for shit
<figure>
<Image src={search} alt="search" />
<figcaption>Preview of the Search result for value "golang books"</figcaption>
</figure>
<a href="https://fileclap.com/home" target="_blank" ><h1>check it out!</h1></a>

View File

@@ -1,25 +1,21 @@
--- ---
title: 'Deployment' title: 'Deployment'
description: 'Lorem ipsum dolor sit amet' description: 'Lorem ipsum dolor sit amet'
pubDate: 'Jul 08 2022' pubDate: 'Mar 02 2026'
--- ---
<style is:global> <style is:global>
h1 { color: #bb4d00 } h1,
h2 { color: #bb4d00 } h2,
h3 { color: #bb4d00 } h3,
h4 { color: #bb4d00 } h4,
body {background: #27272a } ul li,
.wrapper {background: #18181b } figcaption::before { color: #f90f91 }
p { color: #e2e2e2} body {background: #19171a }
a { color: #e2e2e2 } .wrapper {background: #0a090a }
img { border: 10px solid; p, a, ul { color: #e2e2e2}
border-color: #bb4d00; } img {
border: 10px solid;
ul { border-color: #f90f91;
color: #e2e2e2;
}
ul li {
color: #bb4d00;
} }
.images { .images {

View File

@@ -1,26 +1,22 @@
--- ---
title: 'Horsa' title: 'Horsa'
description: 'Lorem ipsum dolor sit amet' description: 'Lorem ipsum dolor sit amet'
pubDate: 'Jul 08 2022' pubDate: 'Feb 27 2026'
gitLink: 'https://github.com/juli0n21/horsa' gitLink: 'https://github.com/juli0n21/horsa'
--- ---
<style is:global> <style is:global>
h1 { color: #bb4d00 } h1,
h2 { color: #bb4d00 } h2,
h3 { color: #bb4d00 } h3,
h4 { color: #bb4d00 } h4,
ul li,
figcaption::before { color: #bb4d00 }
body {background: #27272a } body {background: #27272a }
.wrapper {background: #18181b } .wrapper {background: #18181b }
p { color: #e2e2e2} p, a, ul { color: #e2e2e2}
a { color: #e2e2e2 } img {
img { border: 10px solid; border: 10px solid;
border-color: #bb4d00; } border-color: #bb4d00;
ul {
color: #e2e2e2;
}
ul li {
color: #bb4d00;
} }
</style> </style>
# Horsa Haas HorseShoe as a Service # Horsa Haas HorseShoe as a Service

View File

@@ -1,24 +0,0 @@
---
title: 'osu!Progess Server'
description: 'Lorem ipsum dolor sit amet'
pubDate: 'Jul 08 2022'
---
<style is:global>
h1 { color: #bb4d00 }
h2 { color: #bb4d00 }
h3 { color: #bb4d00 }
h4 { color: #bb4d00 }
body {background: #27272a }
.wrapper {background: #18181b }
p { color: #e2e2e2}
a { color: #e2e2e2 }
img { border: 10px solid;
border-color: #bb4d00; }
ul {
color: #e2e2e2;
}
ul li {
color: #bb4d00;
}
</style>

View File

@@ -1,24 +1,49 @@
--- ---
title: 'osu!Progress Local' title: 'osu!Progress'
description: 'Lorem ipsum dolor sit amet' description: 'Lorem ipsum dolor sit amet'
pubDate: 'Jul 08 2022' pubDate: 'Jun 20 2024'
--- ---
<style is:global> <style is:global>
h1 { color: #bb4d00 } h1,
h2 { color: #bb4d00 } h2,
h3 { color: #bb4d00 } h3,
h4 { color: #bb4d00 } h4, ul li { color: #c8cacb }
body {background: #27272a } body { background: #171a1c }
.wrapper {background: #18181b } .wrapper {background: #22282a }
p { color: #e2e2e2} p, a, ul { color: #cda637 }
a { color: #e2e2e2 } img {
img { border: 10px solid; border: 10px solid;
border-color: #bb4d00; } border-color: #aaaeaf;
ul {
color: #e2e2e2;
}
ul li {
color: #bb4d00;
} }
</style> </style>
# osu!Progress - track ur scores and time wasted
## Features
- Automaticaly Tracks Passed, Failed, Retrys and Canceld Scores
- Calculates PP and Fullcombo PP
- Tracks Time spend on Any specific Screen
- Tracks BanchoTime (Idle, playing, afk...)
- More or less supports All Modes and Mods
- Shows Potential Fcable Maps
- Progression over time.
- Missanalzer for Passed Scores
# Screenshots
# Arcitectur
- C#
- Liquid for Templates
- Tailwind for Styling
- Sqlite as DB
## Canceld Extension - [osuProgress Server](https://github.com/JuLi0n21/osuprogressserver)
The idea was to extend the concept and make it easy to share local scores only, due to lazer not being supported by the score extraction library at the time and now live score feed being established went no where
# Arcitectur
- golang
- a-h/templ + tailwind
- Sqlite as DB
![Score](../../../assets/osuProgress/scorePage.png)

View File

@@ -4,16 +4,18 @@ description: 'Lorem ipsum dolor sit amet'
pubDate: 'Jul 08 2022' pubDate: 'Jul 08 2022'
--- ---
<style is:global> <style is:global>
h1 { color: #eab308 } h1,
h2 { color: #eab308 } h2,
h3 { color: #eab308 } h3,
h4 { color: #eab308 } h4,
body {background: #1c1719 } ul li,
.wrapper {background: #1c1719 } figcaption:before { color: #eab308 }
p { color: #ec4889} body, .wrapper {background: #1c1719 }
a { color: #ec4889 } a, p, ul { color: #ec4889}
img { border: 10px solid; img {
border-color: #ec4889; } border: 10px solid;
border-color: #eab308;
}
</style> </style>
# Osu!Music (Pwa Player) # Osu!Music (Pwa Player)

View File

@@ -4,21 +4,15 @@ description: 'Lorem ipsum dolor sit amet'
pubDate: 'Jul 08 2022' pubDate: 'Jul 08 2022'
--- ---
<style is:global> <style is:global>
h1 { color: #bb4d00 } h1,
h2 { color: #bb4d00 } h2,
h3 { color: #bb4d00 } h3,
h4 { color: #bb4d00 } h4, ul li { color: #c8cacb }
body {background: #27272a } body { background: #171a1c }
.wrapper {background: #18181b } .wrapper {background: #22282a }
p { color: #e2e2e2} p, a, ul { color: #cda637 }
a { color: #e2e2e2 } img {
img { border: 10px solid; border: 10px solid;
border-color: #bb4d00; } border-color: #aaaeaf;
ul {
color: #e2e2e2;
}
ul li {
color: #bb4d00;
} }
</style> </style>

View File

@@ -4,21 +4,15 @@ description: 'Lorem ipsum dolor sit amet'
pubDate: 'Jul 08 2022' pubDate: 'Jul 08 2022'
--- ---
<style is:global> <style is:global>
h1 { color: #bb4d00 } h1,
h2 { color: #bb4d00 } h2,
h3 { color: #bb4d00 } h3,
h4 { color: #bb4d00 } h4, ul li { color: #c8cacb }
body {background: #27272a } body { background: #171a1c }
.wrapper {background: #18181b } .wrapper {background: #22282a }
p { color: #e2e2e2} p, a, ul { color: #cda637 }
a { color: #e2e2e2 } img {
img { border: 10px solid; border: 10px solid;
border-color: #bb4d00; } border-color: #aaaeaf;
ul {
color: #e2e2e2;
}
ul li {
color: #bb4d00;
} }
</style> </style>

View File

@@ -4,21 +4,17 @@ description: 'Lorem ipsum dolor sit amet'
pubDate: 'Jul 08 2022' pubDate: 'Jul 08 2022'
--- ---
<style is:global> <style is:global>
h1 { color: #bb4d00 } h1,
h2 { color: #bb4d00 } h2,
h3 { color: #bb4d00 } h3,
h4 { color: #bb4d00 } h4,
ul li,
figcaption::before { color: #bb4d00 }
body {background: #27272a } body {background: #27272a }
.wrapper {background: #18181b } .wrapper {background: #18181b }
p { color: #e2e2e2} p, a, ul { color: #e2e2e2}
a { color: #e2e2e2 } img {
img { border: 10px solid; border: 10px solid;
border-color: #bb4d00; } border-color: #bb4d00;
ul {
color: #e2e2e2;
}
ul li {
color: #bb4d00;
} }
</style> </style>

View File

@@ -4,21 +4,17 @@ description: 'Lorem ipsum dolor sit amet'
pubDate: 'Jul 08 2022' pubDate: 'Jul 08 2022'
--- ---
<style is:global> <style is:global>
h1 { color: #bb4d00 } h1,
h2 { color: #bb4d00 } h2,
h3 { color: #bb4d00 } h3,
h4 { color: #bb4d00 } h4,
ul li,
figcaption::before { color: #bb4d00 }
body {background: #27272a } body {background: #27272a }
.wrapper {background: #18181b } .wrapper {background: #18181b }
p { color: #e2e2e2} p, a, ul { color: #e2e2e2}
a { color: #e2e2e2 } img {
img { border: 10px solid; border: 10px solid;
border-color: #bb4d00; } border-color: #bb4d00;
ul {
color: #e2e2e2;
}
ul li {
color: #bb4d00;
} }
</style> </style>

View File

@@ -4,21 +4,17 @@ description: 'Lorem ipsum dolor sit amet'
pubDate: 'Jul 08 2022' pubDate: 'Jul 08 2022'
--- ---
<style is:global> <style is:global>
h1 { color: #bb4d00 } h1,
h2 { color: #bb4d00 } h2,
h3 { color: #bb4d00 } h3,
h4 { color: #bb4d00 } h4,
ul li,
figcaption::before { color: #bb4d00 }
body {background: #27272a } body {background: #27272a }
.wrapper {background: #18181b } .wrapper {background: #18181b }
p { color: #e2e2e2} p, a, ul { color: #e2e2e2}
a { color: #e2e2e2 } img {
img { border: 10px solid; border: 10px solid;
border-color: #bb4d00; } border-color: #bb4d00;
ul {
color: #e2e2e2;
}
ul li {
color: #bb4d00;
} }
</style> </style>

View File

@@ -4,21 +4,17 @@ description: 'Lorem ipsum dolor sit amet'
pubDate: 'Jul 08 2022' pubDate: 'Jul 08 2022'
--- ---
<style is:global> <style is:global>
h1 { color: #bb4d00 } h1,
h2 { color: #bb4d00 } h2,
h3 { color: #bb4d00 } h3,
h4 { color: #bb4d00 } h4,
ul li,
figcaption::before { color: #bb4d00 }
body {background: #27272a } body {background: #27272a }
.wrapper {background: #18181b } .wrapper {background: #18181b }
p { color: #e2e2e2} p, a, ul { color: #e2e2e2}
a { color: #e2e2e2 } img {
img { border: 10px solid; border: 10px solid;
border-color: #bb4d00; } border-color: #bb4d00;
ul {
color: #e2e2e2;
}
ul li {
color: #bb4d00;
} }
</style> </style>

View File

@@ -4,21 +4,17 @@ description: 'Lorem ipsum dolor sit amet'
pubDate: 'Jul 08 2022' pubDate: 'Jul 08 2022'
--- ---
<style is:global> <style is:global>
h1 { color: #bb4d00 } h1,
h2 { color: #bb4d00 } h2,
h3 { color: #bb4d00 } h3,
h4 { color: #bb4d00 } h4,
ul li,
figcaption::before { color: #bb4d00 }
body {background: #27272a } body {background: #27272a }
.wrapper {background: #18181b } .wrapper {background: #18181b }
p { color: #e2e2e2} p, a, ul { color: #e2e2e2}
a { color: #e2e2e2 } img {
img { border: 10px solid; border: 10px solid;
border-color: #bb4d00; } border-color: #bb4d00;
ul {
color: #e2e2e2;
}
ul li {
color: #bb4d00;
} }
</style> </style>

View File

@@ -4,21 +4,17 @@ description: 'Lorem ipsum dolor sit amet'
pubDate: 'Jul 08 2022' pubDate: 'Jul 08 2022'
--- ---
<style is:global> <style is:global>
h1 { color: #bb4d00 } h1,
h2 { color: #bb4d00 } h2,
h3 { color: #bb4d00 } h3,
h4 { color: #bb4d00 } h4,
ul li,
figcaption::before { color: #bb4d00 }
body {background: #27272a } body {background: #27272a }
.wrapper {background: #18181b } .wrapper {background: #18181b }
p { color: #e2e2e2} p, a, ul { color: #e2e2e2}
a { color: #e2e2e2 } img {
img { border: 10px solid; border: 10px solid;
border-color: #bb4d00; } border-color: #bb4d00;
ul {
color: #e2e2e2;
}
ul li {
color: #bb4d00;
} }
</style> </style>

View File

@@ -4,21 +4,17 @@ description: 'Lorem ipsum dolor sit amet'
pubDate: 'Jul 08 2022' pubDate: 'Jul 08 2022'
--- ---
<style is:global> <style is:global>
h1 { color: #bb4d00 } h1,
h2 { color: #bb4d00 } h2,
h3 { color: #bb4d00 } h3,
h4 { color: #bb4d00 } h4,
ul li,
figcaption::before { color: #bb4d00 }
body {background: #27272a } body {background: #27272a }
.wrapper {background: #18181b } .wrapper {background: #18181b }
p { color: #e2e2e2} p, a, ul { color: #e2e2e2}
a { color: #e2e2e2 } img {
img { border: 10px solid; border: 10px solid;
border-color: #bb4d00; } border-color: #bb4d00;
ul {
color: #e2e2e2;
}
ul li {
color: #bb4d00;
} }
</style> </style>

View File

@@ -4,21 +4,17 @@ description: 'Lorem ipsum dolor sit amet'
pubDate: 'Jul 08 2022' pubDate: 'Jul 08 2022'
--- ---
<style is:global> <style is:global>
h1 { color: #bb4d00 } h1,
h2 { color: #bb4d00 } h2,
h3 { color: #bb4d00 } h3,
h4 { color: #bb4d00 } h4,
ul li,
figcaption::before { color: #bb4d00 }
body {background: #27272a } body {background: #27272a }
.wrapper {background: #18181b } .wrapper {background: #18181b }
p { color: #e2e2e2} p, a, ul { color: #e2e2e2}
a { color: #e2e2e2 } img {
img { border: 10px solid; border: 10px solid;
border-color: #bb4d00; } border-color: #bb4d00;
ul {
color: #e2e2e2;
}
ul li {
color: #bb4d00;
} }
</style> </style>

View File

@@ -4,21 +4,17 @@ description: 'Lorem ipsum dolor sit amet'
pubDate: 'Jul 08 2022' pubDate: 'Jul 08 2022'
--- ---
<style is:global> <style is:global>
h1 { color: #bb4d00 } h1,
h2 { color: #bb4d00 } h2,
h3 { color: #bb4d00 } h3,
h4 { color: #bb4d00 } h4,
ul li,
figcaption::before { color: #bb4d00 }
body {background: #27272a } body {background: #27272a }
.wrapper {background: #18181b } .wrapper {background: #18181b }
p { color: #e2e2e2} p, a, ul { color: #e2e2e2}
a { color: #e2e2e2 } img {
img { border: 10px solid; border: 10px solid;
border-color: #bb4d00; } border-color: #bb4d00;
ul {
color: #e2e2e2;
}
ul li {
color: #bb4d00;
} }
</style> </style>

View File

@@ -1,24 +0,0 @@
---
title: 'SplineInterpolation'
description: 'Lorem ipsum dolor sit amet'
pubDate: 'Jul 08 2022'
---
<style is:global>
h1 { color: #bb4d00 }
h2 { color: #bb4d00 }
h3 { color: #bb4d00 }
h4 { color: #bb4d00 }
body {background: #27272a }
.wrapper {background: #18181b }
p { color: #e2e2e2}
a { color: #e2e2e2 }
img { border: 10px solid;
border-color: #bb4d00; }
ul {
color: #e2e2e2;
}
ul li {
color: #bb4d00;
}
</style>

View File

@@ -5,7 +5,7 @@ import BaseHead from '../components/BaseHead.astro';
import Footer from '../components/Footer.astro'; import Footer from '../components/Footer.astro';
import FormattedDate from '../components/FormattedDate.astro'; import FormattedDate from '../components/FormattedDate.astro';
import Header from '../components/Header.astro'; import Header from '../components/Header.astro';
import GithubIcon from '../assets/github.svg'; import GithubIcon from '../assets/github.svg'
type Props = CollectionEntry<'blog'>['data']; type Props = CollectionEntry<'blog'>['data'];
const { title, description, pubDate, updatedDate, gitLink } = Astro.props; const { title, description, pubDate, updatedDate, gitLink } = Astro.props;
@@ -21,13 +21,9 @@ const { title, description, pubDate, updatedDate, gitLink } = Astro.props;
<Header /> <Header />
<div class="wrapper"> <div class="wrapper">
<a href={gitLink ?? 'https://github.com/juli0n21'} style="position: relative;"> <a href={gitLink ?? 'https://github.com/juli0n21'} style="position: relative;">
<svg style="position: absolute; right:0;" height="50px" width="50px" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16"> <GithubIcon style="position: absolute; right:0;" width="50px" height="50px" />
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/>
</svg>
</a> </a>
<slot /> <slot />
<Footer />
</div> </div>
</main> </main>

View File

@@ -1,20 +0,0 @@
---
import { type CollectionEntry, getCollection, render } from 'astro:content';
import BlogPost from '../../layouts/BlogPost.astro';
export async function getStaticPaths() {
const posts = await getCollection('blog');
return posts.map((post) => ({
params: { slug: post.id },
props: post,
}));
}
type Props = CollectionEntry<'blog'>;
const post = Astro.props;
const { Content } = await render(post);
---
<BlogPost {...post.data}>
<Content />
</BlogPost>

View File

@@ -0,0 +1,21 @@
---
import { getCollection, render } from 'astro:content';
import BlogPost from '../../../layouts/BlogPost.astro';
export async function getStaticPaths() {
const posts = await getCollection('personal');
return posts.map(post => ({
params: { id: post.id },
props: { post },
}));
}
type Props = CollectionEntry<'blog'>;
const { post } = Astro.props;
const { Content } = await render(post);
---
<BlogPost {...post.data}>
<Content />
</BlogPost>

View File

@@ -0,0 +1,21 @@
---
import { getCollection, render } from 'astro:content';
import BlogPost from '../../../layouts/BlogPost.astro';
export async function getStaticPaths() {
const posts = await getCollection('uni');
return posts.map(post => ({
params: { id: post.id },
props: { post },
}));
}
type Props = CollectionEntry<'blog'>;
const { post } = Astro.props;
const { Content } = await render(post);
---
<BlogPost {...post.data}>
<Content />
</BlogPost>

View File

@@ -3,6 +3,23 @@ import BaseHead from '../components/BaseHead.astro';
import Footer from '../components/Footer.astro'; import Footer from '../components/Footer.astro';
import Header from '../components/Header.astro'; import Header from '../components/Header.astro';
import { SITE_DESCRIPTION, SITE_TITLE } from '../consts'; import { SITE_DESCRIPTION, SITE_TITLE } from '../consts';
let images = [];
let shuffeld = [];
const response = await fetch('https://fshare.kami.boo/api/user/folders/cmm9jbqvt00025omwu5cnpw9i',
{
headers: {
'Authorization': 'MTc3MjQ3ODQ5OTA3OQ==.ZTE1OWU4ZmZlZWNiN2IyODIyYWJmOGU4LjgxZmZiYmM5MGJmZjlmNTZiYmFjYThlMDg4MzFiOTA0NzVlMjYyMGQyMmRkZjVkYWNlMTY3ZGYxMWRjNTQ1YmNiZDMxNzM1MTcyNjU0YjRjODYxY2ViY2I4YWY0MWEyZTQyZDQzYThjZDRmZDkxMjQ0MDRlZmI4ODQ4YWZjYWNlZDEuZTgwNDZjNTgyOTlhYjQyMDdmMTIzNTYxMjk0ZmQ4NWQ=',
}
});
if (response.ok) {
const data = await response.json();
const files = data.files.map(f => `https://fshare.kami.boo${f.url}`).sort(() => Math.random() - .5);
const middle = Math.round(files.length / 2);
shuffeld = files.slice(0,middle);
images = files.slice(middle);
}
--- ---
<!doctype html> <!doctype html>
@@ -11,9 +28,133 @@ import { SITE_DESCRIPTION, SITE_TITLE } from '../consts';
<BaseHead title={SITE_TITLE} description={SITE_DESCRIPTION} /> <BaseHead title={SITE_TITLE} description={SITE_DESCRIPTION} />
</head> </head>
<body> <body>
<Header />
Welcome to this Horrible Website, pick any link from the sidebar. <div class="layout">
</main> <aside class="sidebar">
<Footer /> <Header />
</aside>
<main class="scrolling-gallery">
<div class="gallery-wrapper">
<div class="scroll-track">
{images.map((src) => (
<div class="tilted-container">
<img src={src} alt="" />
</div>
))}
{images.map((src) => (
<div class="tilted-container">
<img src={src} alt="" />
</div>
))}
</div>
<div class="scroll-track track-reverse">
{shuffeld.slice().reverse().map((src) => (
<div class="tilted-container">
<img src={src} alt="" />
</div>
))}
{shuffeld.slice().reverse().map((src) => (
<div class="tilted-container">
<img src={src} alt="" />
</div>
))}
</div>
</div>
</main>
</div>
</body> </body>
</html> </html>
<style>
body, html {
margin: 0;
padding: 0;
height: 100vh;
overflow: hidden;
}
main {
margin: 1cm;
padding: 1cm;
}
.layout {
display: flex;
height: 100%;
width: 100%;
}
.sidebar {
flex: 0 0 200px;
height: 100%;
display: flex;
flex-direction: column;
padding: 0;
box-sizing: border-box;
z-index: 10;
background: rgba(0, 0, 0, 0.5);
color: white;
}
.scrolling-gallery {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
position: relative;
}
.gallery-wrapper {
display: flex;
flex-direction: column;
gap: 4rem;
transform: rotate(-8deg) scale(1.3);
}
.scroll-track {
display: flex;
gap: 3rem;
width: max-content;
animation: infiniteScroll 300s linear infinite;
padding: 0 2rem;
}
.track-reverse {
animation: infiniteScrollReverse 630s linear infinite;
}
.tilted-container {
width: 220px;
height: 280px;
flex-shrink: 0;
border-radius: 12px;
overflow: hidden;
transition: transform 0.3s ease;
box-shadow: 0 10px 20px rgba(0,0,0,0.1);
}
.tilted-container:hover {
transform: scale(1.05);
z-index: 1;
}
.tilted-container img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
@keyframes infiniteScroll {
0% { transform: translateX(0); }
100% { transform: translateX(calc(-50%)); }
}
@keyframes infiniteScrollReverse {
0% { transform: translateX(0); }
100% { transform: translateX(calc(50%)) }
}
</style>

View File

@@ -1,16 +0,0 @@
import { getCollection } from 'astro:content';
import rss from '@astrojs/rss';
import { SITE_DESCRIPTION, SITE_TITLE } from '../consts';
export async function GET(context) {
const posts = await getCollection('blog');
return rss({
title: SITE_TITLE,
description: SITE_DESCRIPTION,
site: context.site,
items: posts.map((post) => ({
...post.data,
link: `/blog/${post.id}/`,
})),
});
}

View File

@@ -5,16 +5,8 @@
*/ */
:root { :root {
--accent: #2337ff; min-width: 0px;
--accent-dark: #000d8a; min-height: 0px;
--black: 15, 18, 25;
--gray: 96, 115, 159;
--gray-light: 229, 233, 240;
--gray-dark: 34, 41, 57;
--gray-gradient: rgba(var(--gray-light), 50%), #fff;
--box-shadow:
0 2px 6px rgba(var(--gray), 25%), 0 8px 24px rgba(var(--gray), 33%), 0 16px 32px
rgba(var(--gray), 33%);
} }
@font-face { @font-face {
font-family: "Atkinson"; font-family: "Atkinson";
@@ -39,14 +31,12 @@ body {
background-size: 100% 600px; background-size: 100% 600px;
word-wrap: break-word; word-wrap: break-word;
overflow-wrap: break-word; overflow-wrap: break-word;
font-size: 20px; font-size: 17px;
line-height: 1.7; line-height: 1.5;
} }
main { ul {
width: 720px; padding: 5px;
max-width: calc(100% - 2em); margin: 0;
margin: auto;
padding: 3em 1em;
} }
h1, h1,
h2, h2,
@@ -126,6 +116,26 @@ hr {
border: none; border: none;
border-top: 1px solid rgb(var(--gray-light)); border-top: 1px solid rgb(var(--gray-light));
} }
figure {
display: flex;
flex-direction: column;
align-items: center;
margin: 2rem 0;
gap: 0.5rem;
}
figcaption {
font-style: italic;
color: #cacbcd;
text-align: center;
max-width: 80%;
}
figcaption::before {
content: "Figure: ";
font-weight: bold;
}
@media (max-width: 720px) { @media (max-width: 720px) {
body { body {
font-size: 18px; font-size: 18px;