diff --git a/README.md b/README.md index 5782457..75fe84a 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ A scroll-scrubbed site plays through a sequence of frames as the reader scrolls, background moves with them instead of sitting still behind the text. ScrollCraft builds those sites without WebGL, an animation library, or a render farm. -1. **Start from a template.** 22 finished sites, each with its own palette, +1. **Start from a template.** 23 finished sites, each with its own palette, typography, pacing and copy. Or upload a video and use your own footage. 2. **Get frames.** The engine draws the frame sequence on a canvas in your browser and maps it to scroll position. @@ -37,7 +37,7 @@ one exception is the copy assistant below, which is off unless you configure a k palette. Frames are drawn on canvas locally, with no API key and nothing to install. - **Scroll engine.** Smooth canvas scrubbing with separate desktop and portrait frame sets, so a phone gets a background shaped for it rather than a letterboxed one. -- **Template library** — 22 finished scroll sites across 17 categories, each with its own +- **Template library** — 23 finished scroll sites across 17 categories, each with its own Google Fonts pairing and palette. - **Plain HTML export.** No dependencies and no lock-in. The exported page scores 100 on Lighthouse for performance, accessibility, best practices and SEO. diff --git a/public/template-previews/weft.jpg b/public/template-previews/weft.jpg new file mode 100644 index 0000000..c93d03e Binary files /dev/null and b/public/template-previews/weft.jpg differ diff --git a/src/lib/templates.ts b/src/lib/templates.ts index 2b1a8d5..38b389f 100644 --- a/src/lib/templates.ts +++ b/src/lib/templates.ts @@ -1498,4 +1498,69 @@ export const TEMPLATES: Template[] = [ }, ], }, + { + slug: "weft", + name: "Weft", + tagline: "A documentary photographer who shoots the last water-powered mills", + category: "Portfolio", + tags: ["Indigo", "Documentary", "Quiet"], + style: "wave", + colors: ["#28407e", "#6b2f2a", "#0a0d18"], + gradient: "from-indigo-900 via-rose-950 to-slate-950", + theme: { fontDisplay: "Instrument Serif", fontBody: "Inter Tight", scale: "editorial", displayWeight: 400, displayTracking: -0.01, ink: "#f2ebdd", muted: "rgba(242,235,221,0.74)", accent: "#8c2f2a", accentText: "#e8b4a0", radius: 2 }, + sections: [ + { + kind: "statement", layout: "center", reveal: "mask", + eyebrow: "Photographs, 2019 to now", + heading: "The looms still run on the river.", + ctaLabel: "See the work", ctaHref: "#section-2", + scrollHeight: 1400, + }, + { + layout: "left", reveal: "stagger", + eyebrow: "The series", + heading: "Eleven mills, four of them still turning", + body: "I have been photographing water-driven weaving sheds since a foreman in Nadiad let me stand on the walkway for an afternoon. Seven of the eleven have closed since. The work is a record of rooms that will not be there in ten years.", + scrollHeight: 1500, + }, + { + layout: "right", reveal: "fade", + eyebrow: "How I shoot", + heading: "Available light, and a tripod nobody trips over", + body: "No flash near running machinery, no asking anyone to pose, and nothing moved. A shed at six in the morning gives about forty minutes of usable light coming through the roof vents, so I plan around that and wait.", + scrollHeight: 1400, + }, + { kind: "spacer", scrollHeight: 700 }, + { + layout: "left", reveal: "stagger", + eyebrow: "Prints", + heading: "Printed in Ahmedabad, signed, editioned to twelve", + body: "Archival pigment on cotton rag, 16 by 20 inches, from the scanned negative rather than a file. Twelve of each, numbered on the back, and when the twelve are gone the image is retired rather than reprinted at another size.", + scrollHeight: 1400, + }, + { + layout: "right", reveal: "fade", + eyebrow: "Licensing", + heading: "Editorial use, with the mill named", + body: "Magazines and books can license single frames. The one condition is that the caption names the mill and the year, because an unattributed photograph of a working shed becomes decoration the moment it loses its address.", + scrollHeight: 1400, + }, + { + layout: "left", reveal: "stagger", + eyebrow: "What I do not take on", + heading: "No weddings, and no restaging", + body: "I am asked about both every month. Weddings are somebody else's craft, and a shed cleared of people and lit for the camera is an illustration, not a document. Saying so early saves us both a meeting.", + scrollHeight: 1300, + }, + { kind: "spacer", scrollHeight: 600 }, + { + layout: "center", reveal: "fade", + eyebrow: "Enquiries", + heading: "Prints, licensing, or a shed I should see.", + body: "If you know a mill still running on water, I would rather hear about that than anything else. Replies in a few days, from me, not an assistant.", + ctaLabel: "Send a note", ctaHref: "#contact", + scrollHeight: 1200, + }, + ], + }, ];