Compare commits

..

19 Commits

Author SHA1 Message Date
f92f911360 release 2.0.4
Some checks failed
renovate / renovate (push) Successful in 46s
test-build / build (push) Failing after 47s
release-image / release (push) Failing after 1m26s
2025-08-11 19:34:59 -05:00
1cdbbd4a11 use double quotes
Some checks failed
test-build / build (push) Has been cancelled
renovate / renovate (push) Has been cancelled
2025-08-11 19:34:43 -05:00
da7c5c4a58 release 2.0.3
Some checks failed
renovate / renovate (push) Successful in 26s
test-build / build (push) Failing after 33s
release-image / release (push) Failing after 1m18s
2025-08-11 19:29:43 -05:00
931d1009ed support published value
Some checks failed
renovate / renovate (push) Has been cancelled
test-build / build (push) Has been cancelled
2025-08-11 19:29:26 -05:00
43ff986963 release 2.0.2
Some checks failed
renovate / renovate (push) Successful in 34s
test-build / build (push) Failing after 35s
release-image / release (push) Failing after 1m11s
2025-08-11 19:11:27 -05:00
b9d85a5520 fix layout
Some checks failed
renovate / renovate (push) Successful in 31s
test-build / build (push) Failing after 39s
2025-08-11 19:10:46 -05:00
9836b40531 fix height 2025-08-11 18:48:08 -05:00
ea1c3d9f1a 2.0.1 release
All checks were successful
test-build / build (push) Successful in 1m18s
release-image / release (push) Successful in 2m26s
renovate / renovate (push) Successful in 45s
2025-08-11 18:14:00 -05:00
28f73be784 update content 2025-08-11 18:13:22 -05:00
284f30c392 downgrade actions
All checks were successful
renovate / renovate (push) Successful in 33s
test-build / build (push) Successful in 57s
release-image / release (push) Successful in 2m53s
2025-08-11 17:25:44 -05:00
9e4a2d681b update checkout
Some checks failed
test-build / build (push) Failing after 3s
renovate / renovate (push) Failing after 3s
2025-08-11 17:18:51 -05:00
c8e250c5b2 Merge pull request 'Update dependency astro-compressor to v1' (#68) from renovate/astro-compressor-1.x into main
All checks were successful
renovate / renovate (push) Successful in 42s
test-build / build (push) Successful in 1m1s
Reviewed-on: #68
2025-08-11 22:15:42 +00:00
58f05178a4 Update dependency astro-compressor to v1
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 1m3s
2025-08-11 22:10:18 +00:00
b8966e2b88 Merge pull request 'Update dependency typescript to v5.9.2' (#66) from renovate/typescript-5.x into main
All checks were successful
renovate / renovate (push) Successful in 50s
test-build / build (push) Successful in 55s
Reviewed-on: #66
2025-08-11 22:09:32 +00:00
3f6563a0d3 Update dependency typescript to v5.9.2
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 47s
2025-08-11 22:07:18 +00:00
4840d15101 Merge pull request 'Update dependency @playform/compress to ^0.2.0' (#65) from renovate/playform-compress-0.x into main
All checks were successful
test-build / build (push) Successful in 57s
renovate / renovate (push) Successful in 1m17s
Reviewed-on: #65
2025-08-11 22:06:26 +00:00
f2cb98888a Update dependency @playform/compress to ^0.2.0
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 51s
2025-08-11 22:03:38 +00:00
9d1402ee82 Merge pull request 'Update dependency eslint to v9.33.0' (#62) from renovate/eslint-monorepo into main
All checks were successful
test-build / build (push) Successful in 1m13s
renovate / renovate (push) Successful in 1m59s
Reviewed-on: #62
2025-08-11 22:02:33 +00:00
741338ae9f Update dependency eslint to v9.33.0
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 1m39s
2025-08-11 21:34:24 +00:00
31 changed files with 327 additions and 344 deletions

View File

@@ -1,7 +1,7 @@
ARG REGISTRY=docker.io
FROM ${REGISTRY}/node:22.18.0-alpine3.22 AS base
LABEL version="2.0.0"
LABEL version="2.0.4"
LABEL description="Astro based personal website"
ENV PNPM_HOME="/pnpm"

View File

@@ -1,7 +1,7 @@
{
"name": "site-profile",
"type": "module",
"version": "2.0.0",
"version": "2.0.4",
"homepage": "https://www.alexlebens.dev",
"bugs": {
"url": "https://gitea.alexlebens.dev/alexlebens/site-profile/issues",
@@ -47,7 +47,7 @@
"@types/react": "^19.0.0",
"@types/unist": "^3.0.2",
"astro": "^5.12.8",
"astro-compressor": "^0.4.1",
"astro-compressor": "^1.0.0",
"astro-icon": "^1.1.5",
"framer-motion": "^12.16.0",
"mdast-util-to-string": "^4.0.0",
@@ -78,7 +78,7 @@
"prettier-plugin-astro": "^0.14.1",
"prettier-plugin-tailwindcss": "^0.6.14",
"timeago.js": "^4.0.2",
"typescript": "5.8.3",
"typescript": "5.9.2",
"typescript-eslint": "8.39.1"
}
}

525
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -27,13 +27,13 @@ const currentYear = new Date().getFullYear();
</div>
<span class="ml-3 text-xl font-bold text-neutral-800 dark:text-neutral-200">
Blog
{global.name}
</span>
</div>
</a>
<p class="mt-4 text-sm leading-relaxed text-neutral-600 dark:text-neutral-400">
A description of something.
{global.about}
</p>
</div>
<!-- Left links -->

View File

@@ -5,21 +5,9 @@ interface Props {
description: string;
count: number;
publishDate: string;
layoutPattern?: {
smCol: number;
mdCol: number;
row: number;
index: number;
};
}
const { slug, layoutPattern, title, description, count, publishDate } = Astro.props;
const isSingleItem =
layoutPattern &&
layoutPattern.row === 1 &&
(layoutPattern.smCol === 1 || layoutPattern.mdCol === 1);
const formatedDescription = isSingleItem ? `No description available` : description;
const { slug, title, description, count, publishDate } = Astro.props;
const baseClasses =
'group group-hover rounded-xl flex h-full min-h-[220px] cursor-pointer flex-col overflow-hidden';
@@ -32,17 +20,17 @@ const bgColorClasses =
<div
class={`relative min-h-0 flex-grow overflow-hidden transition-all duration-300 ${bgColorClasses}`}
>
<div class="absolute inset-1 flex flex-col justify-end p-3 md:p-4 lg:p-5">
<h2
class="group-hover:text-steel dark:group-hover:text-bermuda transition-text mb-4 text-4xl font-extrabold tracking-tight text-balance text-neutral-800 duration-300 dark:text-neutral-200"
>
{title}
</h2>
<p
class=`mb-4 ${isSingleItem ? 'hidden lg:block' : ''} max-w-prose text-pretty font-light text-neutral-600 dark:text-neutral-400 sm:text-lg`
>
{formatedDescription}
</p>
<div class="absolute inset-1 flex flex-col p-3 md:p-4 lg:p-5">
<div class="overflow-hidden">
<h2
class="group-hover:text-steel dark:group-hover:text-bermuda transition-text mb-4 text-4xl font-extrabold tracking-tight text-balance whitespace-nowrap text-neutral-800 duration-300 dark:text-neutral-200"
>
{title}
</h2>
<p class="mb-4 font-light text-neutral-600 sm:text-lg dark:text-neutral-400">
{description}
</p>
</div>
<div
class="mt-auto flex items-center justify-between pt-1 text-xs text-neutral-600 md:pt-2 dark:text-neutral-300"
>

View File

@@ -7,8 +7,6 @@ interface Props {
}
const { posts } = Astro.props;
const description = 'Here are a few articles that I think are not bad, hope you like too.';
---
<section class="mx-auto mb-10 max-w-[85rem] px-4 py-8 sm:px-6 lg:px-8 2xl:max-w-full">
@@ -17,13 +15,8 @@ const description = 'Here are a few articles that I think are not bad, hope you
id="selected-articel"
class="smooth-reveal-2 mb-4 text-5xl font-extrabold tracking-tight text-balance text-neutral-800 dark:text-neutral-200"
>
Posts
Older Articles
</h2>
<p
class="smooth-reveal-2 mb-8 max-w-prose font-light text-pretty text-neutral-600 sm:text-xl dark:text-neutral-400"
>
{description}
</p>
</div>
<div class="flex flex-col md:flex-row md:space-x-12 lg:space-x-16">

View File

@@ -10,7 +10,7 @@ interface Props {
const { title, description, url, icon } = Astro.props;
const baseClasses = 'smooth-reveal-2 group group-hover flex flex-col';
const baseClasses = 'smooth-reveal-2 group group-hover flex flex-col ';
const borderClasses = 'border border-neutral-100 dark:border-stone-500/20';
const bgColorClasses =
'bg-neutral-100/80 hover:bg-neutral-100 dark:bg-neutral-800/60 dark:hover:bg-neutral-800/90';
@@ -19,7 +19,7 @@ const shadowClasses = 'shadow-xs hover:shadow-md dark:shadow-md dark:hover:shado
<div class={`${baseClasses}`}>
<a
class={`rounded-xl duration-300 transition-all ${borderClasses} ${bgColorClasses} ${shadowClasses}`}
class={`rounded-xl duration-300 transition-all h-30 ${borderClasses} ${bgColorClasses} ${shadowClasses}`}
href={url}
data-astro-prefetch
>

View File

@@ -15,19 +15,19 @@ const global = await directus.request(readSingleton('site_global'));
<div class="grid gap-3 sm:grid-cols-2 sm:gap-6 lg:grid-cols-3">
<FeaturesCard
title="Cloud Engineer"
description="Full stack and multi cloud engineer"
url="#"
description="Full stack and cloud engineer."
url="/about"
icon="mdi:cloud-outline"
/>
<FeaturesCard
title="Homelab"
description="Tinkering, testing, deploying, etc, etc ..."
url="#"
url="/categories/homelab/"
icon="mdi:home-variant-outline"
/>
<FeaturesCard
title="Email Me"
description={`Reach me at ${global.email}`}
title="Email"
description={`Send me a message.`}
url=`mailto:${global.email}`
icon="mdi:email-fast"
/>

View File

@@ -7,6 +7,7 @@ import BlogCard from '@components/blog/BlogCard.astro';
const posts = await directus.request(
readItems('posts', {
filter: { published: { _eq: true } },
fields: ['*'],
sort: ['-published_date'],
})

View File

@@ -1,4 +1,4 @@
---
title: '二愣的小书屋 🔖'
description: '生活总是这样,不能让人处处都满意但我们还要热情地活下去'
title: 'Books 📖'
description: 'Books I have read or listened to'
---

View File

@@ -0,0 +1,4 @@
---
title: 'Cloud ☁️'
description: "Its just someone else's server"
---

View File

@@ -1,4 +0,0 @@
---
title: 'Golang 🚀'
description: 'Go 语言的词法分析与语法分析及折腾下 Go 编译原理吗'
---

View File

@@ -0,0 +1,4 @@
---
title: 'Homelab 🏠'
description: 'What happens when rack servers find a home'
---

View File

@@ -1,4 +1,4 @@
---
title: 'kubernetes 💩'
description: 'Kubernetes 是一个开源系统,用于自动化部署、扩展和管理容器化应用程序。'
title: 'Kubernetes ☸️'
description: 'The container orchestration system'
---

View File

@@ -1,4 +0,0 @@
---
title: 'Laravel 🐛'
description: '最优雅的 PHP 框架'
---

View File

@@ -1,4 +1,4 @@
---
title: '生活 💃'
description: '房贷要还的,水电费要交的,小孩学费也贵的,钱肯定要不够的呀。所以工作不敢扔,我大部分的快乐,都是来自于生活的夹缝。'
title: 'Life 🏃🏻'
description: 'Just random musings on everyday stuff'
---

View File

@@ -0,0 +1,4 @@
---
title: 'Minnesota 🌳'
description: 'Land of 10,000 Lakes'
---

View File

@@ -1,4 +0,0 @@
---
title: 'MySQL'
description: 'MySQL is an open-source relational database management system (RDBMS).'
---

View File

@@ -1,4 +0,0 @@
---
title: 'Nginx 🐕‍🦺'
description: '高性能的 HTTP 和反向代理 Web 服务器,奈何反向代理的 PHP-FMP 服务太慢。'
---

View File

@@ -1,4 +0,0 @@
---
title: 'PHP 🐘'
description: 'PHP is a popular general-purpose scripting language that is especially suited to web development.'
---

View File

@@ -0,0 +1,4 @@
---
title: 'PostgreSQL'
description: 'PostgreSQL is an open-source relational database management system (RDBMS)'
---

View File

@@ -0,0 +1,4 @@
---
title: 'Python 🐍'
description: 'Generally my go to language'
---

View File

@@ -1,4 +1,4 @@
---
title: 'Tool 🪜'
description: '停止折腾就老了吧'
description: 'Usually just the software kind'
---

View File

@@ -1,4 +1,4 @@
---
title: 'What Is?'
description: '什么是快乐星球,什么是快乐星球,什么是快乐星球'
description: 'A series on discovery'
---

5
src/env.d.ts vendored
View File

@@ -1,8 +1,3 @@
<<<<<<< HEAD
/// <reference path="../.astro/types.d.ts" />
/// <reference types="astro/client" />
/// <reference types="astro/content" />
=======
/// <reference types="astro/client" />
/// <reference path="../.astro/types.d.ts" />
>>>>>>> 184f0c7 (fix path)

View File

@@ -25,6 +25,7 @@ export type Post = {
tags: string[];
category: string;
selected: boolean;
published: boolean;
content: string;
image: string;
image_alt: string;

View File

@@ -13,6 +13,7 @@ import blogImg from '@images/autumn_tree.png';
const global = await directus.request(readSingleton('site_global'));
const posts = await directus.request(
readItems('posts', {
filter: { status: { _eq: true } },
fields: ['*'],
sort: ['-published_date'],
})
@@ -20,7 +21,7 @@ const posts = await directus.request(
const selectedPosts: Post[] = posts.filter((p) => p.selected);
const description =
'Here are some articles that Alex Lebens believes are not bad, hope you enjoy them.';
"Sharing what I've learned, one post at a time. I hope you find something useful.";
---
<BaseLayout

View File

@@ -21,6 +21,7 @@ const { category } = Astro.props;
const global = await directus.request(readSingleton('site_global'));
const posts = await directus.request(
readItems('posts', {
filter: { published: { _eq: true } },
fields: ['*'],
sort: ['-published_date'],
})

View File

@@ -14,6 +14,7 @@ import categoryImg from '@images/autumn_bench.png';
const global = await directus.request(readSingleton('site_global'));
const posts = await directus.request(
readItems('posts', {
filter: { published: { _eq: true } },
fields: ['*'],
sort: ['-published_date'],
})
@@ -74,7 +75,7 @@ const categories = (await getCollection('categories'))
});
const description =
'Here are some categories that I am interested in, including Laravel, Golang, and my life.';
'Here are some of the general categories that I am interested in, including homelabs, technology, and Minnesota.';
---
<BaseLayout
@@ -118,7 +119,6 @@ const description =
description={category.data.description}
count={postMap.get(category.slug)?.length ?? 0}
publishDate={timeago(postMap.get(category.slug)?.[0]?.published_date)}
layoutPattern={category.layoutPattern}
/>
</div>
);

View File

@@ -11,7 +11,8 @@ import homeImg from '@images/autumn_mountain.png';
const global = await directus.request(readSingleton('site_global'));
const description = 'Writing on technology, selfhosting, and me.';
const description =
'Engineering the cloud by day, homelab by night, and exploring Minnesota in between.';
---
<BaseLayout

View File

@@ -23,6 +23,7 @@ export async function GET(context: APIContext) {
// Load the content collection entries to add to our RSS feed.
const posts = await directus.request(
readItems('posts', {
filter: { published: { _eq: true } },
fields: ['*'],
sort: ['-published_date'],
})