4bb64a8ca3
- 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
38 lines
1.2 KiB
Markdown
38 lines
1.2 KiB
Markdown
# Contributing
|
|
|
|
Thanks for taking a look!
|
|
|
|
## Setup
|
|
|
|
The bundle develops inside a NodeCG install:
|
|
|
|
```sh
|
|
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.
|