Merge pull request #371 from bartvdbraak/update-images

Update images and dependencies
This commit is contained in:
Bart van der Braak 2024-07-02 01:13:38 +02:00 committed by GitHub
commit 05d27db42d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 567 additions and 965 deletions

View file

@ -15,10 +15,10 @@ jobs:
node-version: [18] node-version: [18]
steps: steps:
- name: Checkout Git repository - name: Checkout Git repository
uses: actions/checkout@v4.1.4 uses: actions/checkout@v4.1.6
- name: Setup pnpm - name: Setup pnpm
uses: pnpm/action-setup@v3.0.0 uses: pnpm/action-setup@v4.0.0
with: with:
version: latest version: latest

View file

@ -40,10 +40,10 @@ jobs:
fi fi
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4.1.4 uses: actions/checkout@v4.1.6
- name: Setup pnpm - name: Setup pnpm
uses: pnpm/action-setup@v3.0.0 uses: pnpm/action-setup@v4.0.0
with: with:
version: latest version: latest
@ -54,7 +54,7 @@ jobs:
cache: 'pnpm' cache: 'pnpm'
- name: Retrieve Vercel Preview URL - name: Retrieve Vercel Preview URL
uses: zentered/vercel-preview-url@v1.1.9 uses: zentered/vercel-preview-url@v1.2.0
id: vercel_preview_url id: vercel_preview_url
env: env:
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
@ -80,7 +80,7 @@ jobs:
--build-static --build-static
- name: Upload report to Cloudflare pages - name: Upload report to Cloudflare pages
uses: cloudflare/wrangler-action@v3.4.1 uses: cloudflare/wrangler-action@v3.6.1
with: with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
command: pages deploy .unlighthouse --project-name="${{ env.CLOUDFLARE_PROJECT }}" --branch=${{ env.CLOUDFLARE_BRANCH }} command: pages deploy .unlighthouse --project-name="${{ env.CLOUDFLARE_PROJECT }}" --branch=${{ env.CLOUDFLARE_BRANCH }}

View file

@ -15,37 +15,36 @@
"prepare": "npx husky && svelte-kit sync && svelte-check --tsconfig ./tsconfig.json" "prepare": "npx husky && svelte-kit sync && svelte-check --tsconfig ./tsconfig.json"
}, },
"devDependencies": { "devDependencies": {
"@sveltejs/adapter-vercel": "^5.3.0", "@sveltejs/adapter-vercel": "^5.3.1",
"@sveltejs/enhanced-img": "^0.2.0", "@sveltejs/kit": "^2.5.10",
"@sveltejs/kit": "^2.5.7", "@sveltejs/vite-plugin-svelte": "^3.1.1",
"@sveltejs/vite-plugin-svelte": "^3.1.0",
"@types/eslint": "^8.56.10", "@types/eslint": "^8.56.10",
"@typescript-eslint/eslint-plugin": "^7.7.0", "@typescript-eslint/eslint-plugin": "^7.13.0",
"@typescript-eslint/parser": "^7.7.0", "@typescript-eslint/parser": "^7.13.0",
"autoprefixer": "^10.4.19", "autoprefixer": "^10.4.19",
"eslint": "^8.57.0", "eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0", "eslint-config-prettier": "^9.1.0",
"eslint-plugin-svelte": "^2.37.0", "eslint-plugin-svelte": "^2.39.3",
"lint-staged": "^15.2.2", "lint-staged": "^15.2.6",
"postcss": "^8.4.38", "postcss": "^8.4.38",
"postcss-load-config": "^5.0.3", "postcss-load-config": "^5.1.0",
"prettier": "^3.2.5", "prettier": "^3.3.2",
"prettier-plugin-svelte": "^3.2.3", "prettier-plugin-svelte": "^3.2.4",
"prettier-plugin-tailwindcss": "^0.5.14", "prettier-plugin-tailwindcss": "^0.5.14",
"svelte": "^4.2.15", "svelte": "^4.2.18",
"svelte-check": "^3.6.9", "svelte-check": "^3.8.0",
"tailwindcss": "^3.4.3", "tailwindcss": "^3.4.4",
"tslib": "^2.6.2", "tslib": "^2.6.3",
"typescript": "^5.4.5", "typescript": "^5.4.5",
"vite": "^5.2.10" "vite": "^5.2.13"
}, },
"dependencies": { "dependencies": {
"@resvg/resvg-js": "^2.6.2", "@resvg/resvg-js": "^2.6.2",
"@types/node": "^20.12.7", "@types/node": "^20.14.2",
"@vercel/analytics": "^1.2.2", "@vercel/analytics": "^1.3.1",
"@vercel/speed-insights": "^1.0.10", "@vercel/speed-insights": "^1.0.12",
"bits-ui": "^0.21.4", "bits-ui": "^0.21.10",
"clsx": "^2.1.0", "clsx": "^2.1.1",
"lucide-svelte": "^0.372.0", "lucide-svelte": "^0.372.0",
"mode-watcher": "^0.3.0", "mode-watcher": "^0.3.0",
"satori": "^0.10.13", "satori": "^0.10.13",

File diff suppressed because it is too large Load diff

View file

@ -25,7 +25,7 @@
<div class="relative h-[500px]"> <div class="relative h-[500px]">
{#each images as img, i} {#each images as img, i}
<enhanced:img <img
src={img.src} src={img.src}
alt={img.alt} alt={img.alt}
class="absolute inset-0 h-full w-full rounded-xl object-cover opacity-0 transition-opacity duration-1000 ease-out {img.style} {index === class="absolute inset-0 h-full w-full rounded-xl object-cover opacity-0 transition-opacity duration-1000 ease-out {img.style} {index ===

View file

@ -3,7 +3,7 @@
import type { Tool } from '$lib/content/tools'; import type { Tool } from '$lib/content/tools';
export let toolItem: Tool; export let toolItem: Tool;
let { description, enhanced, logo, name, tagLine } = toolItem; let { description, logo, name, tagLine } = toolItem;
</script> </script>
<Card.Root class="mb-4 inline-block hover:bg-muted/50"> <Card.Root class="mb-4 inline-block hover:bg-muted/50">
@ -13,18 +13,9 @@
{name} {name}
</Card.Title> </Card.Title>
<span class="text-sm font-medium">{tagLine}</span> <span class="text-sm font-medium">{tagLine}</span>
</div>
{#if enhanced}
<enhanced:img
src={logo}
alt="logo of {name}"
class="h-10 w-10 object-contain"
loading="lazy"
/>
{:else}
<img src={logo} alt="logo of {name}" class="h-10 w-10 object-contain" loading="lazy" /> <img src={logo} alt="logo of {name}" class="h-10 w-10 object-contain" loading="lazy" />
{/if} </div></Card.Header
</Card.Header> >
<Card.Content class="text-sm text-muted-foreground"> <Card.Content class="text-sm text-muted-foreground">
{description} {description}
</Card.Content> </Card.Content>

View file

@ -1,11 +1,11 @@
import keyweaveLogo from '$lib/assets/projects/keyweave-logo.png?enhanced'; import keyweaveLogo from '$lib/assets/projects/keyweave-logo.png';
import videoWallLogo from '$lib/assets/projects/videowall-logo.png?enhanced'; import videoWallLogo from '$lib/assets/projects/videowall-logo.png';
import ticketDashboardLogo from '$lib/assets/projects/triple-logo.png?enhanced'; import ticketDashboardLogo from '$lib/assets/projects/triple-logo.png';
import zaantjeLogo from '$lib/assets/projects/zaantje-logo.png?enhanced'; import zaantjeLogo from '$lib/assets/projects/zaantje-logo.png';
import helloBartLogo from '$lib/assets/logo-icon.png?enhanced'; import helloBartLogo from '$lib/assets/logo-icon.png';
import omnidashLogo from '$lib/assets/projects/omnidash-logo.png?enhanced'; import omnidashLogo from '$lib/assets/projects/omnidash-logo.png';
import azureGeocodeMappingLogo from '$lib/assets/projects/azure-geocode-mapping-logo.png?enhanced'; import azureGeocodeMappingLogo from '$lib/assets/projects/azure-geocode-mapping-logo.png';
import slayerWeightCalcLogo from '$lib/assets/projects/slayerweightcalc-logo.png?enhanced'; import slayerWeightCalcLogo from '$lib/assets/projects/slayerweightcalc-logo.png';
// TODO: Use vite glob import to import all images from a folder and select them based on their name // TODO: Use vite glob import to import all images from a folder and select them based on their name
// const gallery = Object.values(import.meta.glob('@assets/asso/*.{png,jpg,jpeg,PNG,JPEG}', { eager: true, as: 'url' })) // const gallery = Object.values(import.meta.glob('@assets/asso/*.{png,jpg,jpeg,PNG,JPEG}', { eager: true, as: 'url' }))

View file

@ -3,27 +3,27 @@ import overleafLogo from '$lib/assets/tools/overleaf.svg';
import argoCDLogo from '$lib/assets/tools/argocd.svg'; import argoCDLogo from '$lib/assets/tools/argocd.svg';
import studio3TLogo from '$lib/assets/tools/studio3t.svg'; import studio3TLogo from '$lib/assets/tools/studio3t.svg';
import warpLogo from '$lib/assets/tools/warp.svg'; import warpLogo from '$lib/assets/tools/warp.svg';
import k9sLogo from '$lib/assets/tools/k9s.png?enhanced'; import k9sLogo from '$lib/assets/tools/k9s.png';
import tablePlusLogo from '$lib/assets/tools/table-plus.png?enhanced'; import tablePlusLogo from '$lib/assets/tools/table-plus.png';
import figmaLogo from '$lib/assets/tools/figma.svg'; import figmaLogo from '$lib/assets/tools/figma.svg';
import azureCLILogo from '$lib/assets/tools/azure-cli.svg'; import azureCLILogo from '$lib/assets/tools/azure-cli.svg';
import keystoreExplorer from '$lib/assets/tools/keystore-exporer.png?enhanced'; import keystoreExplorer from '$lib/assets/tools/keystore-exporer.png';
import togglTrackLogo from '$lib/assets/tools/toggl-track.svg'; import togglTrackLogo from '$lib/assets/tools/toggl-track.svg';
import helmLogo from '$lib/assets/tools/helm.svg'; import helmLogo from '$lib/assets/tools/helm.svg';
import royalTSXLogo from '$lib/assets/tools/royal-tsx.png?enhanced'; import royalTSXLogo from '$lib/assets/tools/royal-tsx.png';
import poetryLogo from '$lib/assets/tools/poetry.svg'; import poetryLogo from '$lib/assets/tools/poetry.svg';
import maccyLogo from '$lib/assets/tools/maccy.png?enhanced'; import maccyLogo from '$lib/assets/tools/maccy.png';
import balenaEtcherLogo from '$lib/assets/tools/balena-etcher.svg'; import balenaEtcherLogo from '$lib/assets/tools/balena-etcher.svg';
import sendGridLogo from '$lib/assets/tools/sendgrid.svg'; import sendGridLogo from '$lib/assets/tools/sendgrid.svg';
import insomniaLogo from '$lib/assets/tools/insomnia.svg'; import insomniaLogo from '$lib/assets/tools/insomnia.svg';
import blenderLogo from '$lib/assets/tools/blender.svg'; import blenderLogo from '$lib/assets/tools/blender.svg';
import bitwardenLogo from '$lib/assets/tools/bitwarden.svg'; import bitwardenLogo from '$lib/assets/tools/bitwarden.svg';
import azureDataStudioLogo from '$lib/assets/tools/azure-data-studio.png?enhanced'; import azureDataStudioLogo from '$lib/assets/tools/azure-data-studio.png';
import wiresharkLogo from '$lib/assets/tools/wireshark.png?enhanced'; import wiresharkLogo from '$lib/assets/tools/wireshark.png';
import rectangleLogo from '$lib/assets/tools/rectangle.png?enhanced'; import rectangleLogo from '$lib/assets/tools/rectangle.png';
import pyCharmLogo from '$lib/assets/tools/pycharm.svg'; import pyCharmLogo from '$lib/assets/tools/pycharm.svg';
import dockerLogo from '$lib/assets/tools/docker.webp?enhanced'; import dockerLogo from '$lib/assets/tools/docker.webp';
import cyberduckLogo from '$lib/assets/tools/cyberduck.png?enhanced'; import cyberduckLogo from '$lib/assets/tools/cyberduck.png';
import mullvadVPNLogo from '$lib/assets/tools/mullvad-vpn.svg'; import mullvadVPNLogo from '$lib/assets/tools/mullvad-vpn.svg';
import jqLogo from '$lib/assets/tools/jq.svg'; import jqLogo from '$lib/assets/tools/jq.svg';
import akamaiLogo from '$lib/assets/tools/akamai.svg'; import akamaiLogo from '$lib/assets/tools/akamai.svg';
@ -36,7 +36,7 @@ import nvmLogo from '$lib/assets/tools/nvm.svg';
import gIMPLogo from '$lib/assets/tools/gimp.svg'; import gIMPLogo from '$lib/assets/tools/gimp.svg';
import azureStorageExplorerLogo from '$lib/assets/tools/azure-storage-explorer.svg'; import azureStorageExplorerLogo from '$lib/assets/tools/azure-storage-explorer.svg';
import meldLogo from '$lib/assets/tools/meld.svg'; import meldLogo from '$lib/assets/tools/meld.svg';
import karabinerElementsLogo from '$lib/assets/tools/karabiner-elements.png?enhanced'; import karabinerElementsLogo from '$lib/assets/tools/karabiner-elements.png';
import kustomizeLogo from '$lib/assets/tools/kustomize.svg'; import kustomizeLogo from '$lib/assets/tools/kustomize.svg';
import inkScapeLogo from '$lib/assets/tools/inkscape.svg'; import inkScapeLogo from '$lib/assets/tools/inkscape.svg';
import oBSLogo from '$lib/assets/tools/obs.svg'; import oBSLogo from '$lib/assets/tools/obs.svg';
@ -47,7 +47,7 @@ import nmapLogo from '$lib/assets/tools/nmap.svg';
import dBeaverLogo from '$lib/assets/tools/dbeaver.svg'; import dBeaverLogo from '$lib/assets/tools/dbeaver.svg';
import openTofuLogo from '$lib/assets/tools/opentofu.svg'; import openTofuLogo from '$lib/assets/tools/opentofu.svg';
import terraformLogo from '$lib/assets/tools/terraform.svg'; import terraformLogo from '$lib/assets/tools/terraform.svg';
import gitLensLogo from '$lib/assets/tools/gitlens.png?enhanced'; import gitLensLogo from '$lib/assets/tools/gitlens.png';
export { export {
gitHubLogo, gitHubLogo,
@ -106,7 +106,6 @@ export type Tool = {
description: string; description: string;
logo: string; logo: string;
url: string; url: string;
enhanced: boolean;
}; };
const tools: Tool[] = [ const tools: Tool[] = [
@ -116,8 +115,7 @@ const tools: Tool[] = [
description: description:
'A platform for hosting and collaborating on code, providing version control, issue tracking, and code review.', 'A platform for hosting and collaborating on code, providing version control, issue tracking, and code review.',
logo: gitHubLogo, logo: gitHubLogo,
url: 'https://github.com', url: 'https://github.com'
enhanced: false
}, },
{ {
name: 'Overleaf', name: 'Overleaf',
@ -125,8 +123,7 @@ const tools: Tool[] = [
description: description:
'Overleaf provides a collaborative environment for writing and publishing LaTeX documents. I use it for crafting scientific papers, technical documents, and more.', 'Overleaf provides a collaborative environment for writing and publishing LaTeX documents. I use it for crafting scientific papers, technical documents, and more.',
logo: overleafLogo, logo: overleafLogo,
url: 'https://www.overleaf.com', url: 'https://www.overleaf.com'
enhanced: false
}, },
{ {
name: 'ArgoCD', name: 'ArgoCD',
@ -134,8 +131,7 @@ const tools: Tool[] = [
description: description:
'ArgoCD is vital for deploying applications in a declarative way, using Git as the source of truth. It helps me to manage and automate deployments across different environments.', 'ArgoCD is vital for deploying applications in a declarative way, using Git as the source of truth. It helps me to manage and automate deployments across different environments.',
logo: argoCDLogo, logo: argoCDLogo,
url: 'https://argoproj.github.io/cd/', url: 'https://argoproj.github.io/cd/'
enhanced: false
}, },
{ {
name: 'Studio 3T', name: 'Studio 3T',
@ -143,8 +139,7 @@ const tools: Tool[] = [
description: description:
'Studio 3T simplifies working with MongoDB, providing useful features for managing databases, collections, and queries.', 'Studio 3T simplifies working with MongoDB, providing useful features for managing databases, collections, and queries.',
logo: studio3TLogo, logo: studio3TLogo,
url: 'https://www.studio3t.com', url: 'https://www.studio3t.com'
enhanced: false
}, },
{ {
name: 'Warp', name: 'Warp',
@ -152,8 +147,7 @@ const tools: Tool[] = [
description: description:
'Warp is a modern, Rust-based terminal with AI built in so you and your team can build great software, faster.', 'Warp is a modern, Rust-based terminal with AI built in so you and your team can build great software, faster.',
logo: warpLogo, logo: warpLogo,
url: 'https://warp.dev', url: 'https://warp.dev'
enhanced: false
}, },
{ {
name: 'TablePlus', name: 'TablePlus',
@ -161,8 +155,7 @@ const tools: Tool[] = [
description: description:
'TablePlus is a contemporary, native application featuring a sophisticated user interface to efficiently oversee multiple databases concurrently.', 'TablePlus is a contemporary, native application featuring a sophisticated user interface to efficiently oversee multiple databases concurrently.',
logo: tablePlusLogo, logo: tablePlusLogo,
url: 'https://tableplus.com/', url: 'https://tableplus.com/'
enhanced: true
}, },
{ {
name: 'k9s', name: 'k9s',
@ -170,8 +163,7 @@ const tools: Tool[] = [
description: description:
'k9s is a Kubernetes terminal that provides an easy interface to interact with clusters, aiding in managing and observing Kubernetes resources.', 'k9s is a Kubernetes terminal that provides an easy interface to interact with clusters, aiding in managing and observing Kubernetes resources.',
logo: k9sLogo, logo: k9sLogo,
url: 'https://k9scli.io', url: 'https://k9scli.io'
enhanced: true
}, },
{ {
name: 'Figma', name: 'Figma',
@ -179,8 +171,7 @@ const tools: Tool[] = [
description: description:
'Figma is a collaborative design tool that helps in creating, testing, and sharing user interfaces for applications and websites.', 'Figma is a collaborative design tool that helps in creating, testing, and sharing user interfaces for applications and websites.',
logo: figmaLogo, logo: figmaLogo,
url: 'https://www.figma.com', url: 'https://www.figma.com'
enhanced: false
}, },
{ {
name: 'Azure CLI', name: 'Azure CLI',
@ -188,8 +179,7 @@ const tools: Tool[] = [
description: description:
'Azure CLI is a command-line interface for managing Azure resources, enabling quick administration of my Azure-hosted applications and services.', 'Azure CLI is a command-line interface for managing Azure resources, enabling quick administration of my Azure-hosted applications and services.',
logo: azureCLILogo, logo: azureCLILogo,
url: 'https://docs.microsoft.com/cli/azure', url: 'https://docs.microsoft.com/cli/azure'
enhanced: false
}, },
{ {
name: 'KeyStore Explorer', name: 'KeyStore Explorer',
@ -197,8 +187,7 @@ const tools: Tool[] = [
description: description:
'KeyStore Explorer is a GUI-based tool to manage cryptographic keys and certificates, helping in development and testing phases.', 'KeyStore Explorer is a GUI-based tool to manage cryptographic keys and certificates, helping in development and testing phases.',
logo: keystoreExplorer, logo: keystoreExplorer,
url: 'https://keystore-explorer.org', url: 'https://keystore-explorer.org'
enhanced: true
}, },
{ {
name: 'Toggl Track', name: 'Toggl Track',
@ -206,8 +195,7 @@ const tools: Tool[] = [
description: description:
'Toggl Track is a time tracking tool that assists in managing my daily tasks and tracking productivity.', 'Toggl Track is a time tracking tool that assists in managing my daily tasks and tracking productivity.',
logo: togglTrackLogo, logo: togglTrackLogo,
url: 'https://www.toggl.com/track', url: 'https://www.toggl.com/track'
enhanced: false
}, },
{ {
name: 'Helm', name: 'Helm',
@ -215,8 +203,7 @@ const tools: Tool[] = [
description: description:
'Helm is a Kubernetes package manager that simplifies the deployment and management of applications on Kubernetes clusters.', 'Helm is a Kubernetes package manager that simplifies the deployment and management of applications on Kubernetes clusters.',
logo: helmLogo, logo: helmLogo,
url: 'https://helm.sh', url: 'https://helm.sh'
enhanced: false
}, },
{ {
name: 'Royal TSX', name: 'Royal TSX',
@ -224,8 +211,7 @@ const tools: Tool[] = [
description: description:
'Royal TSX is a connection management tool that provides easy and secure access to remote systems.', 'Royal TSX is a connection management tool that provides easy and secure access to remote systems.',
logo: royalTSXLogo, logo: royalTSXLogo,
url: 'https://www.royalapps.com/ts/mac/features', url: 'https://www.royalapps.com/ts/mac/features'
enhanced: true
}, },
{ {
name: 'Poetry', name: 'Poetry',
@ -233,8 +219,7 @@ const tools: Tool[] = [
description: description:
'Poetry is a Python dependency management tool that simplifies package management and project environment setup.', 'Poetry is a Python dependency management tool that simplifies package management and project environment setup.',
logo: poetryLogo, logo: poetryLogo,
url: 'https://python-poetry.org', url: 'https://python-poetry.org'
enhanced: false
}, },
{ {
name: 'Maccy', name: 'Maccy',
@ -242,8 +227,7 @@ const tools: Tool[] = [
description: description:
'Maccy is a lightweight clipboard manager for macOS that improves productivity by keeping a history of the clipboard.', 'Maccy is a lightweight clipboard manager for macOS that improves productivity by keeping a history of the clipboard.',
logo: maccyLogo, logo: maccyLogo,
url: 'https://maccy.app', url: 'https://maccy.app'
enhanced: true
}, },
{ {
name: 'Balena Etcher', name: 'Balena Etcher',
@ -251,8 +235,7 @@ const tools: Tool[] = [
description: description:
'Balena Etcher is a USB and SD card writing tool used to flash OS images onto memory cards or drives.', 'Balena Etcher is a USB and SD card writing tool used to flash OS images onto memory cards or drives.',
logo: balenaEtcherLogo, logo: balenaEtcherLogo,
url: 'https://www.balena.io/etcher', url: 'https://www.balena.io/etcher'
enhanced: false
}, },
{ {
name: 'SendGrid', name: 'SendGrid',
@ -260,8 +243,7 @@ const tools: Tool[] = [
description: description:
'SendGrid is an email delivery service that facilitates the sending of transactional or marketing emails.', 'SendGrid is an email delivery service that facilitates the sending of transactional or marketing emails.',
logo: sendGridLogo, logo: sendGridLogo,
url: 'https://sendgrid.com', url: 'https://sendgrid.com'
enhanced: false
}, },
{ {
name: 'Insomnia', name: 'Insomnia',
@ -269,8 +251,7 @@ const tools: Tool[] = [
description: description:
'Insomnia is a powerful REST client that aids in testing, debugging, and interacting with HTTP APIs.', 'Insomnia is a powerful REST client that aids in testing, debugging, and interacting with HTTP APIs.',
logo: insomniaLogo, logo: insomniaLogo,
url: 'https://insomnia.rest', url: 'https://insomnia.rest'
enhanced: false
}, },
{ {
name: 'Blender', name: 'Blender',
@ -278,8 +259,7 @@ const tools: Tool[] = [
description: description:
'Blender is a 3D modeling and animation software used for creating and rendering 3D graphics and animations.', 'Blender is a 3D modeling and animation software used for creating and rendering 3D graphics and animations.',
logo: blenderLogo, logo: blenderLogo,
url: 'https://www.blender.org', url: 'https://www.blender.org'
enhanced: false
}, },
{ {
name: 'Bitwarden', name: 'Bitwarden',
@ -287,8 +267,7 @@ const tools: Tool[] = [
description: description:
'Bitwarden is an open-source password manager that securely stores and manages passwords across devices.', 'Bitwarden is an open-source password manager that securely stores and manages passwords across devices.',
logo: bitwardenLogo, logo: bitwardenLogo,
url: 'https://bitwarden.com', url: 'https://bitwarden.com'
enhanced: false
}, },
{ {
name: 'Azure Data Studio', name: 'Azure Data Studio',
@ -296,8 +275,7 @@ const tools: Tool[] = [
description: description:
'Azure Data Studio is a cross-platform database tool that provides a modern editor experience for managing data across multiple sources.', 'Azure Data Studio is a cross-platform database tool that provides a modern editor experience for managing data across multiple sources.',
logo: azureDataStudioLogo, logo: azureDataStudioLogo,
url: 'https://azure.microsoft.com/products/data-studio', url: 'https://azure.microsoft.com/products/data-studio'
enhanced: true
}, },
{ {
name: 'Wireshark', name: 'Wireshark',
@ -305,8 +283,7 @@ const tools: Tool[] = [
description: description:
'Wireshark is a network protocol analyzer that helps me inspect and troubleshoot network traffic, providing in-depth insights.', 'Wireshark is a network protocol analyzer that helps me inspect and troubleshoot network traffic, providing in-depth insights.',
logo: wiresharkLogo, logo: wiresharkLogo,
url: 'https://www.wireshark.org', url: 'https://www.wireshark.org'
enhanced: true
}, },
{ {
name: 'Rectangle', name: 'Rectangle',
@ -314,8 +291,7 @@ const tools: Tool[] = [
description: description:
'Rectangle is a window management tool for macOS that provides keyboard shortcuts for resizing and organizing windows efficiently.', 'Rectangle is a window management tool for macOS that provides keyboard shortcuts for resizing and organizing windows efficiently.',
logo: rectangleLogo, logo: rectangleLogo,
url: 'https://rectangleapp.com/', url: 'https://rectangleapp.com/'
enhanced: true
}, },
{ {
name: 'PyCharm', name: 'PyCharm',
@ -323,8 +299,7 @@ const tools: Tool[] = [
description: description:
'An Integrated Development Environment (IDE) for Python, providing intelligent code assistance and debugging tools.', 'An Integrated Development Environment (IDE) for Python, providing intelligent code assistance and debugging tools.',
logo: pyCharmLogo, logo: pyCharmLogo,
url: 'https://www.jetbrains.com/pycharm/', url: 'https://www.jetbrains.com/pycharm/'
enhanced: false
}, },
{ {
name: 'Docker', name: 'Docker',
@ -332,8 +307,7 @@ const tools: Tool[] = [
description: description:
'A platform that enables the development, shipment, and running of applications inside containers, ensuring consistency across environments.', 'A platform that enables the development, shipment, and running of applications inside containers, ensuring consistency across environments.',
logo: dockerLogo, logo: dockerLogo,
url: 'https://www.docker.com', url: 'https://www.docker.com'
enhanced: true
}, },
{ {
name: 'Cyberduck', name: 'Cyberduck',
@ -341,8 +315,7 @@ const tools: Tool[] = [
description: description:
'A libre server and cloud storage browser for Mac and Windows, supporting various protocols and cloud providers.', 'A libre server and cloud storage browser for Mac and Windows, supporting various protocols and cloud providers.',
logo: cyberduckLogo, logo: cyberduckLogo,
url: 'https://cyberduck.io', url: 'https://cyberduck.io'
enhanced: true
}, },
{ {
name: 'Mullvad VPN', name: 'Mullvad VPN',
@ -350,8 +323,7 @@ const tools: Tool[] = [
description: description:
'A VPN service that prioritizes privacy and anonymity, keeping my online activities secure and private.', 'A VPN service that prioritizes privacy and anonymity, keeping my online activities secure and private.',
logo: mullvadVPNLogo, logo: mullvadVPNLogo,
url: 'https://mullvad.net', url: 'https://mullvad.net'
enhanced: false
}, },
{ {
name: 'jq', name: 'jq',
@ -359,8 +331,7 @@ const tools: Tool[] = [
description: description:
'A lightweight and flexible command-line JSON processor, essential for parsing and manipulating JSON data in the shell.', 'A lightweight and flexible command-line JSON processor, essential for parsing and manipulating JSON data in the shell.',
logo: jqLogo, logo: jqLogo,
url: 'https://stedolan.github.io/jq/', url: 'https://stedolan.github.io/jq/'
enhanced: false
}, },
{ {
name: 'Akamai', name: 'Akamai',
@ -368,8 +339,7 @@ const tools: Tool[] = [
description: description:
'A global content delivery network, cybersecurity, and cloud service company, providing web and internet security services.', 'A global content delivery network, cybersecurity, and cloud service company, providing web and internet security services.',
logo: akamaiLogo, logo: akamaiLogo,
url: 'https://www.akamai.com', url: 'https://www.akamai.com'
enhanced: false
}, },
{ {
name: 'CloudFlare', name: 'CloudFlare',
@ -377,8 +347,7 @@ const tools: Tool[] = [
description: description:
'A company that offers CDN services, DDoS mitigation, and distributed domain name server services to optimize and secure online content.', 'A company that offers CDN services, DDoS mitigation, and distributed domain name server services to optimize and secure online content.',
logo: cloudFlareLogo, logo: cloudFlareLogo,
url: 'https://www.cloudflare.com', url: 'https://www.cloudflare.com'
enhanced: false
}, },
{ {
name: 'Visual Studio Code', name: 'Visual Studio Code',
@ -386,8 +355,7 @@ const tools: Tool[] = [
description: description:
'A free, open-source code editor that offers powerful tools for code development, debugging, and extensions for various programming languages.', 'A free, open-source code editor that offers powerful tools for code development, debugging, and extensions for various programming languages.',
logo: visualStudioCodeLogo, logo: visualStudioCodeLogo,
url: 'https://code.visualstudio.com', url: 'https://code.visualstudio.com'
enhanced: false
}, },
{ {
name: 'OpsGenie', name: 'OpsGenie',
@ -395,8 +363,7 @@ const tools: Tool[] = [
description: description:
'An alert and on-call management platform that ensures critical alerts are never missed, improving incident response times.', 'An alert and on-call management platform that ensures critical alerts are never missed, improving incident response times.',
logo: opsGenieLogo, logo: opsGenieLogo,
url: 'https://www.atlassian.com/software/opsgenie', url: 'https://www.atlassian.com/software/opsgenie'
enhanced: false
}, },
{ {
name: 'vim', name: 'vim',
@ -404,8 +371,7 @@ const tools: Tool[] = [
description: description:
'A highly configurable and efficient text editor that I use for editing code and text files from the command line.', 'A highly configurable and efficient text editor that I use for editing code and text files from the command line.',
logo: vimLogo, logo: vimLogo,
url: 'https://www.vim.org', url: 'https://www.vim.org'
enhanced: false
}, },
{ {
name: 'Notion', name: 'Notion',
@ -413,8 +379,7 @@ const tools: Tool[] = [
description: description:
'A collaboration platform that combines note-taking, task management, and workflow management.', 'A collaboration platform that combines note-taking, task management, and workflow management.',
logo: notionLogo, logo: notionLogo,
url: 'https://www.notion.so', url: 'https://www.notion.so'
enhanced: false
}, },
{ {
name: 'nvm', name: 'nvm',
@ -422,8 +387,7 @@ const tools: Tool[] = [
description: description:
'A Node.js version manager that simplifies the installation and management of multiple Node.js versions.', 'A Node.js version manager that simplifies the installation and management of multiple Node.js versions.',
logo: nvmLogo, logo: nvmLogo,
url: 'https://github.com/nvm-sh/nvm', url: 'https://github.com/nvm-sh/nvm'
enhanced: false
}, },
{ {
name: 'GIMP', name: 'GIMP',
@ -431,16 +395,14 @@ const tools: Tool[] = [
description: description:
'An open-source raster graphics editor used for tasks such as photo retouching, image editing, and composition.', 'An open-source raster graphics editor used for tasks such as photo retouching, image editing, and composition.',
logo: gIMPLogo, logo: gIMPLogo,
url: 'https://www.gimp.org', url: 'https://www.gimp.org'
enhanced: false
}, },
{ {
name: 'Azure Storage Explorer', name: 'Azure Storage Explorer',
tagLine: 'Azure Storage Management Application', tagLine: 'Azure Storage Management Application',
description: 'A standalone app that facilitates the management of Azure storage data.', description: 'A standalone app that facilitates the management of Azure storage data.',
logo: azureStorageExplorerLogo, logo: azureStorageExplorerLogo,
url: 'https://azure.microsoft.com/products/storage/storage-explorer', url: 'https://azure.microsoft.com/products/storage/storage-explorer'
enhanced: false
}, },
{ {
name: 'Meld', name: 'Meld',
@ -448,8 +410,7 @@ const tools: Tool[] = [
description: description:
'A visual diff and merge tool that provides clear comparisons between files and directories.', 'A visual diff and merge tool that provides clear comparisons between files and directories.',
logo: meldLogo, logo: meldLogo,
url: 'https://meldmerge.org', url: 'https://meldmerge.org'
enhanced: false
}, },
{ {
name: 'Karabiner Elements', name: 'Karabiner Elements',
@ -457,8 +418,7 @@ const tools: Tool[] = [
description: description:
'A powerful keyboard customizer for macOS, providing multiple customization options for the keyboard.', 'A powerful keyboard customizer for macOS, providing multiple customization options for the keyboard.',
logo: karabinerElementsLogo, logo: karabinerElementsLogo,
url: 'https://karabiner-elements.pqrs.org', url: 'https://karabiner-elements.pqrs.org'
enhanced: true
}, },
{ {
name: 'Kustomize', name: 'Kustomize',
@ -466,8 +426,7 @@ const tools: Tool[] = [
description: description:
'A template-free way to customize application configuration that simplifies the customization of Kubernetes YAML configuration files.', 'A template-free way to customize application configuration that simplifies the customization of Kubernetes YAML configuration files.',
logo: kustomizeLogo, logo: kustomizeLogo,
url: 'https://kustomize.io', url: 'https://kustomize.io'
enhanced: false
}, },
{ {
name: 'InkScape', name: 'InkScape',
@ -475,8 +434,7 @@ const tools: Tool[] = [
description: description:
'An open-source vector graphics editor, enabling the creation and editing of vector images.', 'An open-source vector graphics editor, enabling the creation and editing of vector images.',
logo: inkScapeLogo, logo: inkScapeLogo,
url: 'https://inkscape.org', url: 'https://inkscape.org'
enhanced: false
}, },
{ {
name: 'OBS', name: 'OBS',
@ -484,8 +442,7 @@ const tools: Tool[] = [
description: description:
'Open Broadcaster Software, a free and open-source tool for video recording and live streaming.', 'Open Broadcaster Software, a free and open-source tool for video recording and live streaming.',
logo: oBSLogo, logo: oBSLogo,
url: 'https://obsproject.com', url: 'https://obsproject.com'
enhanced: false
}, },
{ {
name: 'WireGuard', name: 'WireGuard',
@ -493,8 +450,7 @@ const tools: Tool[] = [
description: description:
'A modern VPN protocol that aims for simplicity and speed, facilitating secure connections.', 'A modern VPN protocol that aims for simplicity and speed, facilitating secure connections.',
logo: wireGuardLogo, logo: wireGuardLogo,
url: 'https://www.wireguard.com', url: 'https://www.wireguard.com'
enhanced: false
}, },
{ {
name: 'SwitchHosts', name: 'SwitchHosts',
@ -502,8 +458,7 @@ const tools: Tool[] = [
description: description:
'An App for managing and switching hosts files, allowing me to easily switch between different environments.', 'An App for managing and switching hosts files, allowing me to easily switch between different environments.',
logo: switchHostsLogo, logo: switchHostsLogo,
url: 'https://switchhosts.vercel.app/', url: 'https://switchhosts.vercel.app/'
enhanced: false
}, },
{ {
name: 'Slack', name: 'Slack',
@ -511,8 +466,7 @@ const tools: Tool[] = [
description: description:
'A collaboration hub that connects my work with the people I work with through channels, where communication and files are placed in one place.', 'A collaboration hub that connects my work with the people I work with through channels, where communication and files are placed in one place.',
logo: slackLogo, logo: slackLogo,
url: 'https://slack.com', url: 'https://slack.com'
enhanced: false
}, },
{ {
name: 'nmap', name: 'nmap',
@ -520,8 +474,7 @@ const tools: Tool[] = [
description: description:
'A security scanner used to discover hosts and services on a computer network, providing a detailed view of the network.', 'A security scanner used to discover hosts and services on a computer network, providing a detailed view of the network.',
logo: nmapLogo, logo: nmapLogo,
url: 'https://nmap.org', url: 'https://nmap.org'
enhanced: false
}, },
{ {
name: 'DBeaver', name: 'DBeaver',
@ -529,8 +482,7 @@ const tools: Tool[] = [
description: description:
'A universal database tool for developers and database administrators that supports all popular databases.', 'A universal database tool for developers and database administrators that supports all popular databases.',
logo: dBeaverLogo, logo: dBeaverLogo,
url: 'https://dbeaver.io', url: 'https://dbeaver.io'
enhanced: false
}, },
{ {
name: 'OpenTofu', name: 'OpenTofu',
@ -538,8 +490,7 @@ const tools: Tool[] = [
description: description:
'An open-source infrastructure as code tool that enables the automated creation, modification, and versioning of complex infrastructures.', 'An open-source infrastructure as code tool that enables the automated creation, modification, and versioning of complex infrastructures.',
logo: openTofuLogo, logo: openTofuLogo,
url: 'https://opentofu.org', url: 'https://opentofu.org'
enhanced: false
}, },
{ {
name: 'Terraform', name: 'Terraform',
@ -547,8 +498,7 @@ const tools: Tool[] = [
description: description:
'Terraform is infrastructure as code software tool that provides a consistent CLI workflow to manage hundreds of cloud services.', 'Terraform is infrastructure as code software tool that provides a consistent CLI workflow to manage hundreds of cloud services.',
logo: terraformLogo, logo: terraformLogo,
url: 'https://opentofu.org', url: 'https://opentofu.org'
enhanced: false
}, },
{ {
name: 'GitLens', name: 'GitLens',
@ -556,8 +506,7 @@ const tools: Tool[] = [
description: description:
'An extension for Visual Studio Code that supercharges the Git capabilities, providing advanced blame annotations, code lens, and more.', 'An extension for Visual Studio Code that supercharges the Git capabilities, providing advanced blame annotations, code lens, and more.',
logo: gitLensLogo, logo: gitLensLogo,
url: 'https://gitlens.amod.io', url: 'https://gitlens.amod.io'
enhanced: true
} }
]; ];

View file

@ -5,8 +5,8 @@
import { siteConfig } from '$lib/config/site'; import { siteConfig } from '$lib/config/site';
import { cn } from '$lib/utils'; import { cn } from '$lib/utils';
import catImg from '$lib/assets/root-cat.jpg?enhanced'; import catImg from '$lib/assets/root-cat.jpg';
import meImg from '$lib/assets/root-me.jpg?enhanced'; import meImg from '$lib/assets/root-me.jpg';
import { Cat, PersonStanding } from 'lucide-svelte'; import { Cat, PersonStanding } from 'lucide-svelte';
const images = [ const images = [

View file

@ -1,10 +1,9 @@
import { sveltekit } from '@sveltejs/kit/vite'; import { sveltekit } from '@sveltejs/kit/vite';
import { enhancedImages } from '@sveltejs/enhanced-img';
import { defineConfig } from 'vite'; import { defineConfig } from 'vite';
import fs from 'fs'; import fs from 'fs';
export default defineConfig({ export default defineConfig({
plugins: [base64(), enhancedImages(), rawFonts(['.woff']), sveltekit()], plugins: [base64(), rawFonts(['.woff']), sveltekit()],
define: { define: {
'import.meta.env.VERCEL_URL': JSON.stringify(process.env.VERCEL_URL), 'import.meta.env.VERCEL_URL': JSON.stringify(process.env.VERCEL_URL),
'import.meta.env.VERCEL_ENV': JSON.stringify(process.env.VERCEL_ENV) 'import.meta.env.VERCEL_ENV': JSON.stringify(process.env.VERCEL_ENV)