Compare commits
37 Commits
Author | SHA1 | Date | |
---|---|---|---|
93d11dca17 | |||
3eacf17f61 | |||
12ffcc4d72 | |||
060400183f
|
|||
31ec9908e6
|
|||
4180a2eceb | |||
fdef90e636
|
|||
c369651a70
|
|||
75fd981f10 | |||
80a4aee41c | |||
9e84de0a5a | |||
64140cce6b | |||
0733fe6a06 | |||
0f5c015932
|
|||
dc17aeb3d5 | |||
a852f22409
|
|||
130a3866bc | |||
2fb0542d36
|
|||
8a2be36f17 | |||
266d25e0f2
|
|||
34dbe6d809 | |||
3c654e19e1
|
|||
2a0142ee83
|
|||
7836f49828 | |||
25280a239c | |||
c56dc99e72 | |||
48b7a13729 | |||
ac026b0264 | |||
5332854856 | |||
2e0c2f3de5 | |||
88d510b06f | |||
7843378503 | |||
75016fdb4f
|
|||
4d74f74ab2 | |||
2c1b7f577d
|
|||
0e79b32012 | |||
c1ef2d2ba2
|
@@ -1,40 +0,0 @@
|
|||||||
name: process-repository
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: "@daily"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
process-repository:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout Python Script
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
repository: alexlebens/workflow-scripts
|
|
||||||
ref: main
|
|
||||||
token: ${{ secrets.BOT_TOKEN }}
|
|
||||||
path: workflow-scripts
|
|
||||||
|
|
||||||
- name: Set up Python
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: "3.13"
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: pip install requests immutabledict
|
|
||||||
|
|
||||||
- name: Run Script
|
|
||||||
env:
|
|
||||||
INSTANCE_URL: ${{ vars.INSTANCE_URL }}
|
|
||||||
OWNER: ${{ gitea.owner }}
|
|
||||||
REPOSITORY: ${{ gitea.repository }}
|
|
||||||
TOKEN: ${{ secrets.BOT_TOKEN }}
|
|
||||||
LOG_LEVEL: DEBUG
|
|
||||||
ISSUE_STALE_DAYS: 3
|
|
||||||
ISSUE_STALE_TAG: 23
|
|
||||||
ISSUE_EXCLUDE_TAG: 17
|
|
||||||
PULL_REQUEST_STALE_DAYS: 3
|
|
||||||
PULL_REQUEST_STALE_TAG: 23
|
|
||||||
PULL_REQUEST_REQUIRED_TAG: 22
|
|
||||||
run: python ./workflow-scripts/process-repository.py
|
|
@@ -3,7 +3,7 @@ name: release-image
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
tags:
|
tags:
|
||||||
- 0.*
|
- 1.*
|
||||||
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
|
@@ -24,7 +24,7 @@ jobs:
|
|||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 22.17.1
|
node-version: 22.18.0
|
||||||
cache: pnpm
|
cache: pnpm
|
||||||
|
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
ARG REGISTRY=docker.io
|
ARG REGISTRY=docker.io
|
||||||
FROM ${REGISTRY}/node:22.17.1-alpine3.22 AS base
|
FROM ${REGISTRY}/node:22.18.0-alpine3.22 AS base
|
||||||
|
|
||||||
LABEL version="0.12.0"
|
LABEL version="1.1.1"
|
||||||
LABEL description="Astro based personal website"
|
LABEL description="Astro based personal website"
|
||||||
|
|
||||||
ENV PNPM_HOME="/pnpm"
|
ENV PNPM_HOME="/pnpm"
|
||||||
|
@@ -23,6 +23,8 @@ export default defineConfig({
|
|||||||
plugins: [tailwindcss()],
|
plugins: [tailwindcss()],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
output: 'static',
|
||||||
|
|
||||||
adapter: node({
|
adapter: node({
|
||||||
mode: 'standalone',
|
mode: 'standalone',
|
||||||
}),
|
}),
|
||||||
|
14
package.json
14
package.json
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "site-profile",
|
"name": "site-profile",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "0.12.0",
|
"version": "1.1.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "astro dev",
|
"dev": "astro dev",
|
||||||
@@ -13,14 +13,14 @@
|
|||||||
"astro": "astro"
|
"astro": "astro"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@astrojs/mdx": "^4.3.0",
|
"@astrojs/mdx": "^4.3.3",
|
||||||
"@astrojs/node": "^9.2.2",
|
"@astrojs/node": "^9.3.3",
|
||||||
"@astrojs/react": "^4.3.0",
|
"@astrojs/react": "^4.3.0",
|
||||||
"@astrojs/rss": "^4.0.12",
|
"@astrojs/rss": "^4.0.12",
|
||||||
"@directus/sdk": "^20.0.0",
|
"@directus/sdk": "^20.0.0",
|
||||||
"@tailwindcss/postcss": "^4.1.8",
|
"@tailwindcss/postcss": "^4.1.8",
|
||||||
"@tailwindcss/vite": "^4.1.8",
|
"@tailwindcss/vite": "^4.1.8",
|
||||||
"astro": "^5.10.1",
|
"astro": "^5.12.8",
|
||||||
"framer-motion": "^12.16.0",
|
"framer-motion": "^12.16.0",
|
||||||
"react": "^19.1.0",
|
"react": "^19.1.0",
|
||||||
"react-dom": "^19.1.0",
|
"react-dom": "^19.1.0",
|
||||||
@@ -31,13 +31,13 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@tailwindcss/typography": "^0.5.16",
|
"@tailwindcss/typography": "^0.5.16",
|
||||||
"@typescript-eslint/parser": "8.37.0",
|
"@typescript-eslint/parser": "8.38.0",
|
||||||
"eslint": "9.31.0",
|
"eslint": "9.32.0",
|
||||||
"eslint-config-prettier": "10.1.8",
|
"eslint-config-prettier": "10.1.8",
|
||||||
"eslint-plugin-astro": "1.3.1",
|
"eslint-plugin-astro": "1.3.1",
|
||||||
"prettier": "^3.5.3",
|
"prettier": "^3.5.3",
|
||||||
"prettier-plugin-astro": "^0.14.1",
|
"prettier-plugin-astro": "^0.14.1",
|
||||||
"prettier-plugin-tailwindcss": "^0.6.12",
|
"prettier-plugin-tailwindcss": "^0.6.12",
|
||||||
"typescript-eslint": "8.37.0"
|
"typescript-eslint": "8.38.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
679
pnpm-lock.yaml
generated
679
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Before Width: | Height: | Size: 28 KiB |
1
public/favicon.svg
Normal file
1
public/favicon.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 9.9 KiB |
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
import directus from '../../lib/directus';
|
import directus from '../lib/directus';
|
||||||
import { readSingleton } from '@directus/sdk';
|
import { readSingleton } from '@directus/sdk';
|
||||||
|
|
||||||
const global = await directus.request(readSingleton('global'));
|
const global = await directus.request(readSingleton('global'));
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
import ThemeToggle from './ThemeToggle.astro';
|
import ThemeToggle from './ThemeToggle.astro';
|
||||||
|
|
||||||
import directus from '../../lib/directus';
|
import directus from '../lib/directus';
|
||||||
import { readSingleton } from '@directus/sdk';
|
import { readSingleton } from '@directus/sdk';
|
||||||
|
|
||||||
const global = await directus.request(readSingleton('global'));
|
const global = await directus.request(readSingleton('global'));
|
||||||
|
@@ -20,7 +20,7 @@ const { tags = [], class: className = '' } = Astro.props;
|
|||||||
))}
|
))}
|
||||||
{tags.length > 2 && (
|
{tags.length > 2 && (
|
||||||
<span class="inline-flex items-center rounded-full bg-zinc-50 px-2 py-0.5 text-xs text-zinc-500 dark:bg-zinc-900 dark:text-zinc-400">
|
<span class="inline-flex items-center rounded-full bg-zinc-50 px-2 py-0.5 text-xs text-zinc-500 dark:bg-zinc-900 dark:text-zinc-400">
|
||||||
+{tags.length - 3}
|
+{tags.length - 2}
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
import Layout from './Layout.astro';
|
import Layout from './Layout.astro';
|
||||||
|
|
||||||
import directus from '../../lib/directus';
|
import directus from '../lib/directus';
|
||||||
import { readSingleton } from '@directus/sdk';
|
import { readSingleton } from '@directus/sdk';
|
||||||
|
|
||||||
const global = await directus.request(readSingleton('global'));
|
const global = await directus.request(readSingleton('global'));
|
||||||
|
@@ -5,7 +5,7 @@ import ShareButtons from '../components/ShareButtons.astro';
|
|||||||
import TagList from '../components/TagList.astro';
|
import TagList from '../components/TagList.astro';
|
||||||
import './styles/markdown.css';
|
import './styles/markdown.css';
|
||||||
|
|
||||||
import directus from '../../lib/directus';
|
import directus from '../lib/directus';
|
||||||
import { readItems } from '@directus/sdk';
|
import { readItems } from '@directus/sdk';
|
||||||
|
|
||||||
export async function getStaticPaths() {
|
export async function getStaticPaths() {
|
||||||
@@ -40,7 +40,7 @@ try {
|
|||||||
<p
|
<p
|
||||||
class="mb-2 line-clamp-2 text-center text-sm text-zinc-600 sm:mb-3 sm:line-clamp-3 sm:text-left sm:text-base dark:text-zinc-400"
|
class="mb-2 line-clamp-2 text-center text-sm text-zinc-600 sm:mb-3 sm:line-clamp-3 sm:text-left sm:text-base dark:text-zinc-400"
|
||||||
>
|
>
|
||||||
{post.description}
|
<!-- {post.description} -->
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
|
@@ -20,7 +20,7 @@ const { title, description } = Astro.props;
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width" />
|
<meta name="viewport" content="width=device-width" />
|
||||||
<link rel="icon" type="image/svg+xml" href="/favicon.png" />
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||||
<meta name="generator" content={Astro.generator} />
|
<meta name="generator" content={Astro.generator} />
|
||||||
<meta name="description" content={description} />
|
<meta name="description" content={description} />
|
||||||
<title>{title}</title>
|
<title>{title}</title>
|
||||||
|
@@ -29,7 +29,7 @@ import Layout from '../layouts/Layout.astro';
|
|||||||
<div class="mt-10 flex flex-col items-center justify-center gap-4 sm:flex-row">
|
<div class="mt-10 flex flex-col items-center justify-center gap-4 sm:flex-row">
|
||||||
<a
|
<a
|
||||||
href="/"
|
href="/"
|
||||||
class="relative inline-flex items-center gap-2 overflow-hidden rounded-lg bg-zinc-900 px-6 py-3 text-zinc-100 shadow-lg transition-all duration-300 hover:bg-cyan-600 hover:text-zinc-100 hover:shadow-xl dark:bg-zinc-100 dark:text-zinc-900 dark:hover:bg-cyan-600"
|
class="relative inline-flex items-center gap-2 overflow-hidden rounded-lg bg-zinc-900 px-6 py-3 text-zinc-100 shadow-lg transition-all duration-300 hover:bg-bg-turquoise hover:text-zinc-100 hover:shadow-xl dark:bg-zinc-100 dark:text-zinc-900 dark:hover:bg-turquoise"
|
||||||
>
|
>
|
||||||
<svg
|
<svg
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
import BaseLayout from '../layouts/BaseLayout.astro';
|
import BaseLayout from '../layouts/BaseLayout.astro';
|
||||||
import DynamicIcon from '../utils/DynamicIcon.tsx';
|
import DynamicIcon from '../utils/DynamicIcon.tsx';
|
||||||
|
|
||||||
import directus from '../../lib/directus';
|
import directus from '../lib/directus';
|
||||||
import { readSingleton, readItems } from '@directus/sdk';
|
import { readSingleton, readItems } from '@directus/sdk';
|
||||||
|
|
||||||
const global = await directus.request(readSingleton('global'));
|
const global = await directus.request(readSingleton('global'));
|
||||||
@@ -177,7 +177,7 @@ const skills = await directus.request(
|
|||||||
></path>
|
></path>
|
||||||
</svg>
|
</svg>
|
||||||
<span class="relative inline-block overflow-hidden">
|
<span class="relative inline-block overflow-hidden">
|
||||||
<span class="relative z-10">Say Hello</span>
|
<span class="relative z-10">Send Email</span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -1,9 +1,11 @@
|
|||||||
---
|
---
|
||||||
import BlogPost from '../../layouts/BlogPost.astro';
|
import BlogPost from '../../layouts/BlogPost.astro';
|
||||||
|
|
||||||
import directus from '../../../lib/directus';
|
import directus from '../../lib/directus';
|
||||||
import { readItems } from '@directus/sdk';
|
import { readItems } from '@directus/sdk';
|
||||||
|
|
||||||
|
export const prerender = true;
|
||||||
|
|
||||||
export async function getStaticPaths() {
|
export async function getStaticPaths() {
|
||||||
const posts = await directus.request(
|
const posts = await directus.request(
|
||||||
readItems('posts', {
|
readItems('posts', {
|
||||||
|
@@ -3,7 +3,7 @@ import BaseLayout from '../../layouts/BaseLayout.astro';
|
|||||||
import FormattedDate from '../../components/FormattedDate.astro';
|
import FormattedDate from '../../components/FormattedDate.astro';
|
||||||
import TagList from '../../components/TagList.astro';
|
import TagList from '../../components/TagList.astro';
|
||||||
|
|
||||||
import directus from '../../../lib/directus';
|
import directus from '../../lib/directus';
|
||||||
import { readItems } from '@directus/sdk';
|
import { readItems } from '@directus/sdk';
|
||||||
|
|
||||||
const posts = await directus.request(
|
const posts = await directus.request(
|
||||||
@@ -37,7 +37,7 @@ const years = Object.keys(postsByYear).sort((a, b) => b - a);
|
|||||||
<p
|
<p
|
||||||
class="hero-text mx-auto mb-6 max-w-2xl text-sm text-zinc-600 sm:mb-10 sm:text-base dark:text-zinc-400"
|
class="hero-text mx-auto mb-6 max-w-2xl text-sm text-zinc-600 sm:mb-10 sm:text-base dark:text-zinc-400"
|
||||||
>
|
>
|
||||||
Thoughts, ideas, and explorations on technology and selfhosting.
|
A couple thoughts, a few ideas, and some guides on technology, development, and selfhosting.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -73,7 +73,7 @@ const years = Object.keys(postsByYear).sort((a, b) => b - a);
|
|||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<p class="mb-2 line-clamp-2 text-center text-sm text-zinc-600 sm:mb-3 sm:line-clamp-3 sm:text-left sm:text-base dark:text-zinc-400">
|
<p class="mb-2 line-clamp-2 text-center text-sm text-zinc-600 sm:mb-3 sm:line-clamp-3 sm:text-left sm:text-base dark:text-zinc-400">
|
||||||
{sortedPosts[0].description}
|
{/* {sortedPosts[0].description} */}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="mb-2 flex flex-wrap items-center justify-center gap-3 text-xs text-zinc-500 sm:mb-3 sm:justify-start sm:gap-4 sm:text-sm dark:text-zinc-400">
|
<div class="mb-2 flex flex-wrap items-center justify-center gap-3 text-xs text-zinc-500 sm:mb-3 sm:justify-start sm:gap-4 sm:text-sm dark:text-zinc-400">
|
||||||
@@ -195,7 +195,7 @@ const years = Object.keys(postsByYear).sort((a, b) => b - a);
|
|||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<p class="z-10 mb-4 line-clamp-2 grow text-center text-sm text-zinc-600 md:text-left dark:text-zinc-400">
|
<p class="z-10 mb-4 line-clamp-2 grow text-center text-sm text-zinc-600 md:text-left dark:text-zinc-400">
|
||||||
{post.description}
|
{/* {post.description} */}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="mb-2 flex flex-wrap items-center justify-center gap-3 text-xs text-zinc-500 sm:mb-3 sm:justify-start sm:gap-4 sm:text-sm dark:text-zinc-400">
|
<div class="mb-2 flex flex-wrap items-center justify-center gap-3 text-xs text-zinc-500 sm:mb-3 sm:justify-start sm:gap-4 sm:text-sm dark:text-zinc-400">
|
||||||
|
@@ -3,7 +3,7 @@ import Layout from '../layouts/Layout.astro';
|
|||||||
import FormattedDate from '../components/FormattedDate.astro';
|
import FormattedDate from '../components/FormattedDate.astro';
|
||||||
import TagList from '../components/TagList.astro';
|
import TagList from '../components/TagList.astro';
|
||||||
|
|
||||||
import directus from '../../lib/directus';
|
import directus from '../lib/directus';
|
||||||
import { readItems, readSingleton } from '@directus/sdk';
|
import { readItems, readSingleton } from '@directus/sdk';
|
||||||
|
|
||||||
const global = await directus.request(readSingleton('global'));
|
const global = await directus.request(readSingleton('global'));
|
||||||
@@ -141,7 +141,7 @@ const allTags = [...new Set(posts.flatMap((post) => post.tags || []))].slice(0,
|
|||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<p class="z-10 mb-2 line-clamp-2 text-center text-sm text-zinc-600 sm:mb-3 sm:line-clamp-3 sm:text-left sm:text-base dark:text-zinc-400">
|
<p class="z-10 mb-2 line-clamp-2 text-center text-sm text-zinc-600 sm:mb-3 sm:line-clamp-3 sm:text-left sm:text-base dark:text-zinc-400">
|
||||||
{post.description}
|
{/* {post.description} */}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="mb-2 flex flex-wrap items-center justify-center gap-3 text-xs text-zinc-500 sm:mb-3 sm:justify-start sm:gap-4 sm:text-sm dark:text-zinc-400">
|
<div class="mb-2 flex flex-wrap items-center justify-center gap-3 text-xs text-zinc-500 sm:mb-3 sm:justify-start sm:gap-4 sm:text-sm dark:text-zinc-400">
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import rss from '@astrojs/rss';
|
import rss from '@astrojs/rss';
|
||||||
|
|
||||||
import directus from '../../lib/directus';
|
import directus from '../lib/directus';
|
||||||
import { readItems, readSingleton } from '@directus/sdk';
|
import { readItems, readSingleton } from '@directus/sdk';
|
||||||
|
|
||||||
export async function GET(context: any) {
|
export async function GET(context: any) {
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
import BaseLayout from '../../layouts/BaseLayout.astro';
|
import BaseLayout from '../../layouts/BaseLayout.astro';
|
||||||
import FormattedDate from '../../components/FormattedDate.astro';
|
import FormattedDate from '../../components/FormattedDate.astro';
|
||||||
|
|
||||||
import directus from '../../../lib/directus';
|
import directus from '../../lib/directus';
|
||||||
import { readItems } from '@directus/sdk';
|
import { readItems } from '@directus/sdk';
|
||||||
|
|
||||||
export const prerender = true;
|
export const prerender = true;
|
Reference in New Issue
Block a user