// APP STORE โ€” ENGINEERING REPORT ๐Ÿ”ฅ

Open store

>_ENGINEERING REPORT

A snapshot of the storefront's catalog, source, test coverage, and the decisions behind them. Product counts below are computed live from the catalog; source metrics are a snapshot.

Catalog (live)

โ€”Products
โ€”Categories
โ€”Free / OSS

These three counters are populated by store.js from the live PRODUCTS catalog, the same code path the storefront uses โ€” so they never go stale.

Composition by category // snapshot

CategoryCountModel
stryke Packages30Free / OSS (generated)
Zsh Plugins20Free / OSS
Desktop Apps1816 paid (Tauri apps) + zwire (free)
Developer Tools12Free / OSS
Editor Plugins11Free / OSS
CLI Tools12Free / OSS
Publications19Paid (DRM-free PDF)
Audio Plugins3Paid (JUCE VST3/AU/CLAP)
Total12539 paid ยท 86 free

Paid products are licensed per major version. Free products download from GitHub releases/latest, or the repo's /tags page when no release exists.

Paid roster & tiers // snapshot

39 paid products โ€” 17 Desktop Apps, 3 Audio Plugins, and 19 Publications โ€” each with one or two license tiers. The first tier is the default selection and sets the card price; every tier licenses the current major version.

ProductCategoryTier 1Tier 2
zpdfDesktop AppsPersonal $20โ€”
zphotoDesktop AppsPersonal $20โ€”
zemailDesktop AppsPersonal $20โ€”
zofficeDesktop AppsPersonal $99Pro $199
audio-haxorDesktop AppsPersonal $99Pro $199
traderviewDesktop AppsDesktop $149Self-Hosted Web $199
ztranslatorDesktop AppsPersonal $99โ€”
zciteDesktop AppsPersonal $20โ€”
zreqDesktop AppsPersonal $20โ€”
ztunnelDesktop AppsPersonal $20โ€”
zgoDesktop AppsPersonal $20โ€”
zftpDesktop AppsPersonal $20โ€”
zcontainerDesktop AppsPersonal $20โ€”
zterminalDesktop AppsPersonal $20โ€”
zpwr-dawDesktop AppsPersonal $199Studio $399
zstationDesktop AppsPersonal $20โ€”
zpwr-synthAudio PluginsPersonal $149Studio $299
zpwr-fxAudio PluginsPersonal $79Studio $89
zpwr-midi-fxAudio PluginsPersonal $79Studio $89
the-stackPublicationsPDF $20โ€”
the-compiled-mindPublicationsPDF $20โ€”
the-waking-fleetPublicationsPDF $20โ€”
the-inheritorsPublicationsPDF $20โ€”
strykelang-bookPublicationsPDF $20โ€”
zshrs-bookPublicationsPDF $20โ€”
zmax-bookPublicationsPDF $20โ€”
fusevm-bookPublicationsPDF $20โ€”
elisprs-bookPublicationsPDF $20โ€”
awkrs-bookPublicationsPDF $20โ€”
vimlrs-bookPublicationsPDF $20โ€”
zterminal-bookPublicationsPDF $20โ€”
powerliners-bookPublicationsPDF $20โ€”
desktop-in-rust-bookPublicationsPDF $20โ€”
zpwr-encyclopediaPublicationsPDF $20โ€”
inventions-bookPublicationsPDF $20โ€”
ztmux-bookPublicationsPDF $20โ€”
zwire-bookPublicationsPDF $20โ€”

Tier data lives in each product's tiers array in store.js. The detail page renders the tier picker; the card shows the first tier's price plus a per major version label.

Free families // snapshot

85 free / OSS products (one Open Source tier at $0; mostly MIT, with a few MPL-2.0). Three construction styles keep the catalog DRY:

FamilyBuilderCountExamples
Explicit objectsobject literals55zshrs, stryke, vimlrs, zmax, zwire, zwire-host, awkrs, lsofrs, ztmux, htoprs
stryke packagesstrykePkg()30stryke-arrow, stryke-polars, stryke-k8s
Meta-listed reposmetaProduct()37fusevm, zpwr, zsh-more-completions, vim-stryke

This table groups by how the catalog object is built (object literal vs strykePkg() vs metaProduct()), not by display category โ€” so its rows are orthogonal to the composition-by-category table above. Sum: 18 + 30 + 37 = 85 free / OSS.

Published documentation sites // snapshot

59 products list a GitHub Pages docs site (the DOC_REPOS array in store.js). Each detail page renders doc-cards from these entries:

  • Documentation โ€” menketechnologies.github.io/<id>/, for all 59.
  • Engineering Report โ€” <base>/report.html, for all 59.
  • API Reference โ€” <base>/reference.html, only for the ids in DOC_REFERENCE: strykelang and zshrs.

Proprietary products (audio-haxor, traderview, ztranslator, zpwr-daw) and the Pages-disabled audio plugins (zpwr-fx, zpwr-synth, zpwr-midi-fx) are intentionally absent so no Docs link 404s. The three audio plugins instead ship docs[] entries pointing at a per-plugin block catalog PDF (only the blocks that plugin ships) plus the shared full zpwr-patch-core-block-catalog.pdf, which render alongside the HTML doc-cards.

Checkout & discounts // snapshot

The checkout reads the cart from localStorage (appstore-cart) and computes subtotal, discount, and total client-side. Two discount codes ship in the DISCOUNTS map:

CodeTypeEffect
LAUNCH20percent20% off subtotal
HUD10flat$10 off subtotal

A discount never exceeds the subtotal (discountAmount() clamps with Math.min). completeOrder() simulates a confirmed order โ€” no real charge happens; the integration points are marked INTEGRATION HOOKS: in wireCheckoutPage().

Source metrics // snapshot

FileLinesRole
store.js~2,482Catalog + render + cart + checkout
store.css~1,143Commerce surfaces
hud-static.css656Vendored HUD design system
tutorial.css669Vendored section / card styles
hud-theme.js304Theme / CRT / neon / scheme toggles
test/store.test.js~37020 storefront tests

No frameworks, no build step, no runtime dependencies โ€” vanilla HTML/CSS/JS served statically.

Test coverage

A dependency-free node:test suite (20 tests in test/store.test.js) loads store.js into a minimal DOM/localStorage shim and asserts on the rendered HTML โ€” the same surface a browser would paint. Coverage areas:

  • Parse & render โ€” store.js parses and renders the grid into #productGrid.
  • Catalog size and uniqueness โ€” product count matches the live hero stat, all ids unique.
  • Free-vs-paid wiring โ€” free cards expose a well-formed GitHub download URL (releases/latest or /tags); paid cards expose add-to-cart.
  • Pricing copy โ€” every paid surface shows "per major version"; no stale "one-time" / "lifetime" wording remains.
  • Detail completeness โ€” every product page renders an overview and rich features, with no template leaks.
  • Paid vs free detail โ€” paid pages have the tier picker, add-to-cart, and the per-major-version note; free pages have the download CTA and neither.
  • Private-repo products do not render a public "Source" link.
  • Published doc sites โ€” only listed ids link GitHub Pages, and an API Reference appears only where DOC_REFERENCE declares it.
  • Checkout โ€” line items and per-major-version totals compute correctly from a seeded cart.
  • Screenshots โ€” every referenced asset resolves on disk, is WebP, is size-budgeted, has no orphans; galleries use sequential indices with one caption + alt each.
  • GUI vs non-GUI โ€” screenshot hero/grid/gallery appear on exactly the GUI products; others keep the glyph thumbnail.
  • Hero stats match the rendered grid (category and free counts), and the detail hero shows the full screenshot (no cover-crop).
  • Lightbox keyboard navigation is wired in source; every grid card exposes name, category, tagline, and a price.
  • HTML pages reference the shared assets and expose the expected mount points.

Run locally with node --test.

Continuous integration

.github/workflows/ci.yml runs on every push and pull request:

  • node --check on store.js and hud-theme.js.
  • The full node --test storefront suite.
  • An HTML sanity check โ€” doctype present and balanced <script> tags on every page.

Runs free on GitHub Actions because the storefront repo is public.

Engineering decisions

  • One catalog, derived UI. PRODUCTS is the single source of truth; grid, filters, stats, detail pages, and downloads are all derived โ€” no hardcoded counts.
  • Generated families. The 30 stryke packages and the zsh-plugin family are generated from compact tables (strykePkg, metaProduct) instead of repeated objects.
  • Long-form copy in DETAILS. Overviews and feature lists are ported from each repo's README / source and merged in at load, keeping identity and copy separated but unified.
  • Per-major-version pricing replaces one-time licensing across all paid products.
  • Forks excluded. Third-party projects mirrored in the org are not storefronted, to avoid misattribution.
  • Private-repo safety. Proprietary paid products omit the public "Source" link so visitors never hit a 404.
  • Tag-download fallback. Repos without a release link to their /tags page rather than a dead release URL.