# AEaH — suite hub (www.aeah.ai) > The front door for two products by Consult Sciences Ltd: **PharmaTerminal** > (https://pharmaterminal.aeah.ai) monitors pharma markets, pipeline, clinical trials, PDUFA > action dates and approvals as they change; **Nebula** (https://nebula.aeah.ai) maps the > peer-reviewed publication evidence behind a technology as an interactive 3D citation map. ## What this site is - **Not a third product.** It is a hub: it explains the two tools, publishes how their data is sourced, states their limits, and links into them. - **Live, not mocked.** The market, news and approval panels on the home page are fetched from PharmaTerminal's own APIs at request time (60–900s cache). If a source is unavailable the page says so; it never renders a placeholder or a stale value as if current. - **No tracking.** No cookies, no analytics, no third-party scripts, no advertising. ## Page map - `/` — live market strip, product summaries, live news + approval panels - `/products` — what each product does, panel by panel, and what each does not claim - `/pricing` — PharmaTerminal's published plans (Explorer free, Professional $49/mo, Enterprise $149/mo) and Nebula (free, beta) - `/methodology` — every upstream source, what is taken from it, and its limits - `/services` — Consult Sciences Ltd engagements for bespoke diligence - `/about` — why the suite is two products rather than one, and the principles behind them - `/status` — live reachability checks per property (no invented uptime percentage) - `/legal` — this hub's position, and links to each product's own policies - `/llms.txt`, `/sitemap.xml`, `/robots.txt` — machine-readable description and crawler directives ## Data sources (all fetched, none fabricated) | Source | Used for | |---|---| | openFDA — Drugs@FDA | PDUFA/action dates, recent authorisations | | ClinicalTrials.gov API v2 | registered trials (NCT id, phase, status, enrolment) | | NCBI PubMed / E-utilities | publication records behind Nebula's evidence maps | | Polymarket | keyword-matched R&D prediction markets | | Market data feed | quotes, changes, volumes, sector indices | | Publisher news feeds | the breaking-news panel, reproduced as published | Full limits per source: see `/methodology`. ## Stack and operation - Next.js 14 (App Router, standalone output) + React 18, one hand-written stylesheet - Internal API bases are read from env with sensible container defaults: `PHARMA_INTERNAL_URL` (default `http://pharmath-terminal-pharmath-terminal-1:3001`), `NEBULA_INTERNAL_URL` (default `http://nebula-yiavqq-nebula-web-1:80`) - Runs as a non-root container on the `dokploy-network` bridge with **no published host port**; Traefik reaches it by container name (`aeah-hub:3000`) via the file provider at `/etc/dokploy/traefik/dynamic/aeah-apex.yml` - `www.aeah.ai` serves the site; `aeah.ai` 301s to it - `GET /api/health` for the container healthcheck ## Local development ```bash npm ci npm run dev # http://localhost:3000 npm run typecheck npm run build ```