10 KiB
Frame 44 site update — realign pricing model, gate prices, add data catalogue
Three tasks in one pass, on the existing Eleventy (11ty v3) site. Keep the current architecture exactly: all pricing content in src/_data/*.json, Nunjucks templates, plain CSS, the i18n split, no hardcoded prices in templates, no new build tooling.
Read CLAUDE.md and README.md first — follow the data-driven pattern, filter/shortcode conventions, logo/passthrough rules, and i18n scaffolding described there.
HARD RULE — no prices anywhere on the public site
No dollar figures, no "starting at," no ranges, anywhere in the built site. Pricing lives only in a PDF guide sent on request. Price fields still exist in the JSON data files (for internal use and future PDF generation) but must never be rendered in a public template. Add a build-time check: grep the rendered _site/ output for $ in page content and confirm none appears in pricing context. If a price would surface on a page, that's a bug.
The public site's job: explain how pricing works and what exists, then capture the lead via two CTAs — "Request the pricing guide" and "Inquire". Every interested museum should identify itself before it sees a number.
TASK A — Replace the outdated pricing model
The current packages.json (Exhibit One / Gallery / Flagship / Multi-Site, build+annual prices) is from an older model. Replace the data model with the current one. Update the JSON so the data is correct and internally consistent; the public templates render names and descriptions only (never prices — see hard rule).
-
packages.json→ Studio tiers, one-time. Three objects:- Studio 1 —
oneTimePrice2500, features: "1 published exhibit", "1 theme" - Studio 3 —
oneTimePrice7000,badge"Most chosen", features: "3 published exhibits", "All themes" - Studio 5 —
oneTimePrice10000, features: "5 published exhibits", "All themes + custom branding" - Add a shared-features string rendered once beneath the three cards: "Every Studio includes the map builder, timeline, English/French translation, web + touchscreen output, and hosting."
- Studio 1 —
-
New
maintenance.json— M&S annual tiers: Studio 1 (or a ready-to-go exhibit) 2500, Studio 3 3500, Studio 5 4500. Plus a coverage string ("Covers hosting & uptime (or on-premise server care), software updates & new features, screen monitoring & content sync, staff support by email & phone, security patching & backups.") and the footnote "Screens and on-premise add-ons include their own yearly maintenance, shown under Deployment." -
New
deployment.json— Cloud (included), On-Premise Server (+30% one-time, then +30%/yr), Gallery Screen (2500 one-time, then +500/yr), Custom Web Address (250 one-time; subdomain free). -
aitools.json→ "AI & community tools." Four items with the fuller descriptions:- Visitor Chatbot — "A conversational guide on your gallery screens and website, answering visitor questions using only your approved exhibit content — so answers always stay accurate and on-brand."
- Research Chatbot — "A staff-only research assistant that searches across your full licensed archive in plain English, surfacing sources fast for exhibit development and visitor inquiries."
- Document Transcription — "Turns scanned letters, logs and documents into searchable, quotable text — so your archive becomes something visitors and staff can actually find things in."
- Community Contributions — "Community photo & story uploads with built-in moderation — nothing publishes without approval. Includes AI pre-screening & audit log."
-
New
readymade.json— ready-to-go exhibit packages ("a finished, researched guided exhibit with its animated map — Studio included, ready to publish in weeks; growing library"). Entries: Dieppe, 419 Bomber Squadron. -
historicalCollections.json→ keep per-collection objects (the catalogue uses them) but they carry names/descriptions/coverage, not public prices. Reframe any pricing-page reference as "we'll recommend the right fit — request the pricing guide," never a printed grid. -
extras.json— keep worked-example inputs in JSON for future PDF use, but the worked examples do not render on the public site. Remove the hardware-range and installation-timeline references from public pricing templates (they no longer appear under the new model). -
Rework
/pricing/,/platform/, and the home pricing teaser to the new model with zero prices:- Intro line: "Interactive map exhibits for museums and heritage sites — any story that unfolds across a place. You buy the software once, then pay a yearly plan to keep it running."
- Three ways to start cards: License a ready-made exhibit (Fastest) — "A finished exhibit — Dieppe, 419 Bomber Squadron — live in weeks." · We build it for you (Most popular) — "Our team researches, writes and builds a guided map-story that carries visitors through your history, chapter by chapter." · Build it yourself (Most control) — "Your staff create exhibits in Studio, our builder."
- What a Studio is (no prices): the builder, running on the Frame 44 Atlas platform; exhibits run on your website and on gallery touchscreens; every Studio includes the map builder, timeline, EN/FR translation, web + touchscreen output, and hosting.
- Custom builds: "We create guided map-stories for any history rooted in place — a regiment's war, a ship's voyages, a town's growth, an expedition's route. Full archival research, writing, map animation and Studio build, shaped to your collection." (No price.)
- Deployment options (Cloud / On-Premise / gallery screens / custom web address) described by name only.
- AI & community tools described by name + description only.
- Historical data: described, with a link to
/catalogue/. - Trust strip: "Bilingual by design (English/French) · Runs offline on secure networks · Your content stays yours · Grant-ready paperwork included · Built for museums of every kind."
- Dominant CTA, top and bottom of
/pricing/: "Request the pricing guide" — a short form (name, institution, email, optional message) that emails info@frame44.com; the reply sends the current pricing guide PDF and books a call. Use the site's existing contact/mailto pattern if no form backend exists (a structuredmailto:with subject "Pricing guide request" is acceptable until a form backend is added — flag as TODO). - Retire old package names (Exhibit One / Gallery / Flagship / Multi-Site) everywhere they appear.
-
Confirmed values: set
contactEmailto info@frame44.com andcontactEmailConfirmed: trueinsite.json. Update themailto:on the contact page accordingly.
TASK B — New /catalogue/ page
A browsable catalogue of licensable data and exhibits at src/catalogue/index.njk. No prices — every tile ends in an "Inquire" CTA (structured mailto: to info@frame44.com with a subject naming the item, or a link to the contact page). Data-driven from JSON like the rest of the site.
Make both /catalogue/ and /data/ resolve here (alias or redirect), because the pricing guide PDF links to frame44.com/data. Add /catalogue/ to the main nav.
Three groups:
-
Ready-to-go exhibits (from
readymade.json) — image tile each (Dieppe, 419 Bomber Squadron): thumbnail, title, one-line description, "guided map-story" framing, "Inquire" button, plus a "new exhibits added regularly" note. -
Data collections (from
historicalCollections.json) — tiles for: Project '44 WWII mapped data (with a coverage tag, e.g. "First Canadian Army · NW Europe & Italy · 1943–45"), War diaries (digitized, searchable primary sources), Story maps (guided narratives), Project Athena (Afghanistan photo archive), Project Friction (Gulf War). Each tile: thumbnail, description, a coverage/scope tag, "Inquire" CTA. The coverage tag answers a regimental museum's first question — "do you have my unit?" — at a glance. -
Maps & imagery (new
cartography.json) — the differentiator: Historical basemaps (GSGS series, army-group situation maps, period projections), 1944–46 aerial imagery, Historical site layers ("a site mapped through time"). Each tile: thumbnail, description, "Inquire."
Plus a closing "Don't see your subject?" tile → custom research build → contact CTA, so non-military museums (maritime, civic, settlement) see themselves in the catalogue.
Images: screenshots will be supplied at src/assets/images/catalogue/{dieppe,419sqn,aerial,wardiary,basemap}.jpg. For any tile whose image isn't present yet, use the existing SVG-placeholder approach and flag it as a TODO. Follow the README's logo/passthrough conventions.
Guardrails
- No prices in any rendered public page (the hard rule above). Price fields live in JSON for internal/PDF use only.
- Never describe Frame 44 as owning Project '44's research. Correct framing: Frame 44 licenses data from Project '44 (CRMA). Footer/data lines read "Data licensed from Project '44 (CRMA)."
- Two product names only: Atlas (the platform) and Studio (the builder). Never "Enhanced Content Builder" or "ECB"; never coin new product names. The kiosk output is "gallery screens"; the web output is "web exhibits."
- Don't invent prices, coverage claims, collection names, testimonials, or team bios beyond what's in the data files. Anything unknown →
<!-- TODO -->and list it at the end. - Follow the existing i18n pattern (strings in
src/_data/i18n/en.json), keep the/fr/-ready structure intact.
Definition of done
npm run buildsucceeds;npm run serverenders cleanly, responsive 360–1440px.- Zero dollar figures anywhere in
_site/page content (grep to verify). /pricing/sells the model and drives "Request the pricing guide";/catalogue/(and/data/) browse-only with "Inquire" CTAs.- Old package names (Exhibit One / Gallery / Flagship / Multi-Site) appear nowhere in the built site.
contactEmailis info@frame44.com and confirmed.- A README/CLAUDE.md note added documenting the new data files (
maintenance.json,deployment.json,readymade.json,cartography.json) and the no-public-prices rule. - Final message: list every
<!-- TODO -->placeholder still needing input (screenshots, form backend, fonts, museum copy, team bios, OG image).