iArt.ai
AI motion graphics software — the After Effects alternative anyone can use. Create animations and explainer videos from a text prompt in minutes.
A weekly collection of interesting links, ideas, and observations from across the internet, curated by Jamie Thingelstad.
MediaNunjucks · CSSGitHub @jthingelstadOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Public website and archive for The Weekly Thing, Jamie Thingelstad's weekend newsletter since 2017 — a render surface of the Studio publishing brain.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
The public website for The Weekly Thing — a newsletter Jamie has
published every weekend since May 2017. This repo is a render surface. Authoring and publishing
live in WT Builder (wt-builder); the canonical issue archive, corpus, and Librarian API live in
librarian-thing. This repo builds and deploys the site from the inputs they commit in.
Live URL: weekly.thingelstad.com
Site generator: Eleventy 3.x with Nunjucks templates
Hosting: GitHub Pages
Search: Pagefind (static, runs post-build)
Analytics: Tinylytics (privacy-focused, cookie-free)Read the full README ↗The public website for The Weekly Thing — a newsletter Jamie has
published every weekend since May 2017. This repo is a render surface. Authoring and publishing
live in WT Builder (wt-builder); the canonical issue archive, corpus, and Librarian API live in
librarian-thing. This repo builds and deploys the site from the inputs they commit in.
Live URL: weekly.thingelstad.com
Site generator: Eleventy 3.x with Nunjucks templates
Hosting: S3 + CloudFront, with real 301 redirects (GitHub Pages until 2026-10-26; see AGENTS.md)
Search: Pagefind (static, runs post-build)
Analytics: Tinylytics (privacy-focused, cookie-free)
A pure render surface, plus its own landing-page stats:
wt-builder); the archive, corpus, and API are
librarian-thing.Producer → render split. WT Builder authors each issue and, on send, commits the 11ty inputs here
as one atomic handoff — and commits the canonical issue text into librarian-thing/data/issues/.
librarian-thing pushes one file here: the topic graph. This repo just builds and deploys. See
librarian-thing/ALIGNMENT.md for the full model. (Until WT Builder's first real issue ships, the
Shortcuts workflow remains the fallback producer.)
| Path | What it is |
|---|---|
apps/site/ | The Eleventy static site — landing page, full archive, feeds. The only app here. |
apps/files-cdn/ | robots.txt for the files.thingelstad.com public asset domain. |
apps/site/archive/*.md | Generated, pushed in by WT Builder. One page per issue. Do not edit here (the next handoff overwrites). |
apps/site/_data/ | A mix: fetched by this repo's CI (stats.json), hand-authored (site.js, support.json, quotes.json, faq.json, …), vendored from the thingelstad.com shared/sites.json (sites.json, via npm run sites:sync), and computed at build time from the issue pages (archiveStats.js, topics.js, redirects.js, through apps/site/lib/issueIndex.js). |
data/librarian/graph.json | Topic graph, pushed by librarian-thing; powers the site's topic pages. |
tests/e2e/ | Playwright end-to-end tests for the rendered site + the legacy Thingy redirect. |
Editorial bodies and the archive live in librarian-thing (data/issues/{N}/); authoring and
publishing live in WT Builder. Start at wt-builder/README.md and librarian-thing/README.md.
WT Builder produces, weekly renders. WT Builder holds the live issue, renders the editions, and on
send commits the issue's 11ty page here (apps/site/archive/{N}.md) and the canonical
text into librarian-thing/data/issues/{N}/. librarian-thing rebuilds the corpus from that and
pushes data/librarian/graph.json here. This repo's CI
runs Eleventy + Pagefind, fetches its own landing-page stats, and publishes to S3 and CloudFront. Thingy runs
as a standalone app at thingy.thingelstad.com; this site links and
redirects readers to its chat surface.
npm ci
npm run build # Eleventy
npm run build:search # Pagefind
npm test # build + Pagefind, then Playwright e2e against the built _site/
Working on issue content? That's a WT Builder task, not a weekly one. The apps/site/archive/*.md
files here are generated and overwritten by the next handoff — edit the issue in WT Builder and
re-send; historical repairs go in librarian-thing/data/issues/{N}/archive.md.
Weekly holds only the credentials its own concerns require — currently the landing-page stats fetch
(subscriber/supporter numbers). It is not the producer: the publishing secrets (Buttondown, OpenAI
TTS, AWS, GitHub handoff) live in WT Builder, and the corpus/Lambda deploy secrets live in
librarian-thing.
The deploy assumes an AWS role through GitHub's OIDC token (vars.AWS_DEPLOY_ROLE_ARN); no AWS keys are stored.
| Path | Template | What it is |
|---|---|---|
/ | index.njk | Landing page — hero, value prop, reader quotes, latest issue, membership |
/archive/ | archive/archive.njk | Browsable index of every issue, grouped by year |
/archive/N/ | Generated .md per issue | Issue page with TOC, domains, prev/next nav |
/about/ | about.njk | Full bio + story |
/members/ | support.njk | Supporting Membership, current + past nonprofits |
/search/ | search.njk | Pagefind search with bookmarkable URLs |
/faq/ | faq.njk | FAQ |
/feed.xml | feed.njk | Atom feed (all issues) |
/archive/N/links.xml | issue-links-feed.njk | Per-issue links feed |
/podcast.xml | podcast.njk | Podcast RSS feed |
/thingy/ | librarian.njk | Redirect to standalone Thingy chat at thingy.thingelstad.com |
Editorial, magazine-like. Source Serif 4 for display + italic accents, Source Sans 3 for body/UI,
JetBrains Mono for eyebrows and meta. Generous whitespace. #fcfcfa background, #1f6fd6 accent (deep
#134d99, soft #e1edff), dark mode via prefers-color-scheme. No JS required for core reading — JS
only for the subscribe form, Pagefind search, archive year filter, Thingy handoffs, and Tinylytics.
Mobile-first and accessible: heading hierarchy, alt text, color contrast, keyboard nav. Every page opens
with the sites strip shared by all of Jamie's sites (Inter, its own fixed colours; the
contract is in the thingelstad.com AGENTS.md), built from the vendored _data/sites.json.
The authoring happens in WT Builder, not here. Jamie assembles the issue there; sending runs per
destination — audio to the CDN, the email draft to Buttondown, the site inputs committed to this repo
(which triggers the render-and-deploy below), and the canonical text committed to
librarian-thing/data/issues/ for the corpus. Weekly is purely the last hop.
markdown-it-anchor — body rendering with heading IDsPublished continuously since May 13, 2017, across three email platforms (Tinyletter → MailChimp →
Buttondown). All bodies live in librarian-thing/data/issues/{N}/; the era-specific extraction rules
live in librarian-thing's librarian_core.links.