{"slug": "nichedb-0-2-0-the-domain-layer-counted-daily", "title": "NicheDB 0.2.0: the domain layer, counted daily", "summary": "NicheDB released version 0.2.0, introducing a new 'domains' collection that tracks the domain name system's market using data from nTLDData's free JSON API. The release includes eight feeds with pages, RSS, JSON Feed, API endpoints, and MCP tools, along with fixes for deduplication and timestamp handling.", "body_md": "Twenty seven commits had merged into NicheDB since the first release and none of them had reached anybody. The CLI publishes from a GitHub release and from nothing else, so a merge to main is a midpoint rather than a finish. 0.2.0 cuts them loose.\n\nThe headline is a new collection: domains.\n\nNicheDB tracks packages, filings, launches, weather, markets, crime, public money, housing, jobs and news. It had no view of the layer all of that lives on, which is the domain name system's own market. It does now, built from ntlddata.com's free JSON API. No key, CC-BY, and aggregate only, because ICANN's zone file terms permit analysis but not redistribution.\n\nEight feeds, each with a page, RSS, JSON Feed, an API endpoint and MCP tools:\n\nTwo clocks. Domain counts come from zone files and are a day old. Anything attributed to a registrar comes from ICANN's monthly reports and runs about a quarter in arrears, because zone files carry no registrar information at all. Every figure of the second kind is carried with the month it describes and is never merged with the daily count.\n\nTwo populations. New gTLDs and the pre-2012 generics are never added together. A source names one and labels its rows with it.\n\nThe overview endpoint never answers without an explicit scope, and never answers for scope=all. Both hang until the client gives up, while scope=new returns in under a second. So the totals source refuses scope=all rather than scheduling a guaranteed timeout on every run.\n\nThe page size parameter is floored at ten. Asking for three rows returns ten while the response's own metadata says three, so a \"top five movers\" source that trusted the parameter would publish ten.\n\nDetected timestamps carry no zone, and a bare Date parse reads them as local time, which files a midnight row under the previous day for every reader west of UTC.\n\nOne more came from the live data rather than the docs. The first day of the daily series carries zero adds, zero drops and zero net, because it had no day before it to difference against. Across a thousand registries that cannot be a real day, so it publishes as movement not yet known instead of \"+0 on the day\", which would read as a flat day rather than a missing one.\n\nWeather as it is issued rather than forecast. Automotive with a VIN history report scored against a measured complaint baseline. Markets with the world's exchanges as a register and the corporate actions that move them. Crime by city, state and force area. Public money across three governments. Housing and jobs as governments measure them. AI incidents. News, where every story files under the desk that published it.\n\nPlus the fixes worth naming: dedup now folds a source against its own second feed, not only against the other sources, so a publisher exposing one article through two of its feeds stops arriving twice. The dedupe keys reach Postgres as a real array rather than a comma joined string, which had been aborting whole ingestion runs.\n\nThe collection is at [https://nichedb.dev/c/domains](https://nichedb.dev/c/domains) and every feed on it is public. The CLI is `npm i -g @profullstack/nichedb@latest`.\n\nData on the domains collection is from nTLDData (ntlddata.com), CC-BY-4.0.", "url": "https://wpnews.pro/news/nichedb-0-2-0-the-domain-layer-counted-daily", "canonical_source": "https://dev.to/chovy/nichedb-020-the-domain-layer-counted-daily-28id", "published_at": "2026-09-09 10:45:05+00:00", "updated_at": "2026-09-09 11:10:58.919435+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["NicheDB", "nTLDData", "ICANN"], "alternates": {"html": "https://wpnews.pro/news/nichedb-0-2-0-the-domain-layer-counted-daily", "markdown": "https://wpnews.pro/news/nichedb-0-2-0-the-domain-layer-counted-daily.md", "text": "https://wpnews.pro/news/nichedb-0-2-0-the-domain-layer-counted-daily.txt", "jsonld": "https://wpnews.pro/news/nichedb-0-2-0-the-domain-layer-counted-daily.jsonld"}}