Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ Thumbs.db
.idea/
.vscode/

# Node (only if the optional site phase adds it)
# Node / static-site build (ADR 0003)
node_modules/
dist/
.cache/
_site/
.eleventy.cache/
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,19 @@ Recipe imports are logged both here (summary) and in

### Added

- **Static site: scaffold, data layer, and first theme (ADR 0003, PR 1 of the site
phase).** An [Eleventy](https://www.11ty.dev/) site under `site/` that generates a
recipe-blog website from the existing Markdown: a landing page led by the biscotti
feature image, category pages, per-recipe pages (photo, ingredients, method, tags,
source link), and a tag index. The recipes are read (never written) by
`site/_lib/load.js`; the build is a view over the source of truth. Added
`eleventy.config.js`, `package.json` (Eleventy, gray-matter, markdown-it), a light
warm theme in `site/assets/style.css`, and `_site/` to `.gitignore`. Verified: 487
recipe pages and 16 category pages build, all referenced photos copy (jpg, png,
webp, avif, gif), and 0 broken internal links. Search (Pagefind), SEO/JSON-LD, and
the Pages deploy workflow with the `github.blimacake.com` domain follow in later
PRs. ADR 0003 moved to Accepted with the owner's decisions recorded.

- **Automated e-book release workflow
([`.github/workflows/release.yml`](.github/workflows/release.yml)).** Publishing
the cookbook as a GitHub Release is now a one-step action: push a tag named
Expand Down
29 changes: 23 additions & 6 deletions docs/adr/0003-static-site-phase.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!-- meta: title="ADR 0003: Optional static-site phase (GitHub Pages)" | type="adr" | archive="blimacake" -->
# ADR 0003: Optional static-site phase (GitHub Pages)

- **Status:** Proposed (awaiting owner decision)
- **Status:** Accepted (owner decisions recorded 2026-07-07; build under way)
- **Date:** 2026-07-07
- **Deciders:** Jeff Posluns (owner)
- **Relates to:** ADR 0001 (architecture), ADR 0002 (curation phase)
Expand Down Expand Up @@ -115,10 +115,27 @@ decisions below.
4. **Analytics and comments.** Recommendation: neither, to keep the site private-data
free and dependency-light, unless the owner wants a privacy-respecting counter.

## Owner decisions (2026-07-07)

The proposal is accepted. The open questions are resolved as follows:

1. **Domain.** Start on the subdomain `github.blimacake.com`. Once the WordPress site
at blimacake.com retires, the apex domain will be redirected to the archive site.
2. **Search.** Use Pagefind (static, zero-maintenance full-text search).
3. **Theme.** A light custom theme in the spirit of blimacake.com. The landing page
mirrors that feel, led by a large feature image (the biscotti signature photo).
4. **Analytics and comments.** Neither, to keep the site private-data free and
dependency-light.

Generator: **Eleventy**, as recommended. Build order follows the proposed scope
(scaffold and data layer, then theme, then search and SEO, then deploy). Each step is
a focused PR with its own CHANGELOG entry.

## Consequences

- **If accepted:** the archive gains a public, browsable website that reads like a
recipe blog, with no server to maintain, generated from the same governed Markdown.
Work proceeds as scoped PRs; this ADR moves to **Accepted**.
- **If declined or deferred:** no change. The archive stays fully usable on GitHub,
as the e-book, and as portable files. This ADR can be revisited at any time.
- **Accepted:** the archive gains a public, browsable website that reads like a recipe
blog, with no server to maintain, generated from the same governed Markdown. Work
proceeds as scoped PRs on the decisions above.
- **The guardrails hold:** the Markdown remains the single source of truth, no
cook-from value is changed by the site build, and the existing CI gates are not
weakened.
31 changes: 31 additions & 0 deletions eleventy.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// Eleventy config for the Blima Cake site.
// Input is site/; recipe content is read from recipes/ by site/_lib/load.js.
// The build is a generated VIEW over the Markdown; it never writes recipe content.

export default function (eleventyConfig) {
// Site's own CSS and assets (site/assets -> /assets).
eleventyConfig.addPassthroughCopy("site/assets");

// Repo-root assets and the e-book, served from the site root.
eleventyConfig.addPassthroughCopy({ "assets/branding": "assets/branding" });
eleventyConfig.addPassthroughCopy({ "BlimaCake.epub": "BlimaCake.epub" });

// Recipe photos, kept at the same relative path the pages reference.
for (const ext of ["jpg", "jpeg", "png", "webp", "avif", "gif"]) {
eleventyConfig.addPassthroughCopy(`recipes/**/images/*.${ext}`);
}

eleventyConfig.addFilter("limit", (arr, n) => (arr || []).slice(0, n));

return {
dir: {
input: "site",
output: "_site",
includes: "_includes",
data: "_data",
},
markdownTemplateEngine: "njk",
htmlTemplateEngine: "njk",
templateFormats: ["njk", "md"],
};
}
Loading
Loading