🛡️ NDAA (Section 889) compliance field — dataset-wide rollout
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- javascript, json, next.js
Research direction
Start with schema/camera.schema.json and the web Camera type, then trace where camera data is validated, exposed through the public API, and rendered in the UI. The issue also calls for a tri-state badge, drawer row, feature filter, and evidence-based dataset-wide values, with source lists cached under datasheets/<brand>/. Done means the optional field works across these surfaces and records are populated only where manufacturer evidence supports a value.
Written by the indexing model from the issue text.
Description
🛡️ Overview
A first-class ndaa_compliant field on every camera record, so the dataset can answer a question installers and public-sector buyers ask constantly: "Is this camera legal to deploy under NDAA Section 889?"
Section 889 of the National Defense Authorization Act bans US federal use of video-surveillance gear from a named set of manufacturers. This field captures each camera's manufacturer-stated compliance and powers a tri-state badge + feature filter on the site and the public API.
🧩 The field
// schema/camera.schema.json
"ndaa_compliant": {
"type": "boolean",
"description": "True if the camera is NDAA-compliant (Section 889 — no Hikvision/Dahua/HiSilicon etc. components), as stated by the manufacturer. Omit when unknown; never infer."
}
Optional & non-breaking — existing records validate unchanged. Mirrored in the web Camera type and surfaced in the UI (tri-state badge, drawer row, feature filter).
📐 Methodology — evidence-based, never guessed
| Value | Rule |
|---|---|
✅ true |
The manufacturer officially states the model is NDAA-compliant — a portfolio-wide declaration or a published compliant-model list the model appears on. |
⛔ false |
Either a legal fact — the brand is named in Section 889 (Hikvision, Dahua, Huawei, ZTE, Hytera) or is a wholly-owned sub-brand of one — or a manufacturer-stated per-model non-compliance: a list-based brand's own NDAA list omits that model, its datasheet makes no NDAA claim while siblings do, or it is a known OEM rebrand of a named entity. |
| ⬜ omit | Unknown. No manufacturer statement at all, brand takes no public position, or the claim is disputed/unmappable. We do not assume. |
Compliance lists/declarations are cached locally under datasheets/<brand>/ for reproducibility.
📊 Coverage
Decided: 8,282 / 11,422 records (73%) — 3,511 ✅ · 4,771 ⛔ · 3,140 ⬜ · 47 brands marked compliant. (Last synced to main @ 2.17.0 prep — 11,422 cameras / 139 brands.)
✅ Compliant (official statement / list)
| Brand | ✅ | Brand | ✅ | Brand | ✅ |
|---|---|---|---|---|---|
| Hanwha | 572 | i-PRO | 504 | Uniview | 314 |
| ACTi | 194 | Bosch | 165 | Milesight | 159 |
| Axis | 143 | Reolink | 127 | LILIN | 110 |
| Sunell | 107 | Mobotix | 104 | AVYCON | 97 |
| Arecont Vision | 89 | Digital Watchdog | 70 | Kenik | 66 |
| Matrix | 61 | Honeywell | 60 | Illustra | 60 |
| JideTech | 38 | InVid Tech | 36 | 3xLOGIC | 31 |
| Dallmeier | 30 | Uniarch | 29 | OpenEye | 27 |
| eneo | 26 | VIGI | 25 | ClareVision | 24 |
| Vicon | 24 | Ajax | 23 | Verkada | 20 |
| Vivotek | 19 | GeoVision | 17 | Luma | 17 |
| Pelco | 17 | Avigilon | 16 | Panasonic | 14 |
| Amcrest | 12 | Night Owl | 11 | Speco Technologies | 10 |
| Comelit | 8 | Sparsh | 8 | EverFocus | 7 |
| TKH Security | 7 | Bolide | 6 | Synology | 4 |
| March Networks | 2 | IDIS | 1 |
(List-based brands mark only models actually on the published list / stating it per-datasheet; unlisted models stay ⬜. Notable partial coverage: Hanwha 572/662, ACTi 194/531, Bosch 165/255, GeoVision 17/106, Kenik 66/145, Sunell 107/155, AVYCON 97/153, Amcrest 12/86, Speco 10/61, Uniview 314/353, Milesight 159/185, Comelit 8/41.)
⛔ Non-compliant
| Brand | ⛔ | Basis |
|---|---|---|
| Dahua | 1,982 | Named entity |
| Hikvision | 1,853 | Named entity |
| HiLook | 351 | Hikvision sub-brand |
| ACTi | 265 | Model not on ACTi's official NDAA list (per-model) |
| IMOU | 108 | Dahua sub-brand |
| EZVIZ | 87 | Hikvision subsidiary |
| HikMicro | 86 | Hikvision thermal sub-brand |
| Prama | 17 | Hikvision-OEM rebrand |
| Milesight | 12 | Non-NDAA C-series variants (per-datasheet) |
| Sparsh | 9 | No NDAA claim on datasheet (per-model) |
| Matrix | 1 | No NDAA claim on datasheet (CIBR50FL40) |
Two flavours of ⛔: legal fact (named entities + wholly-owned sub-brands — Hikvision/Dahua/HiLook/IMOU/EZVIZ/HikMicro) vs manufacturer-stated per-model (ACTi/Milesight/Sparsh/Matrix mark the individual models their own list/datasheet does not cover; Prama is a Hikvision-OEM rebrand). Both are evidence-based, never inferred.
⬜ Evaluated → intentionally omitted
- "Not-quite-blanket" claims: Ubiquiti, AvertX ("most" / "a range of" — no clean statement).
- Disputed / OEM-rebrand: Luminys (contested Dahua white-label), Holowits (Huawei ownership unconfirmed → not false either), Annke, LTS, IC Realtime, BCS, LaView, ClareVision-siblings, Lorex (publishes a non-compliance disclaimer).
- Unmappable list: Truen (real per-model claims, JS-rendered pages couldn't be matched).
- No published position: Tapo, Kasa, Ring, Eufy, Wyze, Xiaomi, Arlo, Google/Nest, Sony (per-model letter only), ZKTeco, Kedacom, Tiandy, ABUS, Mapesen, Urmet, FLIR, Jovision, Avtron, and the rest of the consumer/long-tail.
🔜 Future work
- Bulk Hanwha ingest lifted 27 → 572 ✅; Mobotix 16 → 104 ✅; ACTi re-swept (194 ✅ / 265 ⛔, list-based); new India brands Matrix (61 ✅ / 1 ⛔), Prama (17 ⛔, Hik-OEM), Sparsh (8 ✅ / 9 ⛔, per-datasheet) added this cycle.
- Refresh the remaining list-based brands (Uniview, Sunell, AVYCON, GeoVision, Kenik, Speco, Comelit, TKH) against newer list revisions to lift currently-omitted current-gen models.
- Re-check the "not-quite-blanket" brands (Ubiquiti, AvertX, Truen) if they publish a definitive statement/list.
- Long-tail brands with no position today — revisit if they publish one.
⚠️ Notes
false≠ "bad camera" — it reflects Section 889 naming or a manufacturer's own per-model position, relevant only to US federal procurement.- NDAA ≠ TAA (Trade Agreements Act / country-of-origin) — a separate axis, intentionally out of scope.
- Everything is backed by an official manufacturer source; nothing is inferred from country, components, or reputation.
- Dominant language
- JavaScript
- Stars
- 267
- Forks
- 21
- Avg merge
- 4h 18m
- Merged PRs (30d)
- 14
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ch-bas/cctv-camera-database
-
Config works: revodata-i706-p-hsPossibly taken @ch-bas claimed this 2 days ago. Openconfig-report via-web
Difficulty 1/5 Under an hour Newbie friendliness 25/100
ch-bas/cctv-camera-database#405 · 1 assignee ·
Maintainers usually reply within 1 day
-
help wanted
Difficulty 4/5 3-5 days Newbie friendliness 52/100
ch-bas/cctv-camera-database#399 ·
Maintainers usually reply within 1 day
-
help wanted question
Difficulty 2/5 1-3 hours Newbie friendliness 48/100
ch-bas/cctv-camera-database#378 · 4 comments ·
Maintainers usually reply within 1 day
-
help wanted question
Difficulty 2/5 1-3 hours Newbie friendliness 57/100
ch-bas/cctv-camera-database#377 · 2 comments ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 4/5 3-5 days Newbie friendliness 45/100
ch-bas/cctv-camera-database#340 ·
Maintainers usually reply within 1 day
All issues in ch-bas/cctv-camera-database
Similar issues
-
bug Frontend P2-medium UI UX
Difficulty 1/5 Under an hour Newbie friendliness 76/100
Deepak3699/Ai_Mentor#427 ·
Maintainers usually reply within 1 day
-
needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
11ty/buildawesome#4407 · 1 reaction ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
keyxmakerx/Chronicle#1711 ·
Maintainers usually reply within 1 day
-
frontend
Difficulty 2/5 1-3 hours Newbie friendliness 69/100
uoftblueprint/canada-basketball#79 ·
Maintainers usually reply within 1 day
-
New App Request
Difficulty 1/5 Under an hour Newbie friendliness 76/100
ThatGuySam/doesitarm#1126 · 1 comment ·