Skip to content

feat(home): sectioned static front page with games and a Nuxt Content blog - #236

Merged
kashalls merged 3 commits into
mainfrom
feat/game-cards-next
Oct 5, 2026
Merged

kashalls merged 3 commits into
mainfrom
feat/game-cards-next

Conversation

@kashalls

@kashalls kashalls commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

Stacked on #235 (base feat/game-cards). Once #235 merges, retarget this to main.

Summary

Front page

  • Static grid instead of draggable windows. Removes GSAP Draggable, the window registry/saved layout, window controls (min/max/close), the Dock, the Windows menu and the reset-layout button. Panels are plain titled cards.
  • Lenis removed (native scrolling); gsap and lenis dependencies dropped.
  • Proximity glow: a purple border highlight that follows the cursor across nearby cards (mouse only).
  • Sections: About / Writing / Live / Games, with a bottom-bar nav that scrolls to each and highlights the one in view.
  • Content: "Me" placeholder removed; location and certifications folded into Hello There. Technologies adds OpenShift, Talos, Podman, Elixir (learning) and an Artificial Intelligence group (Claude, Devin), and strikes through retired tech (Wordpress/PHP, Rancher, Java, C/C++) with a "no longer work with these" tooltip.
  • Games: WoW and Overwatch cards move to the front page as UiPanels (no coloured accent stripe), side by side from 2xl; /games is removed.

Blog (Nuxt Content)

  • @nuxt/content 3.16 with a blog collection: content/blog/<slug>.md with title, description, date, tags, draft.
  • /blog lists posts with UBlogPosts/UBlogPost; /blog/<slug> renders with ContentRenderer. Both prerender (link crawling), including OG images.
  • Front page "Latest Posts" and per-topic post counts read the collection.
  • Includes a starter hello-world.md: replace or set draft: true before shipping.

Discord card

  • Banner sized to Discord's banner shape (3:1, max 160px) instead of a fixed 96px that cropped most of it in the wider layout; requests the 1024px banner.

Deployment notes

  • SQLite: Nuxt Content is configured with sqliteConnector: 'native' (Node's built-in node:sqlite), so the distroless runtime needs no native addon.
  • Dockerfile: the build stage now copies Node 22 in from node:22-slim. Bun doesn't implement node:sqlite, and building under Bun would bake a bun:sqlite adapter into the Node server. With node on PATH, bun run build runs the nuxt CLI under Node. Not verified with an actual Docker build (no Docker locally); verified the equivalent locally: the built server references only node:sqlite and serves /blog, posts, and runtime DB queries (unknown post → 404).
  • Fonts fix: @nuxt/fonts assets.prefix was 'public/_fonts/', so every Google font (Inter, Cinzel, Teko, Caveat) 404'd in production builds and fell back to system fonts. Now '/_webfonts/': using '/_fonts/' would let the @nuxt/fonts dev handler shadow the local PP Neue Machina files in public/_fonts/ under nuxt dev. This also affects feat(games): add games page with wow and overwatch cards #235's game-card fonts, so they're only correct once this lands.
  • Lockfiles: bun.lockb is updated (it's what the Dockerfile and builds use). package-lock.json only drops gsap/lenis; it does not include @nuxt/content, since regenerating it re-resolves hundreds of unrelated packages and nothing in CI or the Dockerfile reads it.

Testing

  • bun run build passes; 14 routes prerendered including /blog and /blog/hello-world.
  • Production server (node .output/server/index.mjs): /, /blog, /blog/hello-world 200, unknown post 404, no failed requests; Inter/Cinzel/Teko .woff2 served 200.
  • Browser checks at desktop/mobile/ultrawide: section nav scrolls and tracks, game cards side by side from 1536px with equal heights, drawers expand, Technologies tooltip, Discord banner full at 3:1. No console errors or hydration warnings (aside from local CORS on third-party APIs).

@kashalls
kashalls added this pull request to stack #238 October 5, 2026 02:58
@kashalls
kashalls force-pushed the feat/game-cards-next branch from 1ff0b7d to daa35c8 Compare October 5, 2026 03:17
Base automatically changed from feat/game-cards to main October 5, 2026 03:19
…ource

- Size the banner box to Discord's banner shape (3:1, capped at 160px)
  instead of a fixed 96px height, which cropped most of the image once
  the card got wider in the new layout.
- Request the 1024px banner so it stays sharp in wide panels.
- The profile now comes from juno (bot-safe user object), not the dstn
  proxy, so update the comment.

Signed-off-by: Jordan Jones <git@svcs.ok8.sh>
… blog

Front page
- Replace the draggable window desktop with a static grid: remove GSAP
  Draggable, the window registry and saved layout, window controls,
  Dock, Windows menu and reset-layout button. Panels are plain titled
  cards.
- Remove Lenis (native scrolling) and the now-unused gsap and lenis
  dependencies.
- Add a proximity glow: a purple border highlight that follows the
  cursor across nearby cards (mouse only).
- Organise the page into About / Writing / Live / Games sections, with a
  bottom-bar nav that scrolls to each and tracks the one in view.
- Remove the "Me" placeholder; fold location and certifications into
  Hello There; Technologies gains OpenShift, Talos, Podman, Elixir
  (learning) and an Artificial Intelligence group, and strikes through
  retired tech with a tooltip.
- Move the WoW and Overwatch cards to the front page as UiPanels (no
  accent stripe), side by side from 2xl; remove the /games page.

Blog
- Add @nuxt/content with a blog collection (content/blog/*.md: title,
  description, date, tags, draft), /blog via UBlogPosts and
  /blog/<slug> via ContentRenderer, crawled for prerendering.
- Latest Posts and topic post counts on the front page read the
  collection.
- Use Node's built-in node:sqlite connector, and copy Node 22 into the
  bun build stage: Bun lacks node:sqlite, so building under it would
  bake a bun:sqlite adapter into the Node server.

Fixes
- @nuxt/fonts prefix was 'public/_fonts/', so Google fonts (Inter,
  Cinzel, Teko, Caveat) 404'd in production builds; use '/_fonts/'.
- Show post dates on the day written instead of shifting a day west
  of UTC.

Signed-off-by: Jordan Jones <git@svcs.ok8.sh>
With the prefix at /_fonts/, @nuxt/fonts' dev handler owns that path and shadows the local PP Neue Machina files in public/_fonts/, so they 404 under nuxt dev. Give downloaded fonts their own path so both resolve in dev and production.

Signed-off-by: Jordan Jones <git@svcs.ok8.sh>
@kashalls
kashalls force-pushed the feat/game-cards-next branch from daa35c8 to 30c8263 Compare October 5, 2026 03:19
@kashalls
kashalls merged commit 0a9f2f5 into main Oct 5, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant