Skip to content

docs: add the public site and demo video - #51

Merged
tristanheilman merged 10 commits into
mainfrom
docs/public-site
Oct 8, 2026
Merged

tristanheilman merged 10 commits into
mainfrom
docs/public-site

Conversation

@tristanheilman

@tristanheilman tristanheilman commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Closes #28.

Why

The library's output is visual, and its differentiator is that the model is measured, not guessed. Yet it was sold entirely in prose, and evaluating it meant owning a LiDAR iPhone. This adds a demo and a public landing page aimed at React Native developers deciding whether to adopt it.

What's added

  • Demo video (website/media/demo.mp4, 33 s, 3.7 MB), cut by website/scripts/make-demo.sh from two device recordings so it can be re-cut rather than hand-edited.
    • It opens on the app's Home screen and runs through two capture passes at 12×.
    • Then it shows Model ready at real speed (23.5 × 12.7 × 13.8 cm), cuts to the switch to inches, and ends on the model in the viewer.
    • The first recording's own ending predates fix(ios): report onDimensions from the finished model, not the capture volume #50 and shows the old capture-volume size, so it's cut. The status bar is cropped from every frame.
  • Landing page (website/): plain HTML and CSS, no build step and no new dependencies.
    • Sections: hero video with a copyable install command, the measured-vs-tape comparison, how it works, requirements (identical to the README's), a quick start that uses only real exports, and a link to the README's API reference.
    • Cloudflare Web Analytics: no cookies, so no consent banner. There's no SRI hash on the beacon on purpose, since Cloudflare updates it in place without versioning.
  • .github/workflows/pages.yml: deploys website/ when it changes on main, using the latest action majors and minimal permissions.
  • README: a 10.5-second GIF at the top (4.0 MB) linking to the site. package.json homepage now points to the site and reaches npm with the next release.
  • The design spec and plan are in docs/agent/plans/.

Verified

  • Media: all files are within their size limits. Every frame was checked: no status bar, and the pre-fix size never appears.
  • Page, checked in Playwright at 320, 375 and 1280 px:
    • no horizontal scroll;
    • with prefers-reduced-motion the video stays paused on its poster;
    • with the Clipboard API removed, the copy button falls back to selecting the text without errors;
    • every asset path is relative, so it works under the /react-native-object-capture/ sub-path.
  • Independent review of the whole branch found two Important issues, both fixed: the size tile disagreed with the video, and the share image used a relative URL. The 320 px overflow was also fixed.

Only verifiable after merge: the first Pages deploy (this PR touches website/**, so merging triggers it), and Cloudflare recording the first visit.

Cut from two device recordings by a script so it can be re-run rather
than hand-edited. The capture recording's ending predates the
onDimensions fix and shows the old capture-volume size, so the cut takes
the build and Model-ready shots from a second recording made on the
fixed build. The status bar is cropped from every frame.
One static page rather than a docs framework, so the README stays the
single home for the API docs and the two can't drift. Leads with the
recorded scan and the measured-vs-tape comparison, since true scale is
what sets the library apart. The demo now opens on the app's Home
screen; starting a second in caught the screen transition mid-slide.
A 3D scanning library sold in prose alone made evaluating it require a
LiDAR iPhone. The GIF ends on the measured size, the part competitors
don't give you, and links to the project site.

Closes #28
- The measured-size tile showed an earlier scan's reading while the video
  above it shows 23.5 x 12.7 x 13.8 cm; on a page whose pitch is
  "measured, not guessed", the two must agree.
- og:image must be an absolute URL or social shares get no preview.
- An unbreakable inline API name forced sideways scroll at 320px, the
  width iPhones use with Display Zoom.
At 7x the two passes took ~17 of 47 seconds before anything new happened;
12x keeps the point cloud visibly building while getting to the measured
size, the payoff, about 8 seconds sooner. Pass reviews and Model ready
stay real-time.
The measured size held for 6 seconds, then the switch to inches and back
played in real time. Now it's 2.5 seconds of cm, a cut to the tap, and
straight on to the viewer. The README GIF gets a longer capture burst at
10 fps, which keeps it in the 10-20 seconds #28 asked for and under its
5 MB budget.
The depth was 12.5 cm, not 11. The page's pitch is that the model
matches a tape measure, so the reference has to be the real one.
@tristanheilman
tristanheilman merged commit 45798f5 into main Oct 8, 2026
5 checks passed
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.

docs: add a capture → USDZ demo to the README

1 participant