mirror of
https://github.com/Darkrock-Studios/hammer-blog.git
synced 2026-08-07 21:13:47 +00:00
No description
- PHP 75.5%
- CSS 19.8%
- Hack 1.9%
- Dockerfile 1.5%
- Shell 1.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| cache | ||
| content | ||
| deploy | ||
| public | ||
| src | ||
| templates | ||
| .dockerignore | ||
| .gitattributes | ||
| .gitignore | ||
| AGENTS.md | ||
| ARCHITECTURE.md | ||
| CLAUDE.md | ||
| composer.json | ||
| composer.lock | ||
| docker-compose.prod.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| README.md | ||
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, RSSfeed.xml, env-awarerobots.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=Npages). - Phase 7 — prod (kit ready):
docker-compose.prod.yml, nginx front-door config, and a two-speed deploy script live underdeploy/— see deploy/DEPLOY.md.