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]>
2.6 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Commands
This project uses Yarn 3 (Berry) — pinned via packageManager in package.json. Use yarn, not npm.
yarn dev— start the Vite dev serveryarn build— production build todist/yarn preview— serve the production build locallyyarn check— type-check withsvelte-check(the only "lint"/CI gate; there is no ESLint/Prettier and no test suite)
yarn 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 yarn 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.tsmountsApp.svelteinto#app(seeindex.html) using Svelte 5'smount(). - Composition:
App.sveltestacks four page sections fromsrc/lib/:HeaderSection,SkillsSection,ExpSection,ContactSection. Adding/reordering page content happens here. - Reusable primitives live in
src/lib/components/(Header,Hero,Link) andsrc/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.sveltefile to change site content.
Conventions
- Svelte 5 runes syntax throughout: props via
let { ... } = $props(), slots via{@render children?.()}. Do not use legacyexport let/<slot>. - Prefer
<script lang="ts">with a typed props object for new components (seecomponents/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/viteplugin and@import "tailwindcss"insrc/app.css; customize through CSS, not atailwind.config.js.tailwind-mergeis 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>inindex.html. checkJsis on and.js/.sveltefiles are type-checked — keep JSDoc/types valid soyarn checkpasses.
Deploy
Pushing to main triggers the deploy workflow: yarn build → upload dist/ → GitHub Pages (https://dankotowski.dev). Note CI uses Node 20, while local dev is pinned to Node 22.14.0 in .tool-versions.