From 78b0780e12ed9c17023a28c9a449c9aa047e8f67 Mon Sep 17 00:00:00 2001 From: Troy Date: Mon, 7 Apr 2025 14:38:37 +0100 Subject: [PATCH] make cv a markdown page --- package-lock.json | 200 +++++------ package.json | 12 +- src/components/CvProjects.astro | 91 +++++ .../Still2025-04-07111623_1.1.1.avif | Bin 0 -> 6830 bytes .../Still2025-04-07111623_1.1.2.avif | Bin 0 -> 20419 bytes .../Still2025-04-07111623_1.1.3.avif | Bin 0 -> 9641 bytes .../Still2025-04-07111623_1.1.4.avif | Bin 0 -> 6810 bytes .../Still2025-04-07111623_1.1.6.avif | Bin 0 -> 9185 bytes .../projects/must-find-beans/index.mdx | 40 ++- src/layouts/Cv.astro | 88 +++++ src/pages/404.astro | 14 +- src/pages/cv.astro | 332 ------------------ src/pages/cv.mdx | 62 ++++ 13 files changed, 375 insertions(+), 464 deletions(-) create mode 100644 src/components/CvProjects.astro create mode 100644 src/content/projects/must-find-beans/Still2025-04-07111623_1.1.1.avif create mode 100644 src/content/projects/must-find-beans/Still2025-04-07111623_1.1.2.avif create mode 100644 src/content/projects/must-find-beans/Still2025-04-07111623_1.1.3.avif create mode 100644 src/content/projects/must-find-beans/Still2025-04-07111623_1.1.4.avif create mode 100644 src/content/projects/must-find-beans/Still2025-04-07111623_1.1.6.avif create mode 100644 src/layouts/Cv.astro delete mode 100644 src/pages/cv.astro create mode 100644 src/pages/cv.mdx diff --git a/package-lock.json b/package-lock.json index e0d9ea5..c787ce8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,22 +9,22 @@ "version": "0.0.1", "dependencies": { "@astrojs/check": "0.9.4", - "@astrojs/mdx": "^4.2.2", + "@astrojs/mdx": "^4.2.3", "@astrojs/rss": "^4.0.11", "@astrojs/sitemap": "3.3.0", "@fontsource-variable/outfit": "^5.2.5", "@fontsource-variable/red-hat-mono": "^5.2.5", - "@tailwindcss/vite": "^4.0.17", - "astro": "^5.5.5", + "@tailwindcss/vite": "^4.1.3", + "astro": "^5.6.1", "astro-icon": "^1.1.5", "rehype-external-links": "^3.0.0", - "tailwindcss": "^4.0.17", - "typescript": "^5.8.2" + "tailwindcss": "^4.1.3", + "typescript": "^5.8.3" }, "devDependencies": { "@iconify-json/mdi": "^1.2.3", "@tailwindcss/typography": "^0.5.16", - "@types/node": "^22.13.13", + "@types/node": "^22.14.0", "npm-check-updates": "^17.1.16", "prettier": "^3.5.3", "prettier-plugin-astro": "^0.14.1", @@ -154,9 +154,9 @@ } }, "node_modules/@astrojs/mdx": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.2.2.tgz", - "integrity": "sha512-nWDvuCPenxoxbog3YK3yVWF3Jw7Lq1+ziWSAOc9fy6zAUbPDSr2bt3c6r6+oa1ll0miCQByj5UVts6eJvN/y+g==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.2.3.tgz", + "integrity": "sha512-oteB88udzzZmix5kWWUMeMJfeB2Dj8g7jy9LVNuTzGlBh3mEkGhQr6FsIR43p0JKCN11fl5J7P/Ev4Q0Nf0KQQ==", "license": "MIT", "dependencies": { "@astrojs/markdown-remark": "6.3.1", @@ -1624,42 +1624,43 @@ "license": "MIT" }, "node_modules/@tailwindcss/node": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.17.tgz", - "integrity": "sha512-LIdNwcqyY7578VpofXyqjH6f+3fP4nrz7FBLki5HpzqjYfXdF2m/eW18ZfoKePtDGg90Bvvfpov9d2gy5XVCbg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.3.tgz", + "integrity": "sha512-H/6r6IPFJkCfBJZ2dKZiPJ7Ueb2wbL592+9bQEl2r73qbX6yGnmQVIfiUvDRB2YI0a3PWDrzUwkvQx1XW1bNkA==", "license": "MIT", "dependencies": { "enhanced-resolve": "^5.18.1", "jiti": "^2.4.2", - "tailwindcss": "4.0.17" + "lightningcss": "1.29.2", + "tailwindcss": "4.1.3" } }, "node_modules/@tailwindcss/oxide": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.17.tgz", - "integrity": "sha512-B4OaUIRD2uVrULpAD1Yksx2+wNarQr2rQh65nXqaqbLY1jCd8fO+3KLh/+TH4Hzh2NTHQvgxVbPdUDOtLk7vAw==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.3.tgz", + "integrity": "sha512-t16lpHCU7LBxDe/8dCj9ntyNpXaSTAgxWm1u2XQP5NiIu4KGSyrDJJRlK9hJ4U9yJxx0UKCVI67MJWFNll5mOQ==", "license": "MIT", "engines": { "node": ">= 10" }, "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.0.17", - "@tailwindcss/oxide-darwin-arm64": "4.0.17", - "@tailwindcss/oxide-darwin-x64": "4.0.17", - "@tailwindcss/oxide-freebsd-x64": "4.0.17", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.17", - "@tailwindcss/oxide-linux-arm64-gnu": "4.0.17", - "@tailwindcss/oxide-linux-arm64-musl": "4.0.17", - "@tailwindcss/oxide-linux-x64-gnu": "4.0.17", - "@tailwindcss/oxide-linux-x64-musl": "4.0.17", - "@tailwindcss/oxide-win32-arm64-msvc": "4.0.17", - "@tailwindcss/oxide-win32-x64-msvc": "4.0.17" + "@tailwindcss/oxide-android-arm64": "4.1.3", + "@tailwindcss/oxide-darwin-arm64": "4.1.3", + "@tailwindcss/oxide-darwin-x64": "4.1.3", + "@tailwindcss/oxide-freebsd-x64": "4.1.3", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.3", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.3", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.3", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.3", + "@tailwindcss/oxide-linux-x64-musl": "4.1.3", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.3", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.3" } }, "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.17.tgz", - "integrity": "sha512-3RfO0ZK64WAhop+EbHeyxGThyDr/fYhxPzDbEQjD2+v7ZhKTb2svTWy+KK+J1PHATus2/CQGAGp7pHY/8M8ugg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.3.tgz", + "integrity": "sha512-cxklKjtNLwFl3mDYw4XpEfBY+G8ssSg9ADL4Wm6//5woi3XGqlxFsnV5Zb6v07dxw1NvEX2uoqsxO/zWQsgR+g==", "cpu": [ "arm64" ], @@ -1673,9 +1674,9 @@ } }, "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.17.tgz", - "integrity": "sha512-e1uayxFQCCDuzTk9s8q7MC5jFN42IY7nzcr5n0Mw/AcUHwD6JaBkXnATkD924ZsHyPDvddnusIEvkgLd2CiREg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.3.tgz", + "integrity": "sha512-mqkf2tLR5VCrjBvuRDwzKNShRu99gCAVMkVsaEOFvv6cCjlEKXRecPu9DEnxp6STk5z+Vlbh1M5zY3nQCXMXhw==", "cpu": [ "arm64" ], @@ -1689,9 +1690,9 @@ } }, "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.17.tgz", - "integrity": "sha512-d6z7HSdOKfXQ0HPlVx1jduUf/YtBuCCtEDIEFeBCzgRRtDsUuRtofPqxIVaSCUTOk5+OfRLonje6n9dF6AH8wQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.3.tgz", + "integrity": "sha512-7sGraGaWzXvCLyxrc7d+CCpUN3fYnkkcso3rCzwUmo/LteAl2ZGCDlGvDD8Y/1D3ngxT8KgDj1DSwOnNewKhmg==", "cpu": [ "x64" ], @@ -1705,9 +1706,9 @@ } }, "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.17.tgz", - "integrity": "sha512-EjrVa6lx3wzXz3l5MsdOGtYIsRjgs5Mru6lDv4RuiXpguWeOb3UzGJ7vw7PEzcFadKNvNslEQqoAABeMezprxQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.3.tgz", + "integrity": "sha512-E2+PbcbzIReaAYZe997wb9rId246yDkCwAakllAWSGqe6VTg9hHle67hfH6ExjpV2LSK/siRzBUs5wVff3RW9w==", "cpu": [ "x64" ], @@ -1721,9 +1722,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.17.tgz", - "integrity": "sha512-65zXfCOdi8wuaY0Ye6qMR5LAXokHYtrGvo9t/NmxvSZtCCitXV/gzJ/WP5ksXPhff1SV5rov0S+ZIZU+/4eyCQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.3.tgz", + "integrity": "sha512-GvfbJ8wjSSjbLFFE3UYz4Eh8i4L6GiEYqCtA8j2Zd2oXriPuom/Ah/64pg/szWycQpzRnbDiJozoxFU2oJZyfg==", "cpu": [ "arm" ], @@ -1737,9 +1738,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.17.tgz", - "integrity": "sha512-+aaq6hJ8ioTdbJV5IA1WjWgLmun4T7eYLTvJIToiXLHy5JzUERRbIZjAcjgK9qXMwnvuu7rqpxzej+hGoEcG5g==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.3.tgz", + "integrity": "sha512-35UkuCWQTeG9BHcBQXndDOrpsnt3Pj9NVIB4CgNiKmpG8GnCNXeMczkUpOoqcOhO6Cc/mM2W7kaQ/MTEENDDXg==", "cpu": [ "arm64" ], @@ -1753,9 +1754,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.17.tgz", - "integrity": "sha512-/FhWgZCdUGAeYHYnZKekiOC0aXFiBIoNCA0bwzkICiMYS5Rtx2KxFfMUXQVnl4uZRblG5ypt5vpPhVaXgGk80w==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.3.tgz", + "integrity": "sha512-dm18aQiML5QCj9DQo7wMbt1Z2tl3Giht54uVR87a84X8qRtuXxUqnKQkRDK5B4bCOmcZ580lF9YcoMkbDYTXHQ==", "cpu": [ "arm64" ], @@ -1769,9 +1770,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.17.tgz", - "integrity": "sha512-gELJzOHK6GDoIpm/539Golvk+QWZjxQcbkKq9eB2kzNkOvrP0xc5UPgO9bIMNt1M48mO8ZeNenCMGt6tfkvVBg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.3.tgz", + "integrity": "sha512-LMdTmGe/NPtGOaOfV2HuO7w07jI3cflPrVq5CXl+2O93DCewADK0uW1ORNAcfu2YxDUS035eY2W38TxrsqngxA==", "cpu": [ "x64" ], @@ -1785,9 +1786,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.17.tgz", - "integrity": "sha512-68NwxcJrZn94IOW4TysMIbYv5AlM6So1luTlbYUDIGnKma1yTFGBRNEJ+SacJ3PZE2rgcTBNRHX1TB4EQ/XEHw==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.3.tgz", + "integrity": "sha512-aalNWwIi54bbFEizwl1/XpmdDrOaCjRFQRgtbv9slWjmNPuJJTIKPHf5/XXDARc9CneW9FkSTqTbyvNecYAEGw==", "cpu": [ "x64" ], @@ -1801,9 +1802,9 @@ } }, "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.17.tgz", - "integrity": "sha512-AkBO8efP2/7wkEXkNlXzRD4f/7WerqKHlc6PWb5v0jGbbm22DFBLbIM19IJQ3b+tNewQZa+WnPOaGm0SmwMNjw==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.3.tgz", + "integrity": "sha512-PEj7XR4OGTGoboTIAdXicKuWl4EQIjKHKuR+bFy9oYN7CFZo0eu74+70O4XuERX4yjqVZGAkCdglBODlgqcCXg==", "cpu": [ "arm64" ], @@ -1817,9 +1818,9 @@ } }, "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.17.tgz", - "integrity": "sha512-7/DTEvXcoWlqX0dAlcN0zlmcEu9xSermuo7VNGX9tJ3nYMdo735SHvbrHDln1+LYfF6NhJ3hjbpbjkMOAGmkDg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.3.tgz", + "integrity": "sha512-T8gfxECWDBENotpw3HR9SmNiHC9AOJdxs+woasRZ8Q/J4VHN0OMs7F+4yVNZ9EVN26Wv6mZbK0jv7eHYuLJLwA==", "cpu": [ "x64" ], @@ -1849,15 +1850,14 @@ } }, "node_modules/@tailwindcss/vite": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.0.17.tgz", - "integrity": "sha512-HJbBYDlDVg5cvYZzECb6xwc1IDCEM3uJi3hEZp3BjZGCNGJcTsnCpan+z+VMW0zo6gR0U6O6ElqU1OoZ74Dhww==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.3.tgz", + "integrity": "sha512-lUI/QaDxLtlV52Lho6pu07CG9pSnRYLOPmKGIQjyHdTBagemc6HmgZxyjGAQ/5HMPrNeWBfTVIpQl0/jLXvWHQ==", "license": "MIT", "dependencies": { - "@tailwindcss/node": "4.0.17", - "@tailwindcss/oxide": "4.0.17", - "lightningcss": "1.29.2", - "tailwindcss": "4.0.17" + "@tailwindcss/node": "4.1.3", + "@tailwindcss/oxide": "4.1.3", + "tailwindcss": "4.1.3" }, "peerDependencies": { "vite": "^5.2.0 || ^6" @@ -1945,12 +1945,12 @@ } }, "node_modules/@types/node": { - "version": "22.13.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.13.tgz", - "integrity": "sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ==", + "version": "22.14.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz", + "integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==", "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~6.21.0" } }, "node_modules/@types/sax": { @@ -2261,9 +2261,9 @@ } }, "node_modules/astro": { - "version": "5.5.5", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.5.5.tgz", - "integrity": "sha512-fdnnK5dhWNIQT/cXzvaGs9il4T5noi4jafobdntbuNOrRxI1JnOxDfrtBadUo6cknCRCFhYrXh4VndCqj1a4Sg==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.6.1.tgz", + "integrity": "sha512-aQ2TV7wIf+q2Oi6gGWMINHWEAZqoP0eH6/mihodfTJYATPWyd03JIGVfjtYUJlkNdNSKxDXwEe/r/Zx4CZ1FPg==", "license": "MIT", "dependencies": { "@astrojs/compiler": "^2.11.0", @@ -2302,26 +2302,26 @@ "neotraverse": "^0.6.18", "p-limit": "^6.2.0", "p-queue": "^8.1.0", - "package-manager-detector": "^1.0.0", + "package-manager-detector": "^1.1.0", "picomatch": "^4.0.2", "prompts": "^2.4.2", "rehype": "^13.0.2", "semver": "^7.7.1", - "shiki": "^3.0.0", + "shiki": "^3.2.1", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.12", "tsconfck": "^3.1.5", - "ultrahtml": "^1.5.3", + "ultrahtml": "^1.6.0", "unist-util-visit": "^5.0.0", "unstorage": "^1.15.0", "vfile": "^6.0.3", - "vite": "^6.2.3", + "vite": "^6.2.4", "vitefu": "^1.0.6", "xxhash-wasm": "^1.1.0", "yargs-parser": "^21.1.1", "yocto-spinner": "^0.2.1", "zod": "^3.24.2", - "zod-to-json-schema": "^3.24.3", + "zod-to-json-schema": "^3.24.5", "zod-to-ts": "^1.2.0" }, "bin": { @@ -2352,9 +2352,9 @@ } }, "node_modules/astro/node_modules/package-manager-detector": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.0.0.tgz", - "integrity": "sha512-7elnH+9zMsRo7aS72w6MeRugTpdRvInmEB4Kmm9BVvPw/SLG8gXUGQ+4wF0Mys0RSWPz0B9nuBbDe8vFeA2sfg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.1.0.tgz", + "integrity": "sha512-Y8f9qUlBzW8qauJjd/eu6jlpJZsuPJm2ZAV0cDVd420o4EdpH5RPdoCv+60/TdJflGatr4sDfpAL6ArWZbM5tA==", "license": "MIT" }, "node_modules/asynckit": { @@ -7163,9 +7163,9 @@ } }, "node_modules/tailwindcss": { - "version": "4.0.17", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.17.tgz", - "integrity": "sha512-OErSiGzRa6rLiOvaipsDZvLMSpsBZ4ysB4f0VKGXUrjw2jfkJRd6kjRKV2+ZmTCNvwtvgdDam5D7w6WXsdLJZw==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.3.tgz", + "integrity": "sha512-2Q+rw9vy1WFXu5cIxlvsabCwhU2qUwodGq03ODhLJ0jW4ek5BUtoCsnLB0qG+m8AHgEsSJcJGDSDe06FXlP74g==", "license": "MIT" }, "node_modules/tapable": { @@ -7303,9 +7303,9 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -7331,9 +7331,9 @@ "license": "MIT" }, "node_modules/ultrahtml": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.5.3.tgz", - "integrity": "sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.6.0.tgz", + "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==", "license": "MIT" }, "node_modules/uncrypto": { @@ -7352,9 +7352,9 @@ } }, "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "license": "MIT" }, "node_modules/unified": { @@ -7654,9 +7654,9 @@ } }, "node_modules/vite": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.3.tgz", - "integrity": "sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==", + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.4.tgz", + "integrity": "sha512-veHMSew8CcRzhL5o8ONjy8gkfmFJAd5Ac16oxBUjlwgX3Gq2Wqr+qNC3TjPIpy7TPV/KporLga5GT9HqdrCizw==", "license": "MIT", "dependencies": { "esbuild": "^0.25.0", @@ -8309,9 +8309,9 @@ } }, "node_modules/zod-to-json-schema": { - "version": "3.24.3", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.3.tgz", - "integrity": "sha512-HIAfWdYIt1sssHfYZFCXp4rU1w2r8hVVXYIlmoa0r0gABLs5di3RCqPU5DDROogVz1pAdYBaz7HK5n9pSUNs3A==", + "version": "3.24.5", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz", + "integrity": "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==", "license": "ISC", "peerDependencies": { "zod": "^3.24.1" diff --git a/package.json b/package.json index 02228ca..3f9bbb6 100644 --- a/package.json +++ b/package.json @@ -13,22 +13,22 @@ }, "dependencies": { "@astrojs/check": "0.9.4", - "@astrojs/mdx": "^4.2.2", + "@astrojs/mdx": "^4.2.3", "@astrojs/rss": "^4.0.11", "@astrojs/sitemap": "3.3.0", "@fontsource-variable/outfit": "^5.2.5", "@fontsource-variable/red-hat-mono": "^5.2.5", - "@tailwindcss/vite": "^4.0.17", - "astro": "^5.5.5", + "@tailwindcss/vite": "^4.1.3", + "astro": "^5.6.1", "astro-icon": "^1.1.5", "rehype-external-links": "^3.0.0", - "tailwindcss": "^4.0.17", - "typescript": "^5.8.2" + "tailwindcss": "^4.1.3", + "typescript": "^5.8.3" }, "devDependencies": { "@iconify-json/mdi": "^1.2.3", "@tailwindcss/typography": "^0.5.16", - "@types/node": "^22.13.13", + "@types/node": "^22.14.0", "npm-check-updates": "^17.1.16", "prettier": "^3.5.3", "prettier-plugin-astro": "^0.14.1", diff --git a/src/components/CvProjects.astro b/src/components/CvProjects.astro new file mode 100644 index 0000000..880633e --- /dev/null +++ b/src/components/CvProjects.astro @@ -0,0 +1,91 @@ +--- +import Link from "@components/Link.astro"; +import { createSlug } from "@lib/utils"; + +const projects = [ + { + id: 1, + name: "MUST FIND BEANS", + description: + "A fast-paced first person shooter set following the realization that you’re all out of beans. The problem is, you’re nearing the end of cooking all the other items and you can’t just not have them. Without beans, the day just won’t be started off right.", + tags: ["Godot", "Blender", "GIMP", "Steamworks"], + link: "/projects/must-find-beans", + done: false, + }, + { + id: 2, + name: "troylusty.com", + description: + "My personal website made using Astro as a way to show off my portfolio of work and display blog posts.", + tags: [ + "Astro", + "Tailwind CSS", + "TypeScript", + "Self-hosted Forgejo Actions", + "Docker", + ], + link: "https://code.troylusty.com/troy/troylusty.com", + done: true, + }, + { + id: 3, + name: "Artwork", + description: + "A collection of digital artwork created with a variety of tools.", + tags: ["Blender", "Cinema 4D", "DaVinci Resolve"], + link: "/projects", + done: true, + }, + { + id: 4, + name: "Packard", + description: + "Packard is a simple terminal based RSS aggregator meant to allow you to take a quick glance at what’s occurring in topics you care about.", + tags: ["Rust", "Tokio", "Clap", "NixOS Flake"], + link: "https://code.troylusty.com/troy/packard", + done: true, + }, +]; +const sortedProjects = [...projects].sort((a, b) => a.id - b.id); +--- + +
    + { + sortedProjects.map((project) => ( +
  1. +
    +
    + <> +

    + + {project.done ? ( + + ) : ( + + )} + {project.name} + +

    +

    {project.description}

    + +
    +
    +
    +
    + {project.tags.map((tag) => ( + + {tag} + + ))} +
    +
    +
  2. + )) + } +
diff --git a/src/content/projects/must-find-beans/Still2025-04-07111623_1.1.1.avif b/src/content/projects/must-find-beans/Still2025-04-07111623_1.1.1.avif new file mode 100644 index 0000000000000000000000000000000000000000..cb538ae27859c2248bdea18bef60a12b59c73695 GIT binary patch literal 6830 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 A=l}o! literal 0 HcmV?d00001 diff --git a/src/content/projects/must-find-beans/Still2025-04-07111623_1.1.2.avif b/src/content/projects/must-find-beans/Still2025-04-07111623_1.1.2.avif new file mode 100644 index 0000000000000000000000000000000000000000..f2cd703bf30ab1f74d335d26bb2e5b562be42230 GIT binary patch literal 20419 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%0AVhmPWM+hZFH{?bK<11`&^5 z2;;vpN82r8I8?P;<;o@}U@|ASW4zQ6=mxX6TZ99qbHBx3Nv%uxT|sm~fOh(Kn|jP(@mh#Fo9p^7iLWq-Ft3=<$RRNY#S#gPf1To_UW zjqg9fMonEpz8|-%8LurGld2wjp{2GfT@lRHU@Wx!PH&Hr6`FA;FfAF;cwQ?y#9PhW z^3z>E(F$NqJRP}`NtQ#85uSr+_xn_n_y7vbD&8b%yqm|d<--8f!H%tb#lBv@H!aobaUc5gmgEv zYLg98C1Y7YmhR5QvvJ6&{+rB74dWvbnN@TMgW}j~g zN88Y)0sO>t1bg;k&*59z>b>VOteqlgnJPnDH+1@`>kFeFDd%7XbJqbch?IJ2OCiFR z-JQEQ2e5g`I>E`2Jj%KJSO7%91$c`eHL$4l(Kw6s@*j=w3~aj8beXR% z9b`DWWf`jw`PI`qxVy4M*LZlpe?7?ERN=ru2=qZ#{8}2SzlXoWr$So9qZ;CJhaU7r zgl8H`N9cDCj+iGaBx*moxjnbCx2}L z1+snYj?|sD1dIkXs=?v*rjWQGb22pJuuR-1n-kH0-MG~PD6uoD#WoF{Q*n80vU2lb zUo?Pic6{=sj&ne#?8F-i2oTLUdflzvH{!#Cj2MLoyc+)y1o)dA05;oyhM6`lBEMqg zu%X+kVT!Ia4j~tv`fg}&HE$WImNrD-`P%s!4?r+x&za0}G*nLD3vda?Bf-nL-HADl zU|fH+8|&hff>vRVn+2LM))Z`4jES9DXv;5h_PQGI{{yYEB?|9 zyU=2iqF}Pvm{vWTlMKF^W#aCP_jGxrr_CO4^-v>0#;?q>bYm(n$Xtw(N_F#}xlJDF z%cx8#v3j0+Ll_cl|133Pi?vr7v8hiG^)4z~lSP~Ln!p}t7|Je)do}-E)sOQ}VJhNF zM!N=@>*~@w9;Y7!>6BE{ERNZ+!ViH+syN+-6i|ZLPvTW)L&DuI7ebI}cJ(U6O+1?* zCv}VkLNNlp0@4r$O!v!{|1=%?U&g3cbR$VqsH7Yk;PNtrWXYN2^OK9EZ$SuB7G2?f zRyq1|P-k=O)GnR%N_JYblwH0bfw^5>fZeIpT0 z2EF-^C~^Txug0js2qK&JJ{x@mvZ*&0@F$5ik>0xv89=!_fV#EXzuFeXyk5X4uI{ox3e;5wX-q;kD=e$nYkLh@?ayiG_`g9 z2Lgbjm5J-W@xOZ%M=MvmzXJ$x%VA~fVDdT=7X~1~AFx4-0I!}`0x>kEY`5iqpUt)5Oxq6pYKkn86vmKrsIK z${YWKk6*FHU;MWon9gb{V&J`Df_V~)|AmeJ7dEkU2A>8b2RMep)XpB9A5!xlZ2F3Q zU$LF7+ut(+0103WxB*sxE#L|;f_r-~;{vFF{i6Rx zkN;P%3|1L~RaSrrSRoEL0Cs@UUp?@82H+U5{in7r=Im^LDF`G{0DxJ2dAXtl0JuZ| zc#3;@`IGnZ@{|ug<6i*KY5yO+!x!+ixdHQW|KTWd0pM*205tUehciwEfFI!ifV=2u z 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 F{{W<=PL2Qo literal 0 HcmV?d00001 diff --git a/src/content/projects/must-find-beans/Still2025-04-07111623_1.1.4.avif b/src/content/projects/must-find-beans/Still2025-04-07111623_1.1.4.avif new file mode 100644 index 0000000000000000000000000000000000000000..45fed2742a87e6fbb671330a8a73c37644cb272b GIT binary patch literal 6810 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 TZM|gL>J3hoi0RYyz^wlPz%J6! literal 0 HcmV?d00001 diff --git a/src/content/projects/must-find-beans/Still2025-04-07111623_1.1.6.avif b/src/content/projects/must-find-beans/Still2025-04-07111623_1.1.6.avif new file mode 100644 index 0000000000000000000000000000000000000000..d6932bc50f098b98569060bcf3d6e9453d1bd070 GIT binary patch literal 9185 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 +

Please Note

+

This game is very early in development.

+ -**THIS GAME IS VERY EARLY IN PRODUCTION** +![](capsule.avif) -Demonstrate your culinary combat skills in MUST FIND BEANS, a chaos driven FPS set in an endless arena full of enemies in an eat or be eaten situation. +[MUST FIND BEANS](https://store.steampowered.com/app/3012740/MUST_FIND_BEANS/) is a fast-paced first person shooter set following the realization that you're all out of beans. The problem is, you're nearing the end of cooking all the other items and you can't just not have them. Without beans, the day just won't be started off right. -### Culinary combat +Many will try to stop you as you race out in search of the final piece of your meal. But you must not let them. Find a can of beans by any means necessary before everything else you began cooking burns. -Prepare and serve up your opponents using a variety of cutlery and condiments, each fit for a different scenario! +Gameplay in MUST FIND BEANS aims to mimic games similar to the original Quake, and other modern “boomer shooters” such as ULTRAKILL, DUSK, or CRUEL. This extends not only to the fast and difficult yet predictable combat, but also the movement which has taken significant inspiration from that found within Source engine titles. -### Leaderboard - -Go against players all around the world with the in-game leaderboard. - -### Other key features - -- Ultra-wide support +Visuals and imagery included imitate apartment and hotel interiors within and around Miami in the 1980s. This is will be most evident though the use of a combination of brutalist architecture along with collections of interior foliage. Whilst it might not be entirely present within the presented version of the game, each “enemy” will be styled after one of the breakfast items which have been left cooking as a way to visualise the character’s paranoid and overly determined mental state. ## Early screenshots +![](Still2025-04-07111623_1.1.1.avif) +![](Still2025-04-07111623_1.1.6.avif) +![](Still2025-04-07111623_1.1.4.avif) +![](Still2025-04-07111623_1.1.2.avif) +![](Still2025-04-07111623_1.1.3.avif) + +## Even earlier screenshots + ![](ss_8340a3c02235371547350c557fefb830e6e2d067.avif) ![](ss_c578870d1c22722983b76c3effe7fba7f5d1cb5e.avif) ![](ss_b2dc5ca65e2f24088afac3faf79f450057e13383.avif) diff --git a/src/layouts/Cv.astro b/src/layouts/Cv.astro new file mode 100644 index 0000000..f54aaff --- /dev/null +++ b/src/layouts/Cv.astro @@ -0,0 +1,88 @@ +--- +import Layout from "@layouts/Layout.astro"; +import { SITE, CV } from "@consts"; +import { Image } from "astro:assets"; +import { Icon } from "astro-icon/components"; +import Link from "@components/Link.astro"; +import icon from "public/assets/icon.png"; +--- + + +
+
+

+ {CV.TITLE}{CV.DESCRIPTION} +

+

Digital designer.

+ + + Devon, United Kingdom, GMT + +

+ + + + + + + + + + + + + +
+ +
+ Troy Lusty + +
+
+
+ +
+
+
diff --git a/src/pages/404.astro b/src/pages/404.astro index 964b0d2..a28b2e4 100644 --- a/src/pages/404.astro +++ b/src/pages/404.astro @@ -10,20 +10,14 @@ import Button from "@components/Button.astro"; class="flex flex-col items-start justify-between gap-6 md:flex-row md:items-center" >
-

404 -

-

+

Content not found -

-
-
-
diff --git a/src/pages/cv.astro b/src/pages/cv.astro deleted file mode 100644 index b2a7a21..0000000 --- a/src/pages/cv.astro +++ /dev/null @@ -1,332 +0,0 @@ ---- -import Layout from "@layouts/Layout.astro"; -import { SITE, CV } from "@consts"; -import { Image } from "astro:assets"; -import { Icon } from "astro-icon/components"; -import Link from "@components/Link.astro"; -import icon from "public/assets/icon.png"; - -const skills = [ - { id: 1, name: "Python" }, - { id: 2, name: "Rust" }, - { id: 3, name: "TypeScript" }, - { id: 4, name: "Git" }, - { id: 5, name: "Docker" }, - { id: 6, name: "Linux" }, - { id: 7, name: "Shopify" }, - { id: 8, name: "Astro" }, - { id: 9, name: "Steamworks" }, - { id: 10, name: "Blender" }, - { id: 11, name: "Godot" }, - { id: 12, name: "Unreal Engine" }, - { id: 13, name: "Adobe Photoshop" }, - { id: 14, name: "GIMP" }, - { id: 15, name: "Inkscape" }, - { id: 16, name: "DaVinci Resolve" }, - { id: 17, name: "Pixelmator Pro" }, - { id: 99, name: "Full drivers licence (A & B)" }, -]; -const sortedSkills = [...skills].sort((a, b) => a.id - b.id); - -const projects = [ - { - id: 1, - name: "troylusty.com", - description: "My personal portfolio website made using Astro.", - tags: ["Astro", "Tailwind CSS", "TypeScript", "Actions", "Docker"], - link: "https://code.troylusty.com/troy/troylusty.com", - }, - { - id: 2, - name: "Artwork", - description: - "A collection of digital artwork created with a variety of tools.", - tags: ["Blender"], - link: "/projects", - }, - { - id: 3, - name: "Packard", - description: "Terminal based feed checker.", - tags: ["Rust", "Tokio", "Clap", "NixOS Flake"], - link: "https://code.troylusty.com/troy/packard", - }, -]; -const sortedProjects = [...projects].sort((a, b) => a.id - b.id); - -const education = [ - { - id: 1, - school: "University of Plymouth", - course: "BA (Hons) Game Arts and Design", - dates: "2024 - 2025", - description: ["1st year: Estimated completion May 2025"], - }, - { - id: 2, - school: "University Centre South Devon", - course: "FdA Games and Interactive Design", - dates: "2022 - 2024", - description: [ - "2nd year: 70.25% State Aggregate Mark", - "1st year: 69.43% State Aggregate Mark", - ], - }, - { - id: 3, - school: "South Devon College", - course: - "UAL Level 3 Extended Diploma in Creative Media Production and Technology", - dates: "2020 - 2022", - description: [ - "2nd year: Extended Diploma - Distinction", - "1st year: Diploma - Distinction", - ], - }, - { - id: 4, - school: "Kennicott Sixth Form", - course: "BTEC & A-level", - dates: "2018 - 2020", - description: [ - "Pearson BTEC Level 3 National Extended Diploma in Art and Design - Distinction Merit Merit", - "AQA GCE/A Computer Science ADV (Python) - C", - ], - }, - { - id: 5, - school: "King Edward VI Community College", - course: "GCSEs & Cambridge Nationals qualification", - dates: "2014 - 2018", - description: [ - "10 GCSEs including Maths and English", - "OCR Cambridge Nationals Creative iMedia Level 1/2 Award/Certificate - Merit at Level 2", - ], - }, -]; -const sortedEducation = [...education].sort((a, b) => a.id - b.id); ---- - - -
-
-

{SITE.AUTHOR}

- Digital designer. -

- - - Devon, United Kingdom, GMT - -

- - - - - - - - - - - - - -
-
- Troy Lusty - -
- -
-

About

- My specific chosen area of focus is design, lighting, and rendering - focusing on 3D environments within software such as Blender and Unreal - Engine. Using either real-time or offline rendering techniques. In - addition to this I also have interests in web development and cyber - security. My portfolio of work can be found on my website at troylusty.com/projects. -

-
-
-

Experience

-
-
-
-

- - - Camouflage Store - -

- 2020 - Current -
-

- E-commerce Business Management -

-
- My role has me in charge of managing an online e-commerce store in - addition to creating, editing, and publishing informational YouTube and - social media content for a family run outdoors store. This includes the - recent redesign and also any maintenance and general upkeep of the site - with all its related systems. -
    -
  • Migration of content to Shopify
  • -
  • Branding refresh and site redesign
  • -
  • VPS setup and self-hosted analytics platform
  • -
-
-
-
-
-
-

- Smaller Roles -

-
-

Production Assistant

-
- SDC Radiant Rumble (2024) -
-

Photogrammetrist

-
- Paignton Picture House (2023) -
-
-
-
-

Education

- { - sortedEducation.map((education) => ( -
-
-
-

{education.school}

-
- {education.dates} -
-
-
-
- {education.course} -
    - {education.description.map((line) => ( -
  • {line}
  • - ))} -
-
-
- )) - } -
-
-

Skills & Tools

    - { - sortedSkills.map((skill) => ( -
  • - {skill.name} -
  • - )) - } -
-
-
-

Projects

-
    - { - sortedProjects.map((project) => ( -
  1. -
    -
    - <> -

    - - - {project.name} - -

    - -

    - {project.description} -

    - -
    -
    -
    -
    - {project.tags.map((tag) => ( -
    - {tag} -
    - ))} -
    -
    -
  2. - )) - } -
-
-
diff --git a/src/pages/cv.mdx b/src/pages/cv.mdx new file mode 100644 index 0000000..392bfe3 --- /dev/null +++ b/src/pages/cv.mdx @@ -0,0 +1,62 @@ +--- +title: Troy Lusty +description: Curriculum Vitae +layout: "@layouts/Cv.astro" +--- + +import Projects from "@components/CvProjects.astro"; + +## About + +I'm a [Game Arts and Design](#education) degree student with a chosen area of focus on the design, lighting, and rendering of 3D environments. Using either real-time or offline rendering techniques in software packages such as Blender and Unreal Engine. In addition to this I also have an interest in web development, graphic design, and cyber security which make up a large part of my hobbies. My current portfolio of work can be found on my website at [troylusty.com/projects](/projects). + +--- + +## Experience + +### **E-commerce Business Management**, [Camouflage Store](/projects/camouflage-store) (2020 - Current) + +My role has me in charge of managing an online e-commerce store in addition to creating, editing, and publishing informational YouTube and social media content for a family run outdoors store. This includes the recent branding redesign, migration of content to Shopify, and any maintenance or general upkeep of the site with all its related systems, such as the self-hosted analytics platform. + +### Volunteering + +- **Production Assistant**, SDC Radiant Rumble (2024) +- **Photogrammetrist**, Paignton Picture House (2023) + +--- + +## Education + +### **BA (Hons) Game Arts and Design**, University of Plymouth (2024 - 2025) + +- 1st year: Estimated completion May 2025 + +### **FdA Games and Interactive Design**, University Centre South Devon (2022 - 2024) + +- 2nd year: 70.25% State Aggregate Mark +- 1st year: 69.43% State Aggregate Mark + +### **UAL Level 3 Extended Diploma in Creative Media Production and Technology**, South Devon College (2020 - 2022) + +- 2nd year: Extended Diploma - Distinction +- 1st year: Diploma - Distinction + +### **BTEC & A-level**, Kennicott Sixth Form (2018 - 2020) + +- Pearson BTEC Level 3 National Extended Diploma in Art and Design - Distinction Merit Merit +- AQA GCE/A Computer Science ADV (Python) - C + +### **GCSEs & Cambridge Nationals qualification**, King Edward VI Community College (2014 - 2018) + +- 10 GCSEs including Maths and English +- OCR Cambridge Nationals Creative iMedia Level 1/2 Award/Certificate - Merit at Level 2 + +### Additional + +- Full drivers licence (A & B) + +--- + +## Projects + +