Skip to content

docs: a FAQ that answers the non-JavaScript question - #41

Merged
murffious merged 3 commits into
mainfrom
docs/faq
Sep 15, 2026
Merged

murffious merged 3 commits into
mainfrom
docs/faq

Conversation

@murffious

Copy link
Copy Markdown
Contributor

0.3.0 dropped the old FAQ rather than editing it — every question in it was about a runtime that had just been removed ("Does RainfallJS use React's Context API?", "Can I use it with class components?", "How is this different from Redux?"). Written pre-AI, for a data-provider library.

Nothing replaced it, which left the most important question unanswered: does this work with a frontend that isn't JavaScript?

It does, and the FAQ now leads with it. Both artifacts are JSON — the manifest and schema/components.json — so SwiftUI, Flutter, Blazor, Django, Rails, Android or Unity read them like any other JSON and implement the shapes natively. Neither rainfall condense nor rainfall components --json emits a line of JavaScript. The JS mapper is one implementation of the catalogue, not its definition.

Also answered, with limits stated rather than glossed:

Question Short answer
What requires Node? only the CLI, at build time, like a linter
Will scan read my Swift/Go project? no — verified: it walks only
Must my backend be JS? no — endpoints are declared, not introspected
Isn't this OpenAPI? different question; they compose
Useful without AI? yes — validate catches drift regardless

Claims checked against the code first: the endpoint reads field exists in schema/rainfall.schema.json, and the example JSON matches examples/manifest/rainfall.json.

Rides along with the unpublished 0.3.1 — no further bump.

🤖 Generated with Claude Code

murffious and others added 3 commits September 14, 2026 21:17
0.3.0 dropped the old FAQ rather than editing it, because every question in it
was about a runtime that had just been removed: "Does RainfallJS use React's
Context API?", "Can I use it with class components?", "How is this different
from Redux?". It was written pre-AI, for a data-provider library, and none of
it described this package any more.

Nothing replaced it, which left the most important question unanswered: does
this work with a frontend that is not JavaScript?

It does, and the new FAQ leads with it. The two artifacts are JSON — the
manifest and schema/components.json, the component-shape catalogue — so a
SwiftUI, Flutter, Blazor, Django, Rails, Android or Unity frontend reads them
like any other JSON and implements the shapes natively. `rainfall components
--json` prints one, `condense` prints the other, and neither output contains a
line of JavaScript. The JS mapper is one implementation of the catalogue, not
the definition of it.

Also answered, with the limits stated rather than glossed:

  - What actually requires Node: only the CLI, at build time, like a linter.
    Nothing at runtime in any language.
  - `scan` reads React/Next source only, and will find nothing in a Swift or Go
    project. Verified: cli/scan.js walks .js/.jsx/.ts/.tsx and no other
    extension. It matters less than it sounds, because scan only ever produces
    the skeleton — `rainfall prompt` plus an assistant is the recommended path
    on every stack, including JS.
  - Backends are declared, not introspected, so they can be anything.
  - Why this is not OpenAPI: OpenAPI describes the API, not which screen calls
    it or which requirement it serves. They compose.
  - It is useful without AI — validate catches drift whether or not an agent is
    involved.

Claims checked against the code before writing: the endpoint `reads` field
exists in schema/rainfall.schema.json, and the example JSON matches the shape in
examples/manifest/rainfall.json.

Rides along with the unpublished 0.3.1; no further bump.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Two problems, and the second is the more embarrassing one.

THE DEMO WAS UNREFERENCED

examples/fintech-demo/ landed on main with 25 files, a full Next.js finance app
and a rainfall.json describing it — and the README mentioned it zero times. The
one piece of reproducible evidence for the central claim was unfindable unless
you already knew the path. Added a section with the numbers, the commands to
re-run them, and a pointer to GROK_PROMPT.md, which is the part that tests
whether an agent given only the digest can actually make the change.

THE NUMBERS WERE STALE

TOKENS.md called itself "real, reproducible" and was neither. It reported:

    All project source files:  ~4977 tokens  (19 files)
    Savings vs exploring:      6.9x

Running it now gives:

    All project source files:  ~3699 tokens  (17 files)
    Savings vs exploring:      5.1x

The two files are `.gitignore` and a `.claude/` skill doc. The walker excludes
dotfiles now, which is the more honest count — neither is source an agent reads
to understand a data layer — and the headline multiple fell from 6.9x to 5.1x
accordingly. The focused figure moved the same way: ~21x became ~16x.

Nothing was wrong with the tool. A measurement was written down once and never
re-run, and the document kept asserting it after it stopped being true. That is
precisely the failure this package exists to catch, in this package's own demo,
in a file whose title claims reproducibility.

TOKENS.md is now the literal output of `rainfall report`, with a note saying to
regenerate rather than trust it, and recording that it already drifted once. The
README section carries the same corrected figures, verified to match the live
output line for line.

Also in this commit: the FAQ answering how to use this from a non-JavaScript
frontend (see the preceding commit on this branch).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The logo existed in the repo and appeared nowhere. Now at the top of the README,
so it shows on both GitHub and npmjs.com.

Two things had to be fixed first.

IT WAS NOT TRANSPARENT

RainfallJS_logo_transparent.png has an alpha channel and does not use it: the
corner pixel is (216, 227, 216), a pale grey baked in behind the mark. On a dark
background — GitHub in dark mode, npm's dark theme — it renders as a grey square
with a logo inside it.

assets/logo.png is the fixed version. The background is cleared by flood fill
from the border rather than by colour match, which matters: the circuit traces in
the mark are near-white too, and a plain colour match would have punched holes
through them. 57% of the image was background. Then cropped to the mark and
resized to 512px: 500 KB down to 221 KB, which is a more reasonable thing to
serve at the top of every README view.

THE URL HAD TO BE ABSOLUTE

npmjs.com does not resolve relative image paths — a `![](assets/logo.png)` that
works on GitHub renders as a broken image there. It points at
raw.githubusercontent.com/.../main/assets/logo.png, which works in both places.

Also removes the duplicate copies at the repo root. The PNG and the DALL·E webp
existed twice, once at root and once under assets/, for about 1 MB of duplication
in a public repo. assets/ keeps the originals.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@murffious
murffious merged commit 36b5d40 into main Sep 15, 2026
1 check passed
@murffious
murffious deleted the docs/faq branch September 15, 2026 03:22
murffious added a commit that referenced this pull request Sep 15, 2026
0.3.1 was published from main before #41 merged. The npm tarball got the badge
fixes; the repo at the same version number also had the logo, the FAQ, the demo
section and the corrected token numbers. Same version string, two different
contents — which is its own small instance of the thing this package exists to
prevent.

This bump makes the published README match the repo again. No code change: 72
tests, 0 vulnerabilities, 0 runtime dependencies.

Worth noting for next time, and now written down in CONTRIBUTING: npm renders
the README from the published tarball, so a docs change reaches GitHub on merge
and npm only on publish. Publishing and merging are not interchangeable, and
publishing first silently pins a version number to content that no longer
exists anywhere.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant