Personal website built with React, TanStack Start, Vite, and StyleX. It includes a homepage, MDX blog, and interactive Rule of Thumb articles.
bun install
npm run devVite is configured for http://127.0.0.1:5173. If that port belongs to another project, use a separate port rather than stopping its server:
npm run dev -- --port 5174 --strictPortUse npm run ... for website scripts. Bun is used for dependency installation; both bun.lock and package-lock.json are tracked. After dependency changes, synchronize the npm lockfile with npm install --package-lock-only --ignore-scripts for Cloudflare's npm installation step.
npm run lint
npm run typecheck
npm run test
npm run buildOxlint runs the default rules plus all generic anti-slop rules at error severity. Configuration lives in .oxlintrc.json; the vendored plugin, license, upstream revision, and local compatibility note live in tools/oxlint/anti-slop/. Keep oxlint and @oxlint/plugins pinned to the same version when upgrading.
Agent assets, the vendored plugin, and TanStack's generated route tree are excluded from application linting. Owned Storybook configuration remains checked. The vendored TypeScript source is included in typechecking. Effect rules are not enabled because the website has no direct Effect dependency.
Vitest uses jsdom. The test command allows an empty suite, but regression tests should be added for behavior changed during maintenance.
npm run buildTanStack Start prerenders discoverable routes as complete HTML in .output/public. React hydrates those pages for client-side navigation and interactions; static hosting does not need a runtime server. The Cloudflare preview command uses scripts/cloudflare-pages-preview.mjs when the Cloudflare build environment is detected.
npm run storybook
npm run build-storybookStories live in src/stories and use the same global theme and StyleX fallback styles as the website. The explicit *.stories.tsx glob keeps route MDX files in the TanStack Start pipeline.
src/routes/: file-based routes and their local components.src/routes/__root.tsxowns the root layout and development-only React Grab loader.src/components/: shared UI and article thumbnails.src/hooks/: shared browser and interaction hooks.src/content/blog/: MDX articles.src/data/guidelines.ts: Rule of Thumb metadata.src/styles.css: global theme, typography, animation, and non-atomic selectors.src/stylex-utilities.ts,src/stylex.ts, andsrc/stylex-fallback.css: compiled utility bridge and fallback styles.src/routeTree.gen.ts: generated by TanStack; do not edit by hand.
See CODE_STRUCTURE.md, STYLING_GUIDELINES.md, and .hermes.md for repository conventions. The interactive article demos are site content, not disposable starter examples.