Skip to content

[POST] Add Pokémon TCG Catalog post#8

Merged
rdavid1099 merged 3 commits into
mainfrom
add-pokemon-tcg-post
May 25, 2026
Merged

[POST] Add Pokémon TCG Catalog post#8
rdavid1099 merged 3 commits into
mainfrom
add-pokemon-tcg-post

Conversation

@rdavid1099

Copy link
Copy Markdown
Contributor

Problem

The blog had no published posts, tags rendered as plain comma-separated text with no visual weight, and external links in post markdown opened in the same tab without rel="noopener", leaving the site exposed to reverse tabnabbing.

Solution

Added the first blog post documenting a one-night build of a Pokémon card scanner using Claude Code, Next.js, and an agent-driven XP workflow. The post covers architecture decisions (structured tool output, lazy price caching, server-first rendering), honest limitations, and a broader reflection on lowered barriers to building software.

Refactored tag rendering site-wide to use styled pill components. Tags now render via a renderTagPills helper in build.js that wraps each tag in a <span class="tag"> element. Supporting CSS adds dark background, rounded corners, and tight typographic treatment. This replaces comma-separated text across post pages, theme listing pages, and the homepage post list.

Secured all external links: markdown-authored links in post body copy now get target="_blank" rel="noopener" via a markdown-it renderer override in build.js, scoped only to post content so site navigation stays in-tab. Static external links in index.html were updated with matching rel="noopener" attributes by hand.

Notes

The generated HTML files (index.html, side-projects/index.html, side-projects/2026-05-24-*.html) are committed directly — that's intentional for the GitHub Pages build pipeline. Empty .keep files in js/ and posts/ were removed as dead scaffolding, and .claude/ was added to .gitignore.

# Problem

The blog had no published posts, tags rendered as plain comma-separated text with no visual weight, and external links in post markdown opened in the same tab without `rel="noopener"`, leaving the site exposed to reverse tabnabbing.

# Solution

Added the first blog post documenting a one-night build of a Pokémon card scanner using Claude Code, Next.js, and an agent-driven XP workflow. The post covers architecture decisions (structured tool output, lazy price caching, server-first rendering), honest limitations, and a broader reflection on lowered barriers to building software.

Refactored tag rendering site-wide to use styled pill components. Tags now render via a `renderTagPills` helper in build.js that wraps each tag in a `<span class="tag">` element. Supporting CSS adds dark background, rounded corners, and tight typographic treatment. This replaces comma-separated text across post pages, theme listing pages, and the homepage post list.

Secured all external links: markdown-authored links in post body copy now get `target="_blank" rel="noopener"` via a markdown-it renderer override in build.js, scoped only to post content so site navigation stays in-tab. Static external links in index.html were updated with matching `rel="noopener"` attributes by hand.

# Notes

The generated HTML files (index.html, side-projects/index.html, side-projects/2026-05-24-*.html) are committed directly — that's intentional for the GitHub Pages build pipeline. Empty `.keep` files in js/ and posts/ were removed as dead scaffolding, and .claude/ was added to .gitignore.
@rdavid1099 rdavid1099 merged commit 009eb2b into main May 25, 2026
1 check passed
@rdavid1099 rdavid1099 deleted the add-pokemon-tcg-post branch May 25, 2026 01:36
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