Skip to content

v1.6.0: enforce schema via Ajv#15

Merged
ch-bas merged 1 commit into
mainfrom
feature/nextjs-frontend
Jun 17, 2026
Merged

v1.6.0: enforce schema via Ajv#15
ch-bas merged 1 commit into
mainfrom
feature/nextjs-frontend

Conversation

@ch-bas

@ch-bas ch-bas commented Jun 17, 2026

Copy link
Copy Markdown
Owner

Schema & validation:

  • Enforce schema/camera.schema.json in the build via Ajv (was only hand-checking 5 fields; schema had silently drifted). CI now fails on any violation.
  • Declare 11 fields the data already used: localized prices (msrp_eur/gbp/inr/aed/ aud/cad/vnd/chf), markets, generation, release_notes.
  • Add storage.notes; widen protocols enum with hdcvi and mxpeg.

Data:

  • Remove invalid ip_rating: null from 3 indoor cameras (Amcrest ASH42-W, Tapo C121/C135).
  • Reolink Video Doorbell PoE: verified Frigate config + HA details + soc/poe_class/environment.

Build & CI:

  • Decouple dataset mirroring: opt-in via DATA_MIRROR_DIR (local gitignored .env), no hardcoded downstream path. Add ajv/ajv-formats; npm ci step in CI workflows.

Website:

  • Point README + package.json homepage to cctv-database.com.
  • GitHub Pages demo (docs/index.html) now redirects to the site; keep a standalone offline copy at docs/demo.html. README states the dataset is CC0 and always will be.

What does this PR do?


Checklist

For new cameras

  • JSON file is under cameras/<brand-slug>/<model-slug>.json
  • id is a unique lowercase slug matching the file path
  • brand, model, type, resolution are all present
  • At least one URL in sources (manufacturer datasheet or reputable retailer)
  • npm run build passes locally with no errors

For corrections

  • Include a source URL confirming the correct value
  • npm run build passes locally with no errors

For schema / tooling changes

  • Existing cameras still validate (npm run build)
  • Updated docs/glossary.md if new fields were added

Source(s)


Notes

…v-database.com

Schema & validation:
- Enforce schema/camera.schema.json in the build via Ajv (was only hand-checking
  5 fields; schema had silently drifted). CI now fails on any violation.
- Declare 11 fields the data already used: localized prices (msrp_eur/gbp/inr/aed/
  aud/cad/vnd/chf), markets, generation, release_notes.
- Add storage.notes; widen protocols enum with hdcvi and mxpeg.

Data:
- Remove invalid ip_rating: null from 3 indoor cameras (Amcrest ASH42-W, Tapo C121/C135).
- Reolink Video Doorbell PoE: verified Frigate config + HA details + soc/poe_class/environment.

Build & CI:
- Decouple dataset mirroring: opt-in via DATA_MIRROR_DIR (local gitignored .env),
  no hardcoded downstream path. Add ajv/ajv-formats; npm ci step in CI workflows.

Website:
- Point README + package.json homepage to cctv-database.com.
- GitHub Pages demo (docs/index.html) now redirects to the site; keep a standalone
  offline copy at docs/demo.html. README states the dataset is CC0 and always will be.
@ch-bas ch-bas self-assigned this Jun 17, 2026
@ch-bas ch-bas changed the title v1.6.0: enforce schema via Ajv, close schema/data drift, point to cct… v1.6.0: enforce schema via Ajv Jun 17, 2026
@ch-bas ch-bas merged commit f152b98 into main Jun 17, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant