# GNR — Product Requirements (v1.0)

Global Names Registry is a small reference site: main navigation, an explanation of reserved example domains, a Root Zone Database of top-level domains with a type filter and per-domain delegation records, and site search.

**Problem.** Readers following a documentation link need authoritative, navigable reference content about reserved domains and the top-level domains in the sample registry.

## Users
- **Documentation reader** — Understand reserved domains and follow the references.
- **Registry researcher** — Look up a top-level domain, its type and manager, by browsing, filtering or searching.

## Goals
- Every link leads to a real page.
- The domain list is complete and filters are exact.
- User-supplied search text is never interpreted as markup.

## Home and navigation (NAV)

Header, search box and top-level sections.

- **FR-NAV-01** (Must) The home page shows the heading "Global Names Registry" with links Domain Names, Number Resources and Protocol Assignments, and a header with every top-level section.
  - Logo link "Homepage"; nav "Main" with Domains, Protocols, Numbers, About; search box "Search the registry" with "Go"
  - Protocols, Numbers and About open pages with those headings and "Reference content."
  - The logo returns to /registry/
- **FR-NAV-02** (Could) On a 375 px wide viewport the logo and nav stay on top and the search input spans the full width below, without horizontal scroll.

## Example-domains help (HLP)

Explanation of reserved example domains.

- **FR-HLP-01** (Must) The help page explains the reserved domains and lists further reading.
  - Heading "Example Domains"; text mentions RFC 2606 and RFC 6761 and says the domains "are not available for registration or transfer"
  - Further Reading links "Registry-managed Reserved Domains" and "Root Zone Database"; footer "Last revised 2017-05-13."
  - "Registry-managed Reserved Domains" opens a table of 7 rows (example, test, localhost, invalid, example.com, example.net, example.org), each "Reserved for documentation and testing"
- **FR-HLP-02** (Should) Every link in the help page content resolves to a real page.
  - The RFC 2606 and RFC 6761 links return 200, not 404

## Root Zone Database (TLD)

Table of the 20 sample top-level domains with a type filter.

- **FR-TLD-01** (Must) The Root Zone Database lists every top-level domain with its type and manager.
  - Columns Domain, Type, TLD Manager; Type select initially "All"
  - 20 rows from .aaa to .vn in alphabetical order
  - .com row: generic, Meridian Global Registry Services
- **FR-TLD-02** (Should) The Type select reloads the table with only that type and keeps its selection.
  - sponsored: .edu, .gov (URL has ?type=sponsored)
  - country-code: 11 rows .ac .ad .ae .au .de .io .jp .sg .uk .us .vn
  - generic: 6 rows .aaa .app .com .dev .net .org
  - generic-restricted: 1 row .biz
  - All: 20 rows
- **FR-TLD-03** (Could) An unknown type value shows an empty table with the select on "All"; it is not an error.
- **FR-TLD-04** (Could) Each domain links to its delegation record, and a missing record is a real 404 inside the site chrome.
  - .vn opens /registry/domains/root/db/vn.html, heading "Delegation Record for .VN", sponsoring organisation "Ministry of Information and Communications of Socialist Republic of Viet Nam", "Type: country-code"
  - An unknown domain returns HTTP 404, heading "Not Found", header nav still present

## Site search (SRC)

Search over domain names and managers.

- **FR-SRC-01** (Should) Search matches domain names and TLD managers case-insensitively and lists the matching domains.
  - "registry": heading "Search results for “registry”" and 8 results .app .biz .com .dev .jp .net .org .us
  - "UK": one result .uk, opening the delegation record for .UK (sponsoring organisation "Albion Names Ltd")
- **FR-SRC-02** (Should) A search that matches nothing, including an empty query, says "No results found."
  - "zzzz": heading "Search results for “zzzz”" and "No results found."
  - Empty query: heading "Search results for “”" and "No results found."

## Non-functional requirements

- **NFR-01** (Must) The search query is echoed as text and escaped; markup entered in the query is never rendered.
  - ?q=<b>x</b> shows the literal text <b>x</b>; nothing is bold

## Out of scope

- Protocols, Numbers and About content (placeholders)
- Registering or transferring domains
