pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/github/docs/tree/main/src/products

in="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-bf8570e4081bd07e.css" /> docs/src/products at main · github/docs · GitHub
Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.md

Products

Utilities that read product metadata from content/index.md, build the product map used for navigation and context, and help group products for the home page. This README covers purpose, contracts, usage, workflows, testing, and ownership for the src/products subject.

Purpose & scope

  • Generate a typed productMap keyed by product ID for routing, context middleware, and robots blocking.
  • Derive product group data for the homepage hero/cards, with localization support.
  • Provide stable product name mappings (e.g., Enterprise Server releases) for rendering and telemetry.
  • Excludes: authoring guidance for product content (see content/), TOC authoring, and versioning docs (see src/versions).

Architecture & key assets

  • lib/all-products.ts: Reads content/index.md frontmatter, builds productMap (id, name, href, dir, toc, wip, hidden, versions, external) and productIds; mutates later via middleware to add nameRendered.
  • lib/get-product-groups.ts: Builds homepage product group structures; resolves localized names via translated content/index.md when present.
  • lib/product-names.ts: Maps product codes (dotcom, GHES versions) to display names.
  • lib/old-developer-products.json: Legacy list used for migration/compat checks.
  • Tests under tests/ validate schemas, product map shape, group helpers, and name mappings.

Data contracts

  • Source: content/index.md frontmatter.
    • children: array of product IDs (directory names under content/).
    • childGroups: array of groups { name, icon?, octicon?, children[] } for homepage cards; children entries can be product IDs or deeper paths.
    • externalProducts (optional): map of product IDs to product objects matching Product shape; used to surface external docs.
  • Product object shape (see Product in lib/all-products.ts):
    • id, name (title or shortTitle), href (first applicable version), dir, toc, wip, hidden, versions (computed), optional external, optional nameRendered (added by middleware).
  • Localization: For product groups, localized content/index.md frontmatter (same keys) is read if available; structure is always taken from English, names can be swapped via octicon matching.

Usage

  • Server context middleware loads productMap into req.context for routing, version checks, and rendering product names.
  • get-product-groups is used to render homepage product cards with localized names when available.
  • productMap drives robots blocking (wip/hidden), nav generation (get-toc-items), and page validation (parent product assertions).

Workflows

  • Update content/index.md to add or reorder products and product groups; ensure new product directories have index.md with frontmatter (title/shortTitle, versions, optional wip/hidden).
  • To add an external product, define it under externalProducts in content/index.md. External products should include as many Product fields as applicable (such as id, name, href), but some fields (like versions) may be omitted.
  • For localized group names, add translated content/index.md with matching childGroups and octicon keys.

Testing

  • Full subject tests: npm test -- src/products/tests
  • Targeted:
    • products.ts validates productMap schema and presence of expected product IDs.
    • get-product-groups.ts covers group helper mapping and localization.
    • product-names.ts checks display name mappings.

Ownership & current state

  • Owners: Docs Engineering. Content changes (titles, grouping, product lists) coordinated with docs-content.
  • State: KTLO; update when products are added/retired or homepage groups change.
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy