Skip to content

Revamp#70

Draft
vpetersson wants to merge 24 commits intomainfrom
revamp
Draft

Revamp#70
vpetersson wants to merge 24 commits intomainfrom
revamp

Conversation

@vpetersson
Copy link
Contributor

  • Complete rewrite from Astro+React to Hugo — replaces the entire frontend stack with Hugo Content Adapters, Go templates, and vanilla TypeScript. No Node.js build pipeline; hugo --minify does everything (HTML generation, TypeScript compilation via esbuild, Tailwind v4 CSS processing).
  • Normalized product data model — all 548 product YAML files restructured with consistent fields: headquarters as string[], platforms extracted to top-level, stats always present, pricing as structured objects. Validated at dev time by a Zod schema (scripts/lib/schema.ts).
  • New product profile pages — G2-style individual pages at /products/{slug}/ with structured data (Schema.org SoftwareApplication), OG images from logos, and full product details.
  • Client-side filtering and sorting — FilterEngine in TypeScript toggles table row visibility via data-* attributes with URL param sync. Includes search, category/platform/compliance dropdowns, open-source and free-trial toggles, and column sorting.
  • New filter dimensions — compliance fields (SOC 2, ISO 27001, HIPAA, CRA, FedRAMP), open-source vs free separation, license types, and GitHub stars for open-source products.
  • SEO — Schema.org markup (WebSite, BreadcrumbList, SoftwareApplication, ItemList), llms.txt / llms-full.txt output formats, auto-generated sitemap, UTM-tracked outbound links.
  • CI/CD simplified — GitHub Actions now installs Bun + Hugo binary directly, runs hugo --minify, and deploys. No more auto-committing generated files or needing contents: write permission.
  • Dataset licensed under ODbL 1.0 — product data in data/products/ is now explicitly licensed under the Open Data Commons Open Database License, requiring derivative databases to remain open.

What changed

Before (Astro+React) After (Hugo)
Astro SSG + React components Hugo SSG + Go templates
Node.js preprocessing scripts Content Adapters (_content.gotmpl)
React virtual table + Zustand stores Vanilla TS FilterEngine + data-* attributes
npm + custom build pipeline Bun + hugo --minify
Single monolithic JSON data file Individual YAML files per product
No product profile pages /products/{slug}/ with Schema.org
ESLint Biome

Test plan

  • bun install && bun run build succeeds
  • bun run check validates all 548 YAML files
  • bun run dev — homepage loads with filterable table
  • Filters work: search, categories, platforms, compliance, open-source, free trial
  • URL params sync (apply filters, reload page, filters persist)
  • Product profile pages render at /products/{slug}/
  • Taxonomy pages work (/categories/cms/, /platforms/android/)
  • /llms.txt and /llms-full.txt render correctly
  • GitHub Actions workflow deploys successfully

vpetersson and others added 24 commits February 15, 2026 17:41
Replace the entire Astro+React frontend with Hugo using Content Adapters.
Product data converted from JSON to normalized YAML (548 products).
Individual product profile pages, taxonomy pages, client-side filtering,
Schema.org annotations, OG/Twitter cards with logos, UTM-tracked outbound
links, and LLM-friendly pages (llms.txt). Build is now just `hugo --minify`
with no preprocessing pipeline. Dependencies reduced from 773 to 38 packages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move original logo source files to logos/ (outside data/ to avoid
Hugo parsing binary files). Add .hugo_build.lock to .gitignore.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add license (SPDX) and source_code_url fields to product schema
- Add license and source code data for 11 verified open source products
- Fix 6 products incorrectly marked as open source (piSignage, StudioLite,
  Signet, EasyDisplay, info-beamer OSS, Raspberry Digital Signage)
- Fix Yodeck headquarters from USA to Greece
- Separate "Free/Open Source" into distinct "Open Source" vs "On request"
  labels in pricing column
- Add OSS badge to product rows for open source products
- Show SPDX license linked to spdx.org in product detail sidebar
- Add source code link and GitHub stars widget to product detail pages
- Update SUBMISSION_GUIDE.md with HQ determination rule and OSS field docs
- Redesign site with new color system, layouts, and logo pipeline

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Enterprise, healthcare, and government buyers need to filter products by
security certifications. This adds a compliance object to the data schema
(defaulting all fields to false), a filterable dropdown in desktop/mobile,
URL param persistence, and badge display on product detail pages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The curated product data (data/products/) represents significant
curation effort. ODbL is purpose-built for databases and requires
derivative databases to remain open while allowing free use of
produced works.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The product list is too large to maintain in the README. Visitors
should use the website instead. Also removes the Data section and
tech stack line from the footer, and adds ODbL license for the dataset.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Self-host Inter font via @fontsource-variable/inter to eliminate
render-blocking Google Fonts requests. Defer PostHog analytics with
requestIdleCallback. Add skip-to-content link, aria-expanded on all
dropdown toggles, aria-label on search input, and role=search landmark.
Fix color contrast on mobile table labels (neutral-400 to neutral-500).
Add explicit width/height to processed product logo images for CLS
prevention. Update footer tagline to "most open".

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fetch and display RSS/Atom feeds on product pages (when rss_feed_url is
set) and on a new /news/ page aggregating industry feeds (Invidis,
Sixteen:Nine) and product feeds. Feeds are cached for 24h and rebuilt
nightly via GitHub Actions cron.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Runs Biome lint, Zod schema validation, and Hugo build on all pull requests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Track whether products offer an API (with developer portal URL),
CLI, or MCP support. Display these in the Quick Facts sidebar on
product profile pages. Includes schema validation requiring
developer_portal_url when has_api is true.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Skip feeds that declare a non-English language via <language> or
xml:lang. Add utm_campaign=product_rss and utm_campaign=news_feed
to outbound RSS links.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add pagination to the product list (50 per page) and news page (20 per
page) using client-side JS, preserving full-DOM filtering/sorting.
FilterEngine now uses a two-pass approach: filter matching rows, then
paginate visible ones. Page state syncs to URL params. Also nullify
TCIT's RSS feed (Chinese-only, no language tag) and add authentication
filter, schema updates, and related product data changes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add checkbox-based fields for categories, platforms, delivery model,
compliance, authentication, and developer tools. Align pricing fields
with current schema (payment model, billing basis). Add self-signup
field.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add named volume for Hugo's getresource cache so fetched RSS feeds
survive container restarts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Rename issue template to remove emoji, add suggest-a-change template
- Add "Suggest an edit" deeplink on product pages
- Add "Suggest a new product" deeplink on homepage
- Remove Submit Change button and GitHub icon from header
- Move GitHub icon to footer, change footer link to "Submit a Product"
- Fix githubRepo param to point to Screenly/signagelist

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rewrite 162 descriptions to remove marketing language (enterprise-grade,
at scale, seamless, customer experience, etc.) and replace vague terms
(solution, experiences) with plain English. Remaining 268 descriptions
were already in good shape from the initial meta tag fetch.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… on smaller screens by adding the 'md:hidden' class.
@514sid 514sid marked this pull request as draft February 24, 2026 16:43
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.

2 participants