No description
  • PHP 75.5%
  • CSS 19.8%
  • Hack 1.9%
  • Dockerfile 1.5%
  • Shell 1.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-04 21:43:02 -07:00
cache Add Docker/PHP scaffold and site skeleton 2026-07-17 23:20:56 -07:00
content 3.8.0 release post release 2026-08-04 21:43:02 -07:00
deploy Remove sample content; note blog live and auto-deploying 2026-07-21 18:35:47 -07:00
public Add social links row to the footer 2026-07-22 10:54:24 -07:00
src Add tutorial sidebar pulled live from the YouTube playlist feed 2026-07-22 10:35:45 -07:00
templates Add social links row to the footer 2026-07-22 10:54:24 -07:00
.dockerignore Add production deployment kit (Phase 7) 2026-07-18 23:01:39 -07:00
.gitattributes Port Writer's Desk design system to match hammer.ink 2026-07-17 23:55:41 -07:00
.gitignore Ignore .mcp.json 2026-07-22 11:00:26 -07:00
AGENTS.md Document the tutorial rail in AGENTS.md 2026-07-22 10:38:26 -07:00
ARCHITECTURE.md Add SEO layer: canonical, OG/Twitter, JSON-LD, sitemap, RSS 2026-07-17 23:40:10 -07:00
CLAUDE.md Add AGENTS.md contributor guide 2026-07-22 01:15:17 -07:00
composer.json Switch markdown rendering to league/commonmark 2026-07-18 00:29:44 -07:00
composer.lock Switch markdown rendering to league/commonmark 2026-07-18 00:29:44 -07:00
docker-compose.prod.yml Add production deployment kit (Phase 7) 2026-07-18 23:01:39 -07:00
docker-compose.yml Add Docker/PHP scaffold and site skeleton 2026-07-17 23:20:56 -07:00
Dockerfile Add dynamic OpenGraph share cards, home JSON-LD, and favicons 2026-07-21 18:46:40 -07:00
README.md Add production deployment kit (Phase 7) 2026-07-18 23:01:39 -07:00

Hammer Blog

The hammer.ink blog. PHP + HTMX, markdown page bundles, served at hammer.ink/blog. See ARCHITECTURE.md for the full design.

Run it locally

The only thing you need on your machine is Docker. No PHP, no Composer.

docker compose up --build

Then open http://localhost:8090.

Edits to content/, templates/, src/, and public/ are live-mounted — refresh the browser, no rebuild. Changing composer.json or the Dockerfile needs a rebuild (docker compose up --build).

Publishing

Publishing is a git push, never an SSH file-paste onto a live box. Write a post as content/<category>/<slug>/index.md, preview locally, commit, push.

Layout

public/       front controller + static assets
src/          PHP classes (PSR-4: HammerBlog\)
templates/    PHP templates + partials
content/      markdown page bundles (category = top-level dir)
cache/        rendered-HTML cache (gitignored)

Status

  • Phase 1 — skeleton (done): boots under docker compose up, serves a landing page.
  • Phase 2 — content pipeline (done): frontmatter + markdown render + content-hash cache.
  • Phase 3 — category / tag pages (done): hub pages, tag archives, post cards, category icons.
  • Phase 4 — SEO layer (done): canonical + OG/Twitter + JSON-LD, sitemap.xml, RSS feed.xml, env-aware robots.txt.
  • Phase 5 — styling pass (Writer's Desk).
  • Phase 6 — HTMX niceties (done): URL-backed load-more pagination (no-JS falls back to real ?page=N pages).
  • Phase 7 — prod (kit ready): docker-compose.prod.yml, nginx front-door config, and a two-speed deploy script live under deploy/ — see deploy/DEPLOY.md.