GA4GH Beacon v2 API — genomic variant discovery service for African genomics datasets
# AfriGen-D Beacon v2 — API + UI
**Production genomic data discovery service implementing the GA4GH Beacon v2 specification.**
## What's in this repo
This is a **monorepo** containing both the API (server) and the UI (web client), plus
data-loading tools and infra config. They live in sibling directories and are deployed
as separate containers behind one reverse proxy.
| Path | Role | Stack | Production URL |
|------|------|-------|----------------|
| **`beacon_api/`** + **`beacon_project/`** | **Backend API** — Beacon v2 endpoints (`/api/g_variants`, `/api/datasets`, …) | Django 4.0 + DRF + MongoEngine | `
api-beacon.afrigen-d.dev` |
| **`frontend/`** | **Web UI** — query form, results table, datasets browser | Next.js 14 (App Router) + TypeScript + Tailwind | `
beacon.afrigen-d.org` |
| **`afrigend-beacon2-tools/`** | Data-loading toolkit — VCF→Beacon transformer, phenotype loader, MongoDB import/export | Python | (offline) |
| **`compose/`** | Docker Compose stacks for dev / prod / frontend-only | YAML | — |
| **`nginx/`** | Production reverse proxy config (the proxy actually serving prod today) | nginx | — |
| **`scripts/`** | Deploy / monitor / data-load operational scripts | Bash + Python | — |
| **`nextflow/`** | Optional pipeline for bulk data ingestion at scale | Nextflow | — |
| **`docs/`** | API reference, conformance results, security docs | Markdown | — |
**Data layer** (containerised, internal only): MongoDB 5.0 (genomic data, indexed by
chromosome/position) + Redis 6 (response cache, rate-limit counters).
> The API and UI are deployed at **different subdomains** today — `api-beacon.afrigen-d.dev`
> serves the API, `beacon.afrigen-d.org` serves the UI. The UI calls the API at runtime
> via the relative `/api/...` path, which the reverse proxy routes to the API container.
## Runtime architecture
```
┌────────────────────────────────────────────────────────────┐
│ nginx (production reverse proxy, TLS termination) …