heartwood every commit a ring
2.4 KB raw
# isaacbythewood.com

## What is this project?

Personal portfolio website for Isaac Bythewood, a Senior Solutions Architect.
A visually rich, animation-heavy single-page-style site built with Next.js.

The site lives at https://isaacbythewood.com/.

## Technical notes

- Next.js 16 with React 19, file-based routing under `pages/`.
- Styling uses CSS Modules (`styles/components/` and `styles/pages/`).
  Global CSS variables are defined in `styles/globals.css`.
- Path alias: `@styles/*` maps to `styles/*` (see `jsconfig.json`).
- Site-wide theme config (colors, breakpoints, animation timing) lives in
  `site.config.js`.
- Package manager is bun. Use `bun install` with frozen lockfile.
- `bun start` runs the dev server on port 8000.
- `bun run next:build` builds for production.
- Docker deployment via `oven/bun:1-alpine` image. See `Dockerfile` and
  `docker-compose.yml`. The container publishes no host ports; Caddy
  reverse-proxies to it by container name on the shared `bythewood-edge`
  Docker network.
- No test framework is configured.
- No ESLint or Prettier configuration.

## Development tools

- Playwright MCP is available for browser testing. Use it to take
  screenshots and verify visual changes after modifying styles,
  templates, or content. Start the dev server first with `bun start`.
- Always clean up screenshot files (*.png) after reviewing them. Delete
  them once you have confirmed the result to avoid clutter in the project
  directory.

## Project structure

- `pages/` - Next.js pages: index, about, code, art, contact
- `components/` - React components: menu, sidebar, loader, mouse (custom
  cursor), page wrapper, grid overlay, and canvas animations
  (constellations, synthwave, retrostars)
- `styles/` - CSS Modules organized by components and pages
- `public/` - Static assets (images, PDFs, manifest, sitemap, service worker)
- `site.config.js` - Theme configuration (colors, breakpoints, timing)
- `resume/` - Markdown-based resume. `content.md` holds the copy,
  `template.html` the layout, and `generate.js` (run via `bun run resume`)
  renders it using `marked` + `gray-matter`.

## Design philosophy

- Dark aesthetic with primary color #20232e, blue #0e3ff4, purple #842bff.
- Heavy use of CSS animations and transitions (250ms transitions, 1500ms
  animations with ease-in-out).
- Custom cursor, page transition loader, background grid overlay.
- Responsive with mobile and tablet breakpoints.