Skip to content

Add category pages for self-host and CLI app directories - #113

Merged
RaviTejaKNTS merged 4 commits into
mainfrom
feat/directory-category-pages
Nov 10, 2026
Merged

RaviTejaKNTS merged 4 commits into
mainfrom
feat/directory-category-pages

Conversation

@RaviTejaKNTS

Copy link
Copy Markdown
Collaborator

Why

A search-traffic audit on 2026-11-10 found that /self-host-apps shows 24 of 4,913 apps in its server HTML and /cli-apps shows 30 of 309. ?page= and ?category= URLs return the same static HTML as page one and are noindex by design. stack127_docs/caching.md and seo.md already name the fix: a category gets its own path with its own registry row.

What changes

  • Static category pages at /self-host-apps/categories/<category> and /cli-apps/categories/<category>. Each lists every app in the category as lean server-rendered rows.
  • Each category is a directory child page: its own stack127_pages and stack127_directory_pages rows and its own MDX intro.
  • Both hubs get a "Browse by category" block of plain links, driven by the registry, so an unpublished category never produces a dead link.
  • A category needs at least 15 apps to get a page.
  • Scripts under scripts/stack127/app-categories/ insert missing draft rows and prepare the publisher manifest.
  • Migration 20261110120000_app_category_pages.sql adds the count function and triggers that keep category pages fresh and retire a page that drops under 15 apps. It grants the new functions to stack127_app when that role exists.

Publication plan

  • CLI apps: 12 category pages go public and indexable after release, through the directories publisher. Their titles, search fields, and intros are written and reviewed in development.
  • Self-host apps: the 39 category pages stay unpublished in production. The category data is wrong in places (for example "video-conferencing" holds 352 apps, including Gluetun and Frigate). The route ships and returns 404 until the data is cleaned and the pages are published.

Checks

  • npm run quality: 116 tests pass. Focused tests: 54. Development database tests: 6. Strict static source check passes.
  • Largest category page in development: 818,472 bytes of HTML (AI and ML, 1,201 apps).
  • Sol review found one blocker (missing stack127_app grant) and two smaller issues. All are fixed in bc732927; a re-check of that commit is running.

After release

  • Run scripts/stack127/app-categories/verify-app-role.sql against production to confirm the stack127_app role can use the new functions.
  • Publish the 12 CLI category pages with the directories publisher.

Note on PR #112

PR #112 removes the hardware directories and touches some of the same shared files (scripts/stack127/cache/targets.mjs, proxy.ts, lib/registered-site-pages.json). Whichever merges second needs a merge from main.

🤖 Generated with Claude Code

RaviTejaKNTS and others added 3 commits November 10, 2026 13:08
Each of the 12 published CLI categories gets its own intro naming the
kinds of tools it lists. Titles and search fields are saved in the
development database for the publisher to carry to production.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
@RaviTejaKNTS
RaviTejaKNTS merged commit ae7d084 into main Nov 10, 2026
4 checks passed

This branch was previously deployed

1 inactive deployment
production — d3b08ee2 Deployed Nov 10, 2026 by RaviTejaKNTS via verify-production-build #105
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.

1 participant