Compare commits

..

30 Commits

Author SHA1 Message Date
71e2b0185b update tag
Some checks failed
test-build / build (push) Successful in 28s
release-image / release (push) Successful in 3m31s
process-repository / process-repository (push) Failing after 1m7s
renovate / renovate (push) Successful in 1m38s
2025-07-15 01:43:31 -05:00
7f9fb4d2b9 fix scrollbar affecting layout
Some checks failed
renovate / renovate (push) Successful in 29s
test-build / build (push) Has been cancelled
2025-07-15 01:39:40 -05:00
8420c8dd58 fix tech stack slider 2025-07-15 01:37:23 -05:00
fa6ed18edb fix dark mode 2025-07-14 23:18:38 -05:00
30860fce1e change paths
All checks were successful
renovate / renovate (push) Successful in 21s
test-build / build (push) Successful in 30s
2025-07-14 22:31:12 -05:00
b479e0e22c use single workflow script
Some checks failed
process-repository / process-repository (push) Failing after 17s
renovate / renovate (push) Successful in 39s
test-build / build (push) Successful in 41s
2025-07-13 23:43:58 -05:00
cf01ebcd3c Merge pull request 'Update dependency eslint to v9.31.0' (#35) from renovate/eslint-monorepo into main
All checks were successful
test-build / build (push) Successful in 35s
renovate / renovate (push) Successful in 34s
process-pull-requests / process-pull-requests (push) Successful in 10s
process-issues / process-issues (push) Successful in 13s
Reviewed-on: #35
2025-07-13 03:33:05 +00:00
df8ccf81c2 Update dependency eslint to v9.31.0
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 38s
2025-07-13 00:01:03 +00:00
073911c1b9 use tag ids
Some checks failed
process-pull-requests / process-pull-requests (push) Failing after 11s
process-issues / process-issues (push) Failing after 10s
renovate / renovate (push) Successful in 58s
test-build / build (push) Successful in 31s
2025-07-11 21:47:20 -05:00
3eeea3dd8f use tag ids
All checks were successful
renovate / renovate (push) Successful in 20s
test-build / build (push) Successful in 23s
2025-07-11 21:36:40 -05:00
43fea76778 Update dependency framer-motion to v12.23.3
All checks were successful
test-build / build (pull_request) Successful in 36s
renovate / renovate (push) Successful in 32s
test-build / build (push) Successful in 41s
renovate/stability-days Updates have met minimum release age requirement
2025-07-12 00:01:43 +00:00
d64df6473a Update dependency prettier-plugin-tailwindcss to v0.6.14
Some checks failed
test-build / build (push) Successful in 32s
process-pull-requests / process-pull-requests (push) Successful in 15s
process-issues / process-issues (push) Failing after 9s
renovate / renovate (push) Successful in 1m7s
2025-07-10 20:59:07 +00:00
63a6a00817 Update dependency framer-motion to v12.23.1
Some checks failed
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 48s
test-build / build (push) Has been cancelled
renovate / renovate (push) Has been cancelled
2025-07-10 20:57:58 +00:00
54759056b3 update version
All checks were successful
renovate / renovate (push) Successful in 1m21s
test-build / build (push) Successful in 33s
release-image / release (push) Successful in 4m15s
2025-07-10 15:57:02 -05:00
3cc9762e0d Merge pull request 'Update typescript-eslint monorepo to v8.36.0' (#31) from renovate/typescript-eslint-monorepo into main
All checks were successful
renovate / renovate (push) Successful in 26s
test-build / build (push) Successful in 45s
Reviewed-on: #31
2025-07-10 03:28:27 +00:00
ef757c4a14 Update typescript-eslint monorepo to v8.36.0
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 29s
2025-07-09 00:02:57 +00:00
176f92bf67 Merge pull request 'Update dependency framer-motion to v12.23.0' (#27) from renovate/framer-motion-12.x-lockfile into main
Some checks failed
test-build / build (push) Successful in 34s
process-pull-requests / process-pull-requests (push) Successful in 8s
process-issues / process-issues (push) Failing after 13s
renovate / renovate (push) Successful in 42s
Reviewed-on: #27
2025-07-05 04:54:21 +00:00
09d411dd68 Merge pull request 'Update astro monorepo' (#30) from renovate/astro-monorepo into main
Some checks failed
renovate / renovate (push) Has been cancelled
test-build / build (push) Has been cancelled
Reviewed-on: #30
2025-07-05 04:54:14 +00:00
54acfcb24d Update astro monorepo
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 43s
2025-07-05 00:01:04 +00:00
6f3b631862 Update dependency framer-motion to v12.23.0
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 1m20s
2025-07-04 00:02:50 +00:00
18cd240a9b Update dependency astro to v5.10.2
Some checks failed
test-build / build (push) Successful in 29s
process-issues / process-issues (push) Failing after 14s
process-pull-requests / process-pull-requests (push) Successful in 15s
renovate / renovate (push) Successful in 1m31s
2025-07-03 00:02:59 +00:00
bb4fe8ef37 Update dependency eslint to v9.30.1
Some checks failed
renovate/stability-days Updates have met minimum release age requirement
renovate / renovate (push) Has been cancelled
test-build / build (pull_request) Successful in 30s
test-build / build (push) Has been cancelled
2025-07-03 00:02:05 +00:00
e0e3c1f61a Update typescript-eslint monorepo to v8.35.1
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (push) Successful in 48s
test-build / build (pull_request) Successful in 56s
renovate / renovate (push) Successful in 1m7s
2025-07-02 00:01:05 +00:00
0b5c6ae999 update astro
Some checks failed
test-build / build (push) Successful in 38s
process-pull-requests / process-pull-requests (push) Failing after 10s
process-issues / process-issues (push) Failing after 10s
renovate / renovate (push) Successful in 2m14s
2025-06-28 16:41:12 -05:00
a20ba4ab43 Merge pull request 'Update dependency eslint to v9.30.0' (#25) from renovate/eslint-monorepo into main
All checks were successful
renovate / renovate (push) Successful in 22s
test-build / build (push) Successful in 25s
Reviewed-on: #25
2025-06-28 21:37:27 +00:00
550e7dfe52 Merge pull request 'Update dependency @directus/sdk to v20' (#21) from renovate/directus-sdk-20.x into main
Some checks failed
renovate / renovate (push) Has been cancelled
test-build / build (push) Has been cancelled
Reviewed-on: #21
2025-06-28 21:37:21 +00:00
03174cfb9d Update dependency @directus/sdk to v20
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 31s
2025-06-28 21:36:32 +00:00
da50c1928c Update dependency eslint to v9.30.0
All checks were successful
renovate/stability-days Updates have met minimum release age requirement
test-build / build (pull_request) Successful in 31s
2025-06-28 21:36:25 +00:00
f1d1fe979e change confi
All checks were successful
test-build / build (push) Successful in 26s
renovate / renovate (push) Successful in 1m0s
2025-06-28 16:35:35 -05:00
4d6019d0b0 update node
All checks were successful
test-build / build (push) Successful in 42s
renovate / renovate (push) Successful in 1m7s
2025-06-28 16:33:16 -05:00
12 changed files with 440 additions and 410 deletions

View File

@@ -1,35 +0,0 @@
name: process-pull-requests
on:
schedule:
- cron: '@daily'
jobs:
process-pull-requests:
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: scripts
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install dependencies
run: pip install requests
- name: Run Script
env:
INSTANCE_URL: ${{ vars.INSTANCE_URL }}
REPOSITORY: ${{ gitea.repository }}
TOKEN: ${{ secrets.BOT_TOKEN }}
STALE_DAYS: 3
STALE_TAG: 'stale'
REQUIRED_TAG: 'automerge'
run: python ./scripts/scripts/process-pull-requests.py

View File

@@ -1,11 +1,11 @@
name: process-issues name: process-repository
on: on:
schedule: schedule:
- cron: '@daily' - cron: "@daily"
jobs: jobs:
process-issues: process-repository:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Python Script - name: Checkout Python Script
@@ -14,22 +14,27 @@ jobs:
repository: alexlebens/workflow-scripts repository: alexlebens/workflow-scripts
ref: main ref: main
token: ${{ secrets.BOT_TOKEN }} token: ${{ secrets.BOT_TOKEN }}
path: scripts path: workflow-scripts
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v5 uses: actions/setup-python@v5
with: with:
python-version: '3.13' python-version: "3.13"
- name: Install dependencies - name: Install dependencies
run: pip install requests run: pip install requests immutabledict
- name: Run Script - name: Run Script
env: env:
INSTANCE_URL: ${{ vars.INSTANCE_URL }} INSTANCE_URL: ${{ vars.INSTANCE_URL }}
OWNER: ${{ gitea.owner }}
REPOSITORY: ${{ gitea.repository }} REPOSITORY: ${{ gitea.repository }}
TOKEN: ${{ secrets.BOT_TOKEN }} TOKEN: ${{ secrets.BOT_TOKEN }}
STALE_DAYS: 3 LOG_LEVEL: DEBUG
STALE_TAG: 'stale' ISSUE_STALE_DAYS: 3
EXCLUDE_TAG: 'renovate' ISSUE_STALE_TAG: 23
run: python ./scripts/scripts/process-issues.py 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

View File

@@ -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.16.x node-version: 22.17.x
cache: pnpm cache: pnpm
- name: Install Dependencies - name: Install Dependencies

View File

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

View File

@@ -2,6 +2,8 @@
Copyright (c) 2025 Lê Vĩnh Khang Copyright (c) 2025 Lê Vĩnh Khang
Copyright (c) 2025 Alex Lebens
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights in the Software without restriction, including without limitation the rights

View File

@@ -1,7 +1,7 @@
{ {
"name": "site-profile", "name": "site-profile",
"type": "module", "type": "module",
"version": "0.8.12", "version": "0.9.0",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "astro dev", "dev": "astro dev",
@@ -20,7 +20,7 @@
"@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.0", "astro": "^5.10.1",
"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.35.0", "@typescript-eslint/parser": "8.36.0",
"eslint": "9.29.0", "eslint": "9.31.0",
"eslint-config-prettier": "10.1.5", "eslint-config-prettier": "10.1.5",
"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.35.0" "typescript-eslint": "8.36.0"
} }
} }

717
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -16,7 +16,7 @@
"npm" "npm"
], ],
"addLabels": [ "addLabels": [
"automerge" "dependency"
], ],
"automerge": false, "automerge": false,
"minimumReleaseAge": "1 days" "minimumReleaseAge": "1 days"

View File

@@ -0,0 +1,38 @@
import React from 'react';
import * as FaIcons from 'react-icons/fa';
import * as MdIcons from 'react-icons/md';
import * as AiIcons from 'react-icons/ai';
import * as GiIcons from 'react-icons/gi';
import * as IoIcons from 'react-icons/io';
import * as CiIcons from "react-icons/ci";
import * as FiIcons from "react-icons/fi";
import * as LuIcons from "react-icons/lu";
import * as SiIcons from 'react-icons/si';
const iconSets = {
fa: FaIcons,
md: MdIcons,
ai: AiIcons,
gi: GiIcons,
io: IoIcons,
ci: CiIcons,
fi: FiIcons,
lu: LuIcons,
si: SiIcons,
};
const DynamicIcon = ({ name, set = 'fa', size = 20, color = 'currentColor', className = '' }: {name: string, set: string, size: number, color: string, className: string }) => {
let IconComponent = FaIcons.FaAlignCenter;
if (name.startsWith("Fa")) {
IconComponent = iconSets["fa"][name]
} else if (name.startsWith("Si")) {
IconComponent = iconSets["si"][name]
} else {
IconComponent = iconSets[set][name];
}
return <IconComponent size={size} color={color} className={className} />;
};
export default DynamicIcon;

View File

@@ -1,7 +1,6 @@
--- ---
import BaseLayout from '../layouts/BaseLayout.astro'; import BaseLayout from '../layouts/BaseLayout.astro';
import { FaJs, FaReact, FaNodeJs, FaPython } from 'react-icons/fa'; import DynamicIcon from '../components/DynamicIcon.tsx';
import { SiTypescript, SiAstro } from 'react-icons/si';
import directus from '../../lib/directus'; import directus from '../../lib/directus';
import { readSingleton, readItems } from '@directus/sdk'; import { readSingleton, readItems } from '@directus/sdk';
@@ -107,7 +106,7 @@ const skills = await directus.request(
</div> </div>
</div> </div>
<!-- Skills Section --> <!-- Skills Section - Improved for mobile -->
<div class="theme-transition-all mb-16 sm:mb-20 md:mb-24"> <div class="theme-transition-all mb-16 sm:mb-20 md:mb-24">
<h2 <h2
class="theme-transition-color mb-8 text-center text-2xl font-bold text-zinc-900 sm:mb-12 sm:text-3xl dark:text-zinc-100" class="theme-transition-color mb-8 text-center text-2xl font-bold text-zinc-900 sm:mb-12 sm:text-3xl dark:text-zinc-100"
@@ -119,13 +118,13 @@ const skills = await directus.request(
<!-- Main slider container --> <!-- Main slider container -->
<div class="slider-track animate-slide flex"> <div class="slider-track animate-slide flex">
{ {
skills.map((skill, index) => ( [...skills, ...skills, ...skills].map((skill) => (
<div class="skill-card theme-transition-element mx-2 min-w-[220px] transform rounded-xl border border-zinc-200 bg-white transition-all duration-300 hover:-translate-y-2 hover:scale-105 hover:border-zinc-300 hover:shadow-xl sm:mx-4 sm:min-w-[280px] dark:border-zinc-700 dark:bg-zinc-800/50 dark:hover:border-zinc-600"> <div class="skill-card theme-transition-element mx-2 min-w-[220px] transform rounded-xl border border-zinc-200 bg-white transition-all duration-300 hover:-translate-y-2 hover:scale-105 hover:border-zinc-300 hover:shadow-xl sm:mx-4 sm:min-w-[280px] dark:border-zinc-700 dark:bg-zinc-800/50 dark:hover:border-zinc-600">
<div class="p-4 sm:p-6"> <div class="p-4 sm:p-6">
<div class="mb-4 flex items-center justify-between sm:mb-6"> <div class="mb-4 flex items-center justify-between sm:mb-6">
<div class="flex items-center gap-2 sm:gap-4"> <div class="flex items-center gap-2 sm:gap-4">
<div class="theme-transition-bg theme-transition-color flex h-8 w-8 transform items-center justify-center rounded-lg bg-zinc-100 text-zinc-800 transition-transform group-hover:rotate-12 sm:h-12 sm:w-12 dark:bg-zinc-800 dark:text-zinc-200"> <div class="theme-transition-bg theme-transition-color flex h-8 w-8 transform items-center justify-center rounded-lg bg-zinc-100 text-zinc-800 transition-transform group-hover:rotate-12 sm:h-12 sm:w-12 dark:bg-zinc-800 dark:text-zinc-200">
<skill.icon /> <DynamicIcon name={skill.icon} />
</div> </div>
<h3 class="theme-transition-color text-base font-semibold text-zinc-900 sm:text-xl dark:text-zinc-100"> <h3 class="theme-transition-color text-base font-semibold text-zinc-900 sm:text-xl dark:text-zinc-100">
{skill.title} {skill.title}

View File

@@ -1,6 +1,10 @@
/* Remove all the complex mobile menu styles and keep only what's necessary */ /* Remove all the complex mobile menu styles and keep only what's necessary */
@import 'tailwindcss'; @import 'tailwindcss';
/* Dark mode support for Tailwind CSS v4 */
/* https://tailwindcss.com/docs/dark-mode */
@custom-variant dark (&:where(.dark, .dark *));
@layer base { @layer base {
:root { :root {
font-family: 'Inter', sans-serif; font-family: 'Inter', sans-serif;
@@ -12,6 +16,7 @@
html { html {
scroll-behavior: smooth; scroll-behavior: smooth;
scroll-padding-top: 5rem; scroll-padding-top: 5rem;
overflow-y: scroll;
} }
body { body {

View File

@@ -3,6 +3,7 @@
"compilerOptions": { "compilerOptions": {
"lib": ["dom", "dom.iterable", "esnext"], "lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true, "allowJs": true,
"allowImportingTsExtensions": true,
"target": "ES6", "target": "ES6",
"skipLibCheck": true, "skipLibCheck": true,
"strict": true, "strict": true,