Author SHA1 Message Date
dependabot[bot] bd51676ac8 Bump vite from 8.1.5 to 8.2.2
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 8.1.5 to 8.2.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.2.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 8.2.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
2026-08-29 14:32:39 +00:00
djkotowski c0be5deab6 Gate Pages deploy on ci-test passing (#238)
A merge to main could break the app even though the PR check ran
ci-test separately; deploy previously fired on push regardless of
CI outcome. Trigger deploy via workflow_run on ci-test completion
instead, and skip the build job unless ci-test concluded success,
so a broken main no longer publishes to Pages.
2026-07-21 09:43:45 -05:00
djkotowski f210373c3e Fix Pages deploy concurrency and tag successful deploys (#237)
* Use safe concurrency pattern for Pages deploys

Switch to the group: pages, cancel-in-progress: false pattern GitHub
recommends for deploy-pages, so a superseded run is skipped before it
starts rather than killed mid-deploy, which can leave the Pages
deployment stuck in progress.

* Tag each successful Pages deploy

There is currently no record of which commits were actually deployed.
Tag the deployed commit as deploy-YYYY-MM-DD-<sha> right after
deploy-pages succeeds, giving a lightweight, always-unique history of
production deploys without introducing a formal versioning/release
scheme.
2026-07-18 16:01:31 -05:00
dependabot[bot]dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>djkotowski
4103db7e2f Bump svelte from 5.56.5 to 5.56.6 (#235)
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.56.5 to 5.56.6.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/[email protected]/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.56.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dan Kotowski <[email protected]>
2026-07-18 15:53:21 -05:00
djkotowskiandClaude Sonnet 5 e306974fd3 Add resumé link to experience section (#236)
* Switch Dependabot checks from daily to weekly

Reduces PR noise by checking for npm and github-actions updates
weekly instead of daily.

Co-Authored-By: Claude Sonnet 5 <[email protected]>

* Add resumé link to experience section

Point visitors to a full resumé for more detail, and add rel support
to Link so external references can opt out of link equity.

---------

Co-authored-by: Claude Sonnet 5 <[email protected]>
2026-07-18 15:53:00 -05:00
djkotowskiandClaude Sonnet 5 c083da6ff8 Switch Dependabot checks from daily to weekly (#234)
Reduces PR noise by checking for npm and github-actions updates
weekly instead of daily.

Co-authored-by: Claude Sonnet 5 <[email protected]>
2026-07-18 15:42:37 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> fbae3a0951 Bump @tailwindcss/vite from 4.3.2 to 4.3.3 (#233)
Bumps [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite) from 4.3.2 to 4.3.3.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.3/packages/@tailwindcss-vite)

---
updated-dependencies:
- dependency-name: "@tailwindcss/vite"
  dependency-version: 4.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-18 15:37:02 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 071e2eae57 Bump svelte-check from 4.7.2 to 4.7.3 (#232)
Bumps [svelte-check](https://github.com/sveltejs/language-tools) from 4.7.2 to 4.7.3.
- [Release notes](https://github.com/sveltejs/language-tools/releases)
- [Commits](https://github.com/sveltejs/language-tools/compare/[email protected]@4.7.3)

---
updated-dependencies:
- dependency-name: svelte-check
  dependency-version: 4.7.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-18 15:35:19 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> d21f2ad3ea Bump tailwindcss from 4.3.2 to 4.3.3 (#231)
Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) from 4.3.2 to 4.3.3.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.3/packages/tailwindcss)

---
updated-dependencies:
- dependency-name: tailwindcss
  dependency-version: 4.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-18 15:34:45 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> f2fd6ee9bd Bump vite from 8.1.4 to 8.1.5 (#230)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 8.1.4 to 8.1.5.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.1.5/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 8.1.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-18 15:34:33 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 4fb3aeca62 Bump svelte from 5.56.4 to 5.56.5 (#229)
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.56.4 to 5.56.5.
- [Release notes](https://github.com/sveltejs/svelte/releases)
- [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/commits/[email protected]/packages/svelte)

---
updated-dependencies:
- dependency-name: svelte
  dependency-version: 5.56.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-18 15:19:44 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 254cee8603 Bump pnpm/action-setup from 4 to 5 (#228)
Bumps [pnpm/action-setup](https://github.com/pnpm/action-setup) from 4 to 5.
- [Release notes](https://github.com/pnpm/action-setup/releases)
- [Commits](https://github.com/pnpm/action-setup/compare/v4...v5)

---
updated-dependencies:
- dependency-name: pnpm/action-setup
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-18 15:19:25 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> dff8918fb2 Bump actions/setup-node from 4 to 7 (#227)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 7.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v7)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-18 15:18:14 -05:00
djkotowski 887affa4a3 Ignore Claude local files and enforce pnpm (#226)
* Ignore Claude local files

* Prohibit use of non-pnpm package managers

* Ensure EOF newline
2026-07-14 00:53:48 -05:00
djkotowskiandClaude Opus 4.8 5429e68c4e Bump typescript from 5.9.3 to 6.0.3 (#225)
Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
2026-07-14 00:40:58 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 47150c300b Bump @sveltejs/vite-plugin-svelte from 5.1.1 to 7.2.0 (#221)
Bumps [@sveltejs/vite-plugin-svelte](https://github.com/sveltejs/vite-plugin-svelte/tree/HEAD/packages/vite-plugin-svelte) from 5.1.1 to 7.2.0.
- [Release notes](https://github.com/sveltejs/vite-plugin-svelte/releases)
- [Changelog](https://github.com/sveltejs/vite-plugin-svelte/blob/main/packages/vite-plugin-svelte/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/vite-plugin-svelte/commits/@sveltejs/[email protected]/packages/vite-plugin-svelte)

---
updated-dependencies:
- dependency-name: "@sveltejs/vite-plugin-svelte"
  dependency-version: 7.2.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 00:29:21 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 181ef6a05f Bump actions/upload-pages-artifact from 3.0.1 to 5.0.0 (#218)
Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 3.0.1 to 5.0.0.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v3.0.1...v5.0.0)

---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 00:27:48 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> b85a75fe28 Bump actions/checkout from 4 to 7 (#217)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 00:27:40 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> dc90653f5d Bump actions/deploy-pages from 4 to 5 (#219)
Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages) from 4 to 5.
- [Release notes](https://github.com/actions/deploy-pages/releases)
- [Commits](https://github.com/actions/deploy-pages/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/deploy-pages
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 00:27:31 -05:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 26e0e9b035 Bump vite from 6.4.3 to 8.1.4 (#222)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.4.3 to 8.1.4.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.1.4/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 8.1.4
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-14 00:27:14 -05:00
djkotowskiandClaude Opus 4.8 0442462b74 Name ci-test job "CI" for a searchable status check (#224)
Give the check job an explicit name so branch protection rules can
reference a stable, searchable "CI" status check context instead of
the generic job-key-derived name.

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
2026-07-14 00:19:35 -05:00
djkotowskiandClaude Opus 4.8 bbd34d027d Remove stray .yarn leftover from pnpm migration (#223)
The pnpm migration left a tracked .yarn/install-state.gz. pnpm doesn't
use the .yarn directory, so remove it.

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
2026-07-14 00:15:24 -05:00
djkotowskiandClaude Opus 4.8 44b07d4682 Add Playwright MCP server config (#215)
Adds a project-scoped .mcp.json registering the Playwright MCP server
so browser automation tooling is available to anyone using Claude Code
in this repo.

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
2026-07-13 02:33:44 -05:00
djkotowskiandClaude Opus 4.8 2d14d87a83 Switch package manager from Yarn to pnpm (#214)
* Switch package manager from Yarn to pnpm

Replace Yarn 3 (Berry) with pnpm 11.12.0 (latest stable):

- Pin packageManager to [email protected].0; add pnpm-lock.yaml
- Remove yarn.lock, .yarnrc.yml, and the bundled .yarn/ release
- Update CI (ci-test, deploy) to use pnpm/action-setup + setup-node
  pnpm cache, with `pnpm install --frozen-lockfile` and pnpm scripts
- Switch Husky pre-commit hook to `pnpm check`
- Add pnpm-workspace.yaml allowlisting esbuild's build script, which
  pnpm 11 otherwise blocks with a hard error on install
- Update CLAUDE.md guidance and drop yarn-specific .gitignore entries

Verified: pnpm install --frozen-lockfile, pnpm check, and pnpm build
all pass locally.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>

* CI: read Node version from .tool-versions for pnpm 11 compat

pnpm 11.12.0 requires Node >=22.13, but the workflows pinned
node-version: '20' (20.20.2), failing install. Point setup-node at
.tool-versions (22.14.0) so CI and local dev share one source of truth.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
2026-07-13 02:30:39 -05:00
djkotowskiandClaude Opus 4.8 b8d1c61dbf Add CLAUDE.md with codebase guidance (#213)
Document build/check commands, the Svelte 5 + Vite + Tailwind v4
architecture, project conventions, and the GitHub Pages deploy flow
for future Claude Code sessions.

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
2026-07-13 02:06:17 -05:00
djkotowski 1be3d1a9bd Update SkillsSection.svelte with AI tools (#212) 2026-06-24 14:08:56 -05:00
djkotowski b10a28082e Update location in HeaderSection.svelte 2026-06-24 14:04:01 -05:00
djkotowski 8b39b38e73 Update Svelte 2025-04-02 12:56:14 -05:00
djkotowski 8feb891b12 Update TailwindCSS 2025-04-02 12:54:52 -05:00
djkotowski 0b9e6699ef Update vite 2025-04-02 12:53:45 -05:00
djkotowski c021b83fe2 Add .tool-versions 2025-04-02 12:52:32 -05:00
djkotowski 0d5cbf3521 Upgrade Vite 2025-03-16 01:02:37 -05:00
djkotowski 2059045cea Upgrade Svelte and related dependencies 2025-03-16 00:58:58 -05:00
djkotowski e522c13d89 Upgrade TailwindCSS 2025-03-16 00:58:07 -05:00
djkotowski 64ff8259ec Add App runner for WebStorm 2025-03-16 00:55:37 -05:00
djkotowski 34ba2d784b Upgrade Vite 2025-03-11 00:32:40 -05:00
djkotowski fc0d884cce Update Svelte and other dependencies 2025-03-11 00:26:45 -05:00
djkotowski 1e652d9818 Update location 2025-03-11 00:08:02 -05:00
dependabot[bot] 8d4c469720 Bump vite from 6.0.2 to 6.0.11
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.0.2 to 6.0.11.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.0.11/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
2025-01-22 18:03:38 -06:00
dependabot[bot] 7989809fa5 Bump tslib from 2.7.0 to 2.8.1
Bumps [tslib](https://github.com/Microsoft/tslib) from 2.7.0 to 2.8.1.
- [Release notes](https://github.com/Microsoft/tslib/releases)
- [Commits](https://github.com/Microsoft/tslib/compare/v2.7.0...v2.8.1)

---
updated-dependencies:
- dependency-name: tslib
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
2025-01-22 18:01:01 -06:00
dependabot[bot] 2a94e8a705 Bump husky from 9.1.5 to 9.1.7
Bumps [husky](https://github.com/typicode/husky) from 9.1.5 to 9.1.7.
- [Release notes](https://github.com/typicode/husky/releases)
- [Commits](https://github.com/typicode/husky/compare/v9.1.5...v9.1.7)

---
updated-dependencies:
- dependency-name: husky
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
2025-01-22 17:59:17 -06:00
27 changed files with 1235 additions and 3434 deletions
+3
View File
@@ -0,0 +1,3 @@
worktrees/
*.local.*
+2 -2
View File
@@ -5,11 +5,11 @@ updates:
reviewers: reviewers:
- "djkotowski" - "djkotowski"
schedule: schedule:
interval: "daily" interval: "weekly"
versioning-strategy: "increase-if-necessary" versioning-strategy: "increase-if-necessary"
- package-ecosystem: "github-actions" - package-ecosystem: "github-actions"
directory: "/" directory: "/"
reviewers: reviewers:
- "djkotowski" - "djkotowski"
schedule: schedule:
interval: "daily" interval: "weekly"
+9 -7
View File
@@ -10,17 +10,19 @@ concurrency:
cancel-in-progress: true cancel-in-progress: true
jobs: jobs:
check: check:
name: CI
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v7
- name: Setup pnpm
uses: pnpm/action-setup@v5
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v7
with: with:
node-version: '20' node-version-file: '.tool-versions'
cache: 'pnpm'
- name: Install Dependencies - name: Install Dependencies
run: | run: pnpm install --frozen-lockfile
npm install -g yarn
yarn install
- name: Lint solution - name: Lint solution
run: yarn check run: pnpm check
+34 -16
View File
@@ -1,30 +1,35 @@
name: deploy name: deploy
run-name: "${{ github.actor }} is deploying ${{ github.sha }}" run-name: "${{ github.actor }} is deploying ${{ github.event.workflow_run.head_sha }}"
on: on:
push: workflow_run:
branches: workflows: ['ci-test']
- 'main' types: [completed]
branches: ['main']
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: pages
cancel-in-progress: true cancel-in-progress: false
jobs: jobs:
build: build:
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v7
- name: Setup Node.js
uses: actions/setup-node@v4
with: with:
node-version: '20' ref: ${{ github.event.workflow_run.head_sha }}
- name: Setup pnpm
uses: pnpm/action-setup@v5
- name: Setup Node.js
uses: actions/setup-node@v7
with:
node-version-file: '.tool-versions'
cache: 'pnpm'
- name: Install Dependencies - name: Install Dependencies
run: | run: pnpm install --frozen-lockfile
npm install -g yarn
yarn install
- name: Build solution - name: Build solution
run: yarn build run: pnpm build
- name: Archive artifacts - name: Archive artifacts
uses: actions/upload-pages-artifact@v3.0.1 uses: actions/upload-pages-artifact@v5.0.0
with: with:
path: dist/ path: dist/
deploy: deploy:
@@ -32,11 +37,24 @@ jobs:
permissions: permissions:
pages: write pages: write
id-token: write id-token: write
contents: write
environment: environment:
name: github-pages name: github-pages
url: ${{ steps.deployment.outputs.page_url }} url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout
uses: actions/checkout@v7
with:
ref: ${{ github.event.workflow_run.head_sha }}
- name: Deploy to GitHub Pages - name: Deploy to GitHub Pages
id: deployment id: deployment
uses: actions/deploy-pages@v4 uses: actions/deploy-pages@v5
- name: Tag deploy
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
sha="${{ github.event.workflow_run.head_sha }}"
tag="deploy-$(date +%Y-%m-%d)-${sha::7}"
git tag "$tag" "$sha"
git push origin "$tag"
-11
View File
@@ -2,8 +2,6 @@
logs logs
*.log *.log
npm-debug.log* npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log* pnpm-debug.log*
lerna-debug.log* lerna-debug.log*
@@ -22,12 +20,3 @@ dist-ssr
*.njsproj *.njsproj
*.sln *.sln
*.sw? *.sw?
# Yarn 2+
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
+1 -1
View File
@@ -1 +1 @@
yarn check pnpm check
+12
View File
@@ -0,0 +1,12 @@
{
"mcpServers": {
"playwright": {
"type": "stdio",
"command": "npx",
"args": [
"@playwright/mcp@latest"
],
"env": {}
}
}
}
+12
View File
@@ -0,0 +1,12 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="App" type="js.build_tools.npm">
<package-json value="$PROJECT_DIR$/package.json" />
<command value="run" />
<scripts>
<script value="dev" />
</scripts>
<node-interpreter value="project" />
<envs />
<method v="2" />
</configuration>
</component>
+1
View File
@@ -0,0 +1 @@
nodejs 22.14.0
-873
View File
File diff suppressed because one or more lines are too long
-2
View File
@@ -1,2 +0,0 @@
nodeLinker: node-modules
yarnPath: .yarn/releases/yarn-3.5.1.cjs
+35
View File
@@ -0,0 +1,35 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Commands
This project uses **pnpm** — pinned via `packageManager` in `package.json` (enable it with `corepack enable`). Use `pnpm`, not `npm` or `yarn`.
- `pnpm dev` — start the Vite dev server
- `pnpm build` — production build to `dist/`
- `pnpm preview` — serve the production build locally
- `pnpm check` — type-check with `svelte-check` (the only "lint"/CI gate; there is no ESLint/Prettier and no test suite)
`pnpm check` runs automatically on `git commit` via the Husky `pre-commit` hook, and on every PR / push to `main` via the `ci-test` workflow. There are no unit tests, so `pnpm check` is the check to run before considering a change done.
## Architecture
A single-page, statically-generated personal résumé site — no router, no backend, no data fetching. Everything is hardcoded content in Svelte components.
- **Entry:** `src/main.ts` mounts `App.svelte` into `#app` (see `index.html`) using Svelte 5's `mount()`.
- **Composition:** `App.svelte` stacks four page **sections** from `src/lib/`: `HeaderSection`, `SkillsSection`, `ExpSection`, `ContactSection`. Adding/reordering page content happens here.
- **Reusable primitives** live in `src/lib/components/` (`Header`, `Hero`, `Link`) and `src/lib/icons/`. Sections compose these; primitives hold no page-specific content.
- Résumé text (skills, experience, contact info) is written inline in the section components — edit the relevant `*Section.svelte` file to change site content.
## Conventions
- **Svelte 5 runes syntax** throughout: props via `let { ... } = $props()`, slots via `{@render children?.()}`. Do not use legacy `export let` / `<slot>`.
- Prefer `<script lang="ts">` with a typed props object for new components (see `components/Link.svelte`, `components/Hero.svelte`). Some older section files use plain `<script>` — match the file you are editing.
- **Tailwind CSS v4** with **no config file**. It is enabled via the `@tailwindcss/vite` plugin and `@import "tailwindcss"` in `src/app.css`; customize through CSS, not a `tailwind.config.js`. `tailwind-merge` is available for conditional class composition.
- Styling is Tailwind utility classes in markup; the dark theme base (`bg-gray-950 text-white`) is set on `<body>` in `index.html`.
- `checkJs` is on and `.js`/`.svelte` files are type-checked — keep JSDoc/types valid so `pnpm check` passes.
## Deploy
Pushing to `main` triggers the `deploy` workflow: `pnpm build` → upload `dist/` → GitHub Pages (https://dankotowski.dev). CI reads its Node version from `.tool-versions` (pinned to 22.14.0), matching local dev — pnpm 11 requires Node >=22.13.
+11 -11
View File
@@ -7,25 +7,25 @@
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
"build": "vite build", "build": "vite build",
"preinstall": "npx only-allow pnpm",
"preview": "vite preview", "preview": "vite preview",
"check": "svelte-check --tsconfig ./tsconfig.json", "check": "svelte-check --tsconfig ./tsconfig.json",
"prepare": "husky" "prepare": "husky"
}, },
"devDependencies": { "devDependencies": {
"@sveltejs/vite-plugin-svelte": "^3.1.2", "@sveltejs/vite-plugin-svelte": "^7.2.0",
"@tsconfig/svelte": "^4.0.1", "@tailwindcss/vite": "^4.1.1",
"autoprefixer": "^10.4.14", "@tsconfig/svelte": "^5.0.4",
"husky": "^9.0.11", "husky": "^9.0.11",
"postcss": "^8.4.39", "svelte": "^5.25.6",
"svelte": "^3.58.0", "svelte-check": "^4.1.5",
"svelte-check": "^4.1.4", "tailwindcss": "^4.1.1",
"tailwindcss": "^3.3.2",
"tslib": "^2.5.0", "tslib": "^2.5.0",
"typescript": "^5.0.4", "typescript": "^6.0.3",
"vite": "^6.0.2" "vite": "^8.1.4"
}, },
"packageManager": "[email protected]", "packageManager": "[email protected]",
"dependencies": { "dependencies": {
"tailwind-merge": "^2.5.5" "tailwind-merge": "^3.1.0"
} }
} }
+1062
View File
File diff suppressed because it is too large Load Diff
+5
View File
@@ -0,0 +1,5 @@
# esbuild ships its native binary via an optional dependency; its postinstall
# is only a launcher optimization. Allowed so pnpm 11 doesn't block install on
# the undecided build script.
allowBuilds:
esbuild: true
-6
View File
@@ -1,6 +0,0 @@
export default {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}
+1 -3
View File
@@ -1,3 +1 @@
@tailwind base; @import "tailwindcss";
@tailwind components;
@tailwind utilities;
+4
View File
@@ -103,4 +103,8 @@
<p>C#, ASP.NET MVC 3, Microsoft SQL Server, jQuery, Manhattan SCALE</p> <p>C#, ASP.NET MVC 3, Microsoft SQL Server, jQuery, Manhattan SCALE</p>
</li> </li>
</ul> </ul>
<p class="text-center pt-10">
Please see my <Link href="https://drive.proton.me/urls/2AY1WCCC54#BcxvDzVu1IM8" target="_blank" rel="nofollow">resumé</Link> for more details.
</p>
</section> </section>
+1 -1
View File
@@ -13,7 +13,7 @@ import Hero from "./components/Hero.svelte";
Senior web software engineer with strong technical and interpersonal skills Senior web software engineer with strong technical and interpersonal skills
</p> </p>
<p class="mt-4 text-lg lg:text-xl text-gray-300"> <p class="mt-4 text-lg lg:text-xl text-gray-300">
Based in Chicago, Illinois Based in New Braunfels, Texas
</p> </p>
</Hero> </Hero>
</div> </div>
+21 -13
View File
@@ -1,5 +1,5 @@
<script> <script>
import Header from "./components/Header.svelte"; import Header from './components/Header.svelte'
</script> </script>
<section class="container mx-auto px-4"> <section class="container mx-auto px-4">
@@ -7,18 +7,26 @@
<div class="content-center lg:text-lg"> <div class="content-center lg:text-lg">
<table class="mx-auto sm:whitespace-nowrap"> <table class="mx-auto sm:whitespace-nowrap">
<tr> <tbody>
<th class="block sm:table-cell font-bold w-auto pr-3 lg:pr-5 text-left">Backend:</th> <tr>
<td class="block pb-4 sm:pb-0 sm:table-cell text-left">Ruby, Ruby on Rails, Node.js, Sinatra</td> <th class="block sm:table-cell font-bold w-auto pr-3 lg:pr-5 text-left">Backend:</th>
</tr> <td class="block pb-4 sm:pb-0 sm:table-cell text-left">Ruby, Ruby on Rails, Node.js, Sinatra</td>
<tr> </tr>
<th class="block sm:table-cell font-bold w-auto pr-3 lg:pr-5 text-left">Frontend:</th> <tr>
<td class="block pb-4 sm:pb-0 sm:table-cell text-left">ES6, TypeScript, React, Redux, CSS/Sass, Webpack, Vite</td> <th class="block sm:table-cell font-bold w-auto pr-3 lg:pr-5 text-left">Frontend:</th>
</tr> <td class="block pb-4 sm:pb-0 sm:table-cell text-left">ES6, TypeScript, React, Redux, CSS/Sass, Vite,
<tr> Webpack
<th class="block sm:table-cell font-bold w-auto pr-3 lg:pr-5 text-left">Data:</th> </td>
<td class="block pb-4 sm:pb-0 sm:table-cell text-left">PostgreSQL, MySQL, Redis, Elasticsearch</td> </tr>
</tr> <tr>
<th class="block sm:table-cell font-bold w-auto pr-3 lg:pr-5 text-left">Data:</th>
<td class="block pb-4 sm:pb-0 sm:table-cell text-left">PostgreSQL, MySQL, Redis, Elasticsearch</td>
</tr>
<tr>
<th class="block sm:table-cell font-bold w-auto pr-3 lg:pr-5 text-left">AI Tools:</th>
<td class="block pb-4 sm:pb-0 sm:table-cell text-left">Claude Code, Github Copilot</td>
</tr>
</tbody>
</table> </table>
</div> </div>
</section> </section>
+5 -1
View File
@@ -1,3 +1,7 @@
<script lang="ts">
let { children } = $props();
</script>
<h1 class="text-center text-white text-3xl font-bold mt-20 mb-10"> <h1 class="text-center text-white text-3xl font-bold mt-20 mb-10">
<slot /> {@render children?.()}
</h1> </h1>
+8 -4
View File
@@ -1,13 +1,17 @@
<script lang="ts"> <script lang="ts">
export let title: string; type Props = {
export let imageUrl: string; children?: any
export let imageAlt: string; title: string
imageUrl: string
imageAlt: string
};
let { children, title, imageUrl, imageAlt }: Props = $props()
</script> </script>
<div class="px-6 py-1 pb-10 sm:pt-32 sm:pb-24 lg:px-8"> <div class="px-6 py-1 pb-10 sm:pt-32 sm:pb-24 lg:px-8">
<div class="mx-auto max-w-2xl text-center"> <div class="mx-auto max-w-2xl text-center">
<img class="mx-auto mb-6 w-32 h-32 lg:w-48 lg:h-48 rounded-full" src={imageUrl} alt={imageAlt} /> <img class="mx-auto mb-6 w-32 h-32 lg:w-48 lg:h-48 rounded-full" src={imageUrl} alt={imageAlt} />
<h2 class="text-4xl lg:text-6xl font-bold tracking-tight text-gray-100 sm:text-6x1">{title}</h2> <h2 class="text-4xl lg:text-6xl font-bold tracking-tight text-gray-100 sm:text-6x1">{title}</h2>
<slot /> {@render children?.()}
</div> </div>
</div> </div>
+3 -4
View File
@@ -1,10 +1,9 @@
<script lang="ts"> <script lang="ts">
import type { HTMLAnchorAttributes } from 'svelte/elements' import type { HTMLAnchorAttributes } from 'svelte/elements'
type LinkProps = { children: any, href: string; target: HTMLAnchorAttributes['target']; title?: HTMLAnchorAttributes['title']; rel?: HTMLAnchorAttributes['rel'] }
export let href: string let { children, href, target, title, rel }: LinkProps = $props()
export let target: HTMLAnchorAttributes['target']
export let title: HTMLAnchorAttributes['title'] = undefined
</script> </script>
<a class="text-cyan-200 hover:text-cyan-400 hover:border-b border-dotted" {href} {target} {title}><slot /></a> <a class="text-cyan-200 hover:text-cyan-400 hover:border-b border-dotted" {href} {target} {title} {rel}>{@render children?.()}</a>
+3 -2
View File
@@ -1,8 +1,9 @@
import { mount } from 'svelte'
import './app.css' import './app.css'
import App from './App.svelte' import App from './App.svelte'
const app = new App({ const app = mount(App, {
target: document.getElementById('app'), target: document.getElementById('app')!,
}) })
export default app export default app
-12
View File
@@ -1,12 +0,0 @@
/** @type {import('tailwindcss').Config} */
export default {
content: [
'./index.html',
'./src/**/*.svelte'
],
theme: {
extend: {},
},
plugins: [],
}
+2 -1
View File
@@ -1,7 +1,8 @@
import { defineConfig } from 'vite' import { defineConfig } from 'vite'
import { svelte } from '@sveltejs/vite-plugin-svelte' import { svelte } from '@sveltejs/vite-plugin-svelte'
import tailwindcss from '@tailwindcss/vite'
// https://vitejs.dev/config/ // https://vitejs.dev/config/
export default defineConfig({ export default defineConfig({
plugins: [svelte()], plugins: [svelte(), tailwindcss()],
}) })
-2464
View File
File diff suppressed because it is too large Load Diff