openvibers/openvibe.domains STATUS.json

STATUS.json

main 5.1 KB · 59 lines · json

1{
2 "repository": "OpenVibers/OpenVibe.Domains",
3 "version": "0.2.0",
4 "stage": "product",
5 "code": true,
6 "wave": "v1",
7 "plan": "OpenVibe.Domains v1: a stateless read-only front over OpenVibe.Host's domain price catalog and OpenVibe.Tools' public domain history — name checks, one page per ending, one page per domain, a JSON API, and the service skeleton (deploy, discovery, readiness, tests)",
8 "runtime": "node 22, express 4",
9 "port": "5070",
10 "domain": "openvibe.domains",
11 "contracts": "openvibe-contracts v0.419.0",
12 "sdk": "openvibe-sdk v0.161.0",
13 "shared": "openvibe-shared v4.238.0",
14 "packages": [
15 "openvibe-contracts v0.419.0",
16 "openvibe-sdk v0.161.0",
17 "openvibe-shared v4.238.0"
18 ],
19 "summary": "OpenVibe.Domains is a stateless front: no database, no sign-in, no events. It reads OpenVibe.Host's internal catalog (GET /api/v1/catalog/domains, /domains/check?name=, /domains/:tld) and OpenVibe.Tools' public history (GET /api/v1/domains, /domains/:domain) through small in-process caches, prices every registrar row into one-, three- and five-year totals with the cheap-first-year renewal trap, and serves server-rendered pages (home, name search, one ending, one domain) plus a read-only JSON API. It has the service plumbing the other OpenVibe sites have: helmet/CSP, health and truthful readiness (degraded, never 503, when either upstream is down), release.json and /release-metrics, /shared, robots/sitemap/llms, a per-IP limit on /api/v1 and /search, graceful stop, deploy files and tests.",
20 "works": [
21 "Name parsing (server/names.js): URLs, ports, a leading www., spaces and underscores in the label, IDNs via url.domainToASCII, co.uk endings, 1-63 character labels and the 253-character limit; display keeps Unicode",
22 "Pricing (server/pricing.js): y1 = register, y3 = register + 2 renew, y5 = five_year or register + 4 renew, the renewal trap, cents rounding, USD rows compared and sorted by y3 with non-USD rows flagged and kept after them",
23 "Two cached data clients (server/data/): injectable fetchImpl, 8 s timeouts, a 2,000-entry expiry Map, 10/10/2/10-minute TTLs, a failure is null and one short log line",
24 "Pages (server/http/pages.js, server/views/index.js): / with the popular catalog and Tools lists, /search?q= (noindex), /tld/:tld, /.dev 301, /d/:domain and a 404; plain placeholder views on the shared Frame with the service id domains",
25 "Read-only JSON API at /api/v1: search, tlds, one tld, one domain; CORS-open; 400 problem+json for a bad name and 404 for an unknown ending; 120/min per IP shared with /search",
26 "Service plumbing: helmet with Help's CSP, /api/health, /api/ready (Host and Tools optional, so a failure is degraded not 503), release.json and /release-metrics, /shared, /robots.txt, /sitemap.xml (every catalog ending, lastmod from the release), /llms.txt, /metrics on loopback, graceful stop",
27 "Deploy files: systemd unit on /opt/openvibe.domains, nginx vhost with www -> apex, TLS, security headers, GET-only /api/v1 and loopback-only /metrics",
28 "Tests: names, pricing, the data clients' cache/expiry/failure/timeout, and the booted app's pages, redirects, API shapes, CORS, discovery and degraded readiness",
29 "Control panel (DOM-2): sign-in with OpenVibe.Network (client domains); connect Cloudflare (token verified, stored as a secret in the person's own Network project granted for reveal to api.cloudflare.com only); zones synced; records read live; every change a domains.proposal@1 approved on its page or in the Action Center (domains.actions.read, domains.proposal.decide), applied in order with a stale check, rolled back in one step; audit; account export and deletion"
30 ],
31 "notYet": [
32 "The pages are plain placeholders (server/views/index.js) written for v1's plumbing; the main session replaces server/views/ with the real design",
33 "No service manifest in openvibe-contracts yet: no domains.* capability is registered and no other service calls this one",
34 "No database, no sign-in, no sessions, no event subscriptions and no stored data (v1 is deliberately stateless)",
35 "No registrar links or affiliate handling: prices are shown with the registrar's name, not linked out yet",
36 "Only /api/v1 and /search are rate limited; the HTML pages are served to everyone",
37 "Porkbun, Namecheap and Spaceship connections; DNSSEC DS at the registrar; bulk nameserver changes; agents proposing through MCP"
38 ],
39 "capabilitiesRegistered": false,
40 "serviceManifestRegistered": false,
41 "deployed": false,
42 "placeholderInSites": true,
43 "features": [
44 "name parsing",
45 "registry availability check",
46 "three- and five-year price totals",
47 "renewal trap",
48 "one page per ending",
49 "one page per domain with public history",
50 "read-only JSON API",
51 "cached upstream clients",
52 "truthful readiness",
53 "discovery",
54 "deploy files"
55 ],
56 "deployment": "Not deployed yet. Reference unit deploy/systemd/openvibe-domains.service (127.0.0.1:5070, /opt/openvibe.domains, /etc/openvibe/domains.env, user ubuntu) and vhost deploy/nginx/openvibe.domains.conf (openvibe.domains and www, certs under /etc/letsencrypt/live/openvibe.domains/).",
57 "updated": "2026-11-13"
58}
59