Files
dvdrw 4bb64a8ca3 init: initial commit
- ticker / QR ad overlay / break slide graphics (1920×1080) with all
  geometry derived from one shared module (src/shared/obs-geometry.mjs)
- OBS scene-collection generator (scripts/generate-obs-scenes.mjs) and a
  read-only in-dashboard setup verifier, both driven by the same module
- en/sr dashboard i18n selected via bundle config; configschema.json with
  neutral first-run defaults seeded from optional branding config
- install.sh / systemd user service / update.sh for venue deployment
- reference OBS scene collection + profile from a real venue as fixtures
2026-07-15 19:30:32 +02:00

1.2 KiB

Contributing

Thanks for taking a look!

Setup

The bundle develops inside a NodeCG install:

mkdir venue-dev && cd venue-dev
npm pack nodecg@^2 && tar xzf nodecg-*.tgz --strip-components=1 && rm nodecg-*.tgz
npm install --omit=dev
mkdir -p bundles cfg && cd bundles
git clone https://git.dvdrw.dev/kckljajicevo/nodecg-venue-gfx.git && cd nodecg-venue-gfx
npm ci
npm run dev        # watch + auto-restarting NodeCG on :9090

(scripts/install.sh --local . automates the same thing.)

Ground rules

  • dashboard/, graphics/, extension/ are build outputs — never edit or commit them; sources live in src/.
  • Geometry shared with OBS lives only in src/shared/obs-geometry.mjs (plain JS + .d.mts declarations — keep both in sync).
  • UI strings live in src/i18n/ — no literals in panel components. New locales: copy en.ts, register in index.ts, extend the enum in configschema.json.
  • npm run build and the TypeScript checks must stay green: npx tsc --noEmit -p src/{dashboard,graphics,extension}/tsconfig.json.
  • Changes to the generated OBS collection shape should be validated by a real import into OBS ≥ 31.

License

AGPL-3.0 — contributions are accepted under the same license.