-

Visitor Experience
Sign the Card
A public greeting card visitors sign, moderated automatically, with a map of where signatures came from.
Static HTML/CSS/JSFirebase FirestorePythonGitHub Actions -

Interactive Media beta
TR's Medora
The two towns of Roosevelt's ranching years, rebuilt as a 3D model you can move through.
Python build toolsshapelynumpyLidar terrain -

Interactive Media
The 1884 Diary
Turn the pages of Roosevelt's 1884 pocket diary, with a page-by-page transcription beside every scan.
Vanilla JSStPageFlipOpenSeadragonPython build script -

Interactive Media
How the Library Works
A 3D cutaway of the building's geothermal, water, and carbon systems, traced from the construction drawings.
three.js r160glTF with meshoptVanilla JSPython tooling -

Data & Automation
Day by Day
All 21,986 days of Roosevelt's life as an open dataset, a JSON API, and an explorer.
Python standard libraryStatic JSON APIVanilla JSGitHub Actions -

Data & Automation
Executive Orders and Proclamations
Every executive order and proclamation Roosevelt signed, with texts, stories, and what each led to.
Python standard libraryStatic JSON APIVanilla JSGovInfo USLM -

Content Tool
Pop-ups
A self-hosted replacement for OptinMonster: a brand-locked builder that publishes through Google Tag Manager.
Vanilla JS runtimeGoogle Tag ManagerGA4Constant Contact -

Embeddable Widget
Giving Tools
Sixteen planned-giving calculators and guides, each one script tag, with nothing a donor types leaving the page.
Vanilla JSNode build scriptpdf-libPlaywright tests -
Vanilla JS built from source by a Python build stepShadow DOMd3-celestial dataStellarium sky-culture artwork -

Content Tool
Newsletter Builder
A browser newsletter builder that exports paste-ready HTML for your email platform.
Static HTML, CSS, JavaScriptNo backend, no build stepGitHub Pages -

Content Tool
Digital Invitation
Turns any invitation image into an envelope that opens, addressed by name.
Single vanilla JS file, no dependenciesShadow DOMCSS 3D transformsprefers-reduced-motion -

Dashboard
Ticketing Widgets
Live sell-out warnings and best-day-to-visit advice, refreshed every fifteen minutes.
Python 3 standard libraryACME Ticketing Reporting APIVanilla JS widgetsGitHub Actions -

Visitor Experience
Campus Map
A 3D model of the campus you can spin, zoom, and pin with story markers.
Static HTML/CSS/JS, no build stepGoogle model-viewerglTF/GLB with Draco compressionGit LFS -

Interactive Media
Roosevelt's Public Lands
Two hundred and thirty million acres, added to the map one year at a time.
MapLibre GL JSOpenFreeMap basemapGeoJSONPython build tools -

Embeddable Widget
Photo Gallery
Drop photos in a folder, run one script, embed a masonry gallery anywhere.
Python 3PillowVanilla JS embedGitHub Pages -

Embeddable Widget
Medora Events
One deduplicated calendar of everything happening in Medora and the towns around it.
PythonGitHub ActionsGitHub PagesLeaflet -

Embeddable Widget
TR Events
Every Theodore Roosevelt event in the country, gathered daily into one calendar.
PythonGitHub ActionsGitHub PagesNPS Data API -

Dashboard
SEO & AI Visibility
Tracks whether search engines rank you — and whether AI assistants mention you at all.
PythonpytestGitHub ActionsGitHub Pages -

Visitor Experience
Got Two Hours?
Tell it how much time you have, and it builds a route through the national park.
Vanilla JSLeafletNPS Data APIOSRM -

Visitor Experience
Wildlife Watch
A field guide to the park's bison, wild horses, and twenty other animals, with recent sightings.
Vanilla JSLeafletiNaturalist APIUSGS National Map -

Visitor Experience
Elkhorn Ranch Walking Guide
A GPS and compass guide to Roosevelt's ranch site that keeps working with no signal.
Vanilla JS PWALeafletService workerGeolocation and DeviceOrientation -

Visitor Experience
Camping on Public Land
Answers "can I camp here?" from a phone's location across a patchwork of public and private land.
Python standard libraryVanilla JSLeafletPAD-US and agency GIS -

Visitor Experience
Hunting and Fishing Guide
Can I hunt here, what's open today, and where to fish — from a phone, offline.
Python standard libraryVanilla JSLeafletState and federal GIS -

Embeddable Widget
Today in the Badlands
One strip with today's park alerts, weather, river, air quality, and things to do.
Node.jsVanilla JSNPS Data APINWS and USGS APIs -

Embeddable Widget
Northern Lights Watch
Tonight's aurora outlook, a year-ahead trip planner, and what records since 1932 say about when to come.
Vanilla JS widgetPython standard libraryNOAA SWPCOpen-Meteo -

Interactive Media
Read the Rocks
Tap anywhere in the park to learn which rock layer you're standing on and how it formed.
Vanilla JSLeafletTopoJSONMacrostrat API -

Interactive Media
The Little Missouri
Today's river at Medora beside the river Roosevelt knew, with a century of gauge records.
Vanilla JSLeafletUSGS Water ServicesNWS NWPS -

Interactive Media
The Bad Lands Cow Boy
Every surviving issue of Medora's 1880s newspaper, transcribed and indexed day by day.
Static HTML and JSPython build scriptsLibrary of Congress Chronicling AmericaIIIF tiles -

Interactive Media
Who Owned the Badlands?
Watch land around Medora pass into private hands, patent by patent, from 1889 to 1957.
Vanilla JSLeafletPython and ShapelyBLM GLO Records -

Visitor Experience beta
Scenic Loop Audio Tour
A free GPS-guided driving tour of the park's South Unit loop, narrated by two hosts, that works offline.
Vanilla JS PWAGeolocation and Wake LockPython build toolsPlaywright tests -

Dashboard
Visitor Impact Dashboard
Thirty regional feeds — park visits, airports, highways, lodging taxes, jobs — in one daily-updated tourism dashboard.
PythonGitHub ActionsStatic HTML dashboardPublic data APIs and PDFs -

Dashboard
Reviews
Collects visitor reviews daily, classifies the themes, and triages what needs a reply.
PythonApify actorsSwappable LLM provider interfaceStatic HTML/CSS/JS dashboard -
Static HTML/CSS/JS, no frameworkShadow DOMCanvas badge generationPeerJS / WebRTC -

Content Tool
Social Calendar
A shareable, read-only calendar of scheduled social posts, rebuilt twice a day.
PythonHootsuite REST API and OAuthImage compositingPlain HTML/CSS/JS -

Interactive Media
TR Timeline
A single-file timeline that sets one life against the history happening around it.
Vanilla JS, zero dependenciesShadow DOMPlain JSON dataGitHub Actions -

Dashboard
Living Building Dashboard
A lobby display turning building performance into a living Badlands panorama.
Single-file HTML, CSS, vanilla JSInline SVGOpen-Meteo APIGitHub Actions -

Visitor Experience
Trip Planner
A wizard that turns a guest's interests into a routed, dated, printable itinerary.
Vanilla JS embedCurated JSON data filesNode ESM scrapers with PlaywrightPython image caching -

Interactive Media
Family Tree
Forty-six Roosevelts across six generations, every name opening a sourced biography.
Single self-contained vanilla JS fileShadow DOMGitHub Actions with headless verificationGitHub Pages -

Embeddable Widget
TRC Search Widget
Instant autocomplete across 139,714 Theodore Roosevelt Center archival items, in one script tag.
Vanilla JS web componentsNode 18+esbuildd3-force -

Embeddable Widget
Local Weather
Live local weather as a one-line embed, plus auto-refreshing forecast images for email.
Node.js ESMVanilla JS widgetSVG-to-PNG renderingapi.weather.gov -

Data & Automation
Link Checker
A weekly crawl that finds every broken link and typo across an entire website.
PythonrequestsGitHub Actions weekly cronGitHub Pages -

Visitor Experience
Lodging Finder
Shows which hotels, cabins, rentals, and campgrounds near a small town are open for a visitor's dates.
PythonVanilla JS widgetShadow DOMSearchApi and Apify -
DashboardHouse File Stats
Dashboard
House File Stats
A daily, privacy-safe dashboard of an email list's size, completeness, and growth in Constant Contact.
PythonConstant Contact API v3OAuth 2GitHub Actions -

Data & Automation
Hours Embed
Republishes hours locked inside one CMS as a live embed on a completely different site.
Node ESM scraperschema.org JSON-LDVanilla JS with Shadow DOMGitHub Actions cron -

Content Tool
DAM Portal Embed
Turns a locked-in press portal into native, auto-sizing gallery tiles on your own page.
Vanilla JS embedNode 18+Acquia DAM / Widen portal APIGitHub Actions -

Interactive Media
Rough Rider
A ten-chapter 8-bit platformer that plays an entire life, mini-games and all.
Plain ES, no framework or bundlerHTML5 canvasWeb Audio APIFullscreen and Screen Orientation APIs -

Content Tool
Anniversaries
Shows which milestones hit a round anniversary this year and the next five.
Static HTMLVanilla JavaScriptPlain JSONGitHub Actions -

Visitor Experience
Elkhorn Panoramas
Seven 360-degree panoramas that let anyone stand inside the Elkhorn Ranch ruins.
Static HTMLthree.jsPanolensWebGL
Nothing matches that
Try a broader word — “embed”, “dashboard”, “python” — or clear the filters.