spb/datacenterindex
Public
HTML 53.9%
TypeScript 44.5%
JavaScript 0.6%
SQL 0.5%
1import type { Metadata } from "next";2import Link from "next/link";3import { LogoMark } from "@/components/brand/logo";4import { Page, PageHeader, Section } from "@/components/ui/card";5import { routes } from "@/lib/routes";67export const metadata: Metadata = {8 title: "About",9 description: "What DataCenterIndex is, how it is built, who makes it and where the data comes from.",10 alternates: { canonical: "/about" },11};1213const LICENSES = [14 { name: "PeeringDB", what: "Facilities, internet exchanges, networks and their presence.", license: "PeeringDB data licence (CC0-like, attribution requested)", url: "https://www.peeringdb.com" },15 { name: "OpenStreetMap", what: "Building footprints, addresses and coordinates for geocoding.", license: "© OpenStreetMap contributors — ODbL 1.0", url: "https://www.openstreetmap.org/copyright" },16 { name: "Wikidata", what: "Operator identities, aliases, parent companies, external identifiers.", license: "CC0 1.0", url: "https://www.wikidata.org" },17 { name: "World Bank", what: "Country population, GDP and electricity indicators.", license: "CC BY 4.0", url: "https://data.worldbank.org" },18 { name: "Operator and government sources", what: "Facility pages, press releases, planning filings, utility and regulator publications.", license: "Facts only; each value links to its source page and licence recorded per source.", url: routes.sources() },19];2021export default function AboutPage() {22 return (23 <Page className="max-w-[880px]">24 <PageHeader eyebrow="About" title="An index, not a directory." description="DataCenterIndex is the structured, versioned graph of the world's data center infrastructure — and its history." />2526 <div className="prose-dci flex flex-col gap-8 text-[14.5px] leading-relaxed text-ink-2">27 <Section title="What it is">28 <p>29 Facilities, campuses, operators, cloud regions, metros, countries, projects, internet exchanges, power and connectivity, linked into one graph. Every field — a capacity in MW, an opening date, a coordinate, a status — carries its provenance: the source, the URL, when it was first and last observed, how it was extracted, and a confidence level. When a source changes, the change is detected, versioned and published to the{" "}30 <Link href={routes.live()} className="text-ink underline decoration-hair-2 hover:text-accent">31 live feed32 </Link>33 .34 </p>35 <p className="mt-3">36 We never invent data. Totals are lower bounds computed from known figures only; estimates are flagged ≈; city-level coordinates are labelled as such and drawn as hollow rings on the map.37 </p>38 </Section>3940 <Section title="How it is built">41 <p>42 A homemade connector platform follows a fixed pipeline: discover → fetch → archive → extract → normalize → reconcile → validate → version → detect changes → publish. Crawling is polite and legal: robots.txt is respected, hosts are rate-limited, unchanged pages are never refetched, no paywall or CAPTCHA is bypassed. Entity resolution merges records across sources only above a strict similarity threshold; ambiguous matches are reviewed by a human.43 </p>44 <p className="mt-3">45 <Link href={routes.methodology()} className="text-ink underline decoration-hair-2 hover:text-accent">46 Read the methodology47 </Link>{" "}48 for confidence scoring, ranking rules and coverage caveats, or browse the{" "}49 <Link href={routes.sources()} className="text-ink underline decoration-hair-2 hover:text-accent">50 source registry51 </Link>52 .53 </p>54 </Section>5556 <Section title="Data attribution and licences">57 <ul className="divide-y divide-hair">58 {LICENSES.map((l) => (59 <li key={l.name} className="grid gap-1 py-3 sm:grid-cols-[160px_minmax(0,1fr)] sm:gap-4">60 <a href={l.url} target="_blank" rel="noopener noreferrer" className="font-medium text-ink hover:text-accent">61 {l.name}62 </a>63 <div>64 <div>{l.what}</div>65 <div className="mt-0.5 text-[12.5px] text-ink-3">{l.license}</div>66 </div>67 </li>68 ))}69 </ul>70 <p className="mt-3 text-[12.5px] text-ink-3">Map tiles: OpenFreeMap · © OpenMapTiles · © OpenStreetMap contributors.</p>71 </Section>7273 <Section title="Who makes it">74 <div className="flex items-start gap-4">75 <LogoMark size={40} className="mt-1 text-ink" />76 <div>77 <p>78 Built and maintained by <span className="font-medium text-ink">Simon-Pierre Boucher</span>. Questions, corrections, data partnerships or API access:{" "}79 <a href="mailto:contact@spboucher.ai" className="text-ink underline decoration-hair-2 hover:text-accent">80 contact@spboucher.ai81 </a>82 .83 </p>84 <p className="mt-2">85 Hosted on{" "}86 <a href="https://www.maclustr.io" target="_blank" rel="noopener noreferrer" className="text-ink underline decoration-hair-2 hover:text-accent">87 MacLustr (www.maclustr.io)88 </a>89 , a distributed Apple-silicon compute cluster, with dedicated servers for the data and crawl tiers.90 </p>91 <p className="mt-2 text-[12.5px] text-ink-3">92 Public API: <Link href={routes.apiDocs()} className="underline decoration-hair-2 hover:text-ink">/api/v1/docs</Link> — same envelope, same provenance as the site.93 </p>94 </div>95 </div>96 </Section>97 </div>98 </Page>99 );100}101