bin & helper scripts — cross-repo catalog
Every first-party helper / CLI / build-pipeline / ops script under the local repos at /Users/levander/coding/facekom (excluding node_modules, vendored copies, and .worktrees/.claude/worktrees duplicates). Sibling: INDEX, architecture-overview, customization-architecture, vuer_oss, esign_oss, vuer_css, esign_css, portal_css, vuer_docker.
Common pattern (almost all
vuer_oss/esign_ossCLIs)Shebang
#!/usr/bin/env node→require('../server/bootstrap/process-settings')()+process-listeners(when present) →commanderarg parsing → wire a subset of services intoserviceContainer→setupDb()(Sequelizeauthenticate+ models + helpers) → run. These are operator/ops tools, not part of the request path. The*_cssrepos’bin/dirs are almost entirely build-pipeline code invoked vianpm/yarnscripts (none are installed CLIs — there is nobinfield in anypackage.json).
Working-tree branch caveat (
vuer_oss)The
vuer_ossworking tree is checked out on a customization branch (update/customization/instacash-2026-05-27), so itsbin/may contain scripts that are not ondevel— the genuinely branch-only one isbin/instacash-cli.js(git show devel:bin/instacash-cli.jsfails).bin/comptest.js, by contrast, does exist ondevel(git show devel:bin/comptest.jssucceeds).instacash-cli.jsis catalogued here because it exists on disk; the vuer_oss doc flags it as branch-only. Thevuer_css-FKITDEV-8533-videoorientext/andvuer_css-instacash-update/top-level dirs are customization clones ofvuer_css(samebin/layout) and are not re-listed.
Top-level repo wrapper
| Repo | Path | Language | What it does | How invoked |
|---|---|---|---|---|
| (root) | bin/proxy-ts.sh | Bash (one line) | Stands up a Tailscale-served port 8080 and launches mitmproxy for traffic interception/debugging. Literal contents: sudo tailscale serve 8080 & sudo mitmproxy. | ./bin/proxy-ts.sh (needs sudo + Tailscale + mitmproxy installed) |
vuer_oss — customization/bin/ (per-integration ops CLIs)
All are #!/usr/bin/env node + commander; they bootstrap the OSS serviceContainer/Sequelize and write to the live DB / filesystem. Source: vuer_oss/customization/bin/.
| Repo | Path | Language | What it does | How invoked |
|---|---|---|---|---|
| vuer_oss | customization/bin/batch_restore.js | Node + commander | Restore all archived rooms or flows. Subcommands rooms / flows set the task type; reconciles archive ids vs DB. | node customization/bin/batch_restore.js rooms|flows |
| vuer_oss | customization/bin/export (no ext) | Node + commander | Bulk-export SelfService / Realtime rooms to an SFTP base dir. Options --export-type S|R|SR (default R), -b/--base-directory (default /workspace/sftp), --test. Sets TZ=Etc/UTC, NODE_TLS_REJECT_UNAUTHORIZED=0; wires Customer/Crypto/Media/Data crypto services; registers customization/listeners/self-service-v2. | ./customization/bin/export --et SR -b <dir> |
| vuer_oss | customization/bin/export_batch.js | Node + commander | Batch room export with SHA-512 hashing + index file; options -i/--indexOnly, -ni/--noIndex, -s/--stats, -d/--outputDir. Uses the socket server + queue; MAX_TRIES=30, HASH_ALGO='sha512'; sets NODE_TLS_REJECT_UNAUTHORIZED=0. | node customization/bin/export_batch.js [opts] |
| vuer_oss | customization/bin/export_customers.js | Node + commander | Export customers (incl. imported customers) to an XLSX workbook (@techteamer/xlsx, moment-timezone). Options -dry/--dry-run, -s/--stats, -o/--offset, -l/--limit, -io/--imported-offset, -il/--imported-limit, -d/--outputDir. Pulls fields via customization/portal/PortalData. | node customization/bin/export_customers.js [opts] |
| vuer_oss | customization/bin/export-room-documents.js | Node + commander | Export room document files filtered by room.createdAt. Options --exportPath, --from, --to. Uses @techteamer/mq ConnectionPool + Sequelize Op. | node customization/bin/export-room-documents.js --exportPath <p> --from <d> --to <d> |
| vuer_oss | customization/bin/get-sms-api-info (no ext) | Node + commander | Look up SMS-provider info for a phone number (normalizes via google-libphonenumber) and write a CSV report. Options -n/--number, -r/--report (default ./report.csv). | ./customization/bin/get-sms-api-info -n <phone> |
| vuer_oss | customization/bin/room-delete (no ext) | Node + commander | Delete rooms listed in a CSV (or export/stat flows older than 90 days). Options --csvPath, --separator, --reportFilePath, --exportPath (overrides others), --stat (compute free-disk needed for export). Uses @techteamer/mq + Sequelize Op; has a niceBytes() formatter. | ./customization/bin/room-delete --csvPath <f> [opts] |
| vuer_oss | customization/bin/set-mnb-certs (no ext) | Node + commander | Install MNB (Magyar Nemzeti Bank) CA + client certificates into the DB. Options --caPath, --clientPath, -f/--force (overwrite). Uses @techteamer/mq + server/util/fs-utils. | ./customization/bin/set-mnb-certs --caPath <p> --clientPath <p> [-f] |
vuer_oss — bin/ (top-level ops + build CLIs)
Source: vuer_oss/bin/. Build-pipeline subdirs (build/ script/ style/ watch/ server/) are invoked by the package.json scripts (build/script/style/watch/dev), not standalone.
Ops / maintenance scripts (top-level files)
| Repo | Path | Language | What it does | How invoked |
|---|---|---|---|---|
| vuer_oss | bin/archive (no ext) | Node + commander | Archive or restore rooms / flows (single id, all, or a file-of-ids). Wires Archive/RoomArchive/FlowArchive/AttachmentArchive + crypto. Self-described: “This command can archive or restore rooms and flows.” | ./bin/archive [opts] |
| vuer_oss | bin/batch_restore.js | Node + commander | Restore all archived rooms / flows / self-service rooms (reconciles archive-folder ids vs DB status:'archived'). | node bin/batch_restore.js |
| vuer_oss | bin/attachment.js | Node + commander | exports <path> dumps customer screenshots to filesystem, or copy sends screenshots to e-sign. | node bin/attachment.js exports <path> |
| vuer_oss | bin/check (no ext) | Node + commander | Scan converted rooms; uses ffprobe to flag suspicious video durations vs the activity log; optional --convert to force re-convert via bin/convert. | ./bin/check [--convert] |
| vuer_oss | bin/clean-rooms (no ext) | Node + commander | ”List video-only and audio-only room files.” — list (or --delete) leftover -video./-audio. files in the replay dir. | ./bin/clean-rooms [--delete] |
| vuer_oss | bin/comptest.js | Node + commander | Connectivity + diagnostics CLI (TCP/Redis/TLS probes, then RabbitMQ-RPC diagnostics from the running server). Flags --conn-only, --json, --verbose. (On devel; documented by SYSTEM_CHECK.md.) | node bin/comptest.js [--conn-only] [--json] |
| vuer_oss | bin/convert (no ext) | Node + commander | ”(re)convert room(s) and self service room(s).” — pushes ids to the convert queue; --self-service, -f/--force; decrypts then queueClient.convert.convert(...). | ./bin/convert <ids> [--self-service] [-f] |
| vuer_oss | bin/create-decrypted-room-copy.js | Node + commander | Copy + decrypt a room’s streamed/converted videos to /tmp/vuer_oss/. Option --self-service. | node bin/create-decrypted-room-copy.js <roomId> [--self-service] |
| vuer_oss | bin/create-turn-static-auth-secret.js | Node + commander | Print TURN static-auth credentials via TurnPasswordService. Args <name> [validitySec] [turnServer] [secret]. | node bin/create-turn-static-auth-secret.js <name> [..] |
| vuer_oss | bin/create_rab_token.js | Node + commander | Generate an encrypted JWT “rab” access token for an <accessPath> <expiry> (uses TokenService, config.jwt.secret). | node bin/create_rab_token.js <accessPath> <expiry> |
| vuer_oss | bin/crypt-room (no ext) | Node + commander | ”Encrypt/decrypt rooms with aes-256-gcm cipher.” Encrypts all files of a <roomId> by default; --decrypt to reverse. | ./bin/crypt-room <roomId> [--decrypt] |
| vuer_oss | bin/customer-key (no ext) | Node + commander | Dev-only (exits unless NODE_ENV=dev): “Remove / insert the key of the given customer.” --insert/--memory/--remove. | ./bin/customer-key <id> --insert|--remove |
| vuer_oss | bin/data-export.js | Node + commander | Export rooms / self-service rooms / customers by id-lists/types to an output dir; pulls portal data + custom archive (uses customization/portal/PortalData, sets NODE_TLS_REJECT_UNAUTHORIZED=0). | node bin/data-export.js [opts] |
| vuer_oss | bin/export_batch.js | Node + commander | Batch room export with SHA-512 hashing + index file; options -i/--indexOnly, -ni/--noIndex, -s/--stats, -d/--outputDir. Uses the socket server + queue; MAX_TRIES=30, HASH_ALGO='sha512'; sets NODE_TLS_REJECT_UNAUTHORIZED=0. (Top-level copy; on devel. A same-named script also lives under customization/bin/.) | node bin/export_batch.js [opts] |
| vuer_oss | bin/export_customers.js | Node + commander | Export customers (incl. imported customers) to an XLSX workbook (@techteamer/xlsx, moment-timezone). Options -dry/--dry-run, -s/--stats, -o/--offset, -l/--limit, -io/--imported-offset, -il/--imported-limit, -d/--outputDir. Pulls fields via customization/portal/PortalData. (Top-level copy; on devel. A same-named script also lives under customization/bin/.) | node bin/export_customers.js [opts] |
| vuer_oss | bin/flow-editor.js | Node + commander | Flow Editor CLI. Subcommands: list (list all FlowProto), export <flowName> <outputDir> (FlowProto → JSON), import <inputFile> (JSON → FlowProto). Uses FlowService. No shebang (run via node). | node bin/flow-editor.js list|export|import |
| vuer_oss | bin/flow-extractor-portable.mjs | Node ESM + commander | Extract/export self-service flow records to an output dir. Options -f/--flowName, -d/--date <YYYY-MM-DD> (older-than filter), -s/--status, -o/--outputDir. Uses DataCrypto/CustomerKeyStorage/Settings/Archive + SelfServiceRoomArchive services. | node bin/flow-extractor-portable.mjs [opts] |
| vuer_oss | bin/import-legacy-data.js | Node + commander | ”Imports legacy data from a database specified in the importData.db configuration.” Option -s/--sourceSystemName. Wires Import/Crypto/OCR/Janus/Turn/CustomerKey services. | node bin/import-legacy-data.js -s <name> |
| vuer_oss | bin/instacash-cli.js | Node + commander | InstaCash integration CLI (branch-only). Subcommands: post-contract, get-contract, get-customer, get-invite, revoke-contract, post-application, start-server (mock external-API server). Uses request-promise-native, express, faker; auth from config.get('instacash.external.apiKey'). | node bin/instacash-cli.js <subcommand> |
| vuer_oss | bin/integration-log.js | Node + commander | ”Query and export integration-log entries.” Validated filters -e event, -m messageid, -d direction (incoming/outgoing), -c category (auth/api/internal), -C channel (rest/soap/ad/saml/sftp/rpc), -s status, -f from-date, -t to-date, -o output-dir. | node bin/integration-log.js [filters] |
| vuer_oss | bin/migrate-folder-hierarchy.js | Node + commander | Migrate media folder hierarchy via DirectoryService; inquirer-confirmed, uses fs-extra + async. | node bin/migrate-folder-hierarchy.js [opts] |
| vuer_oss | bin/migrate-rooms (no ext) | Node + commander | ”Creates MediaFile models and timestamps for every room file.” Timestamp step skipped if features disabled. Option -t/--timestamp (force). | ./bin/migrate-rooms [-t] |
| vuer_oss | bin/migrate-self-service-task-data (no ext) | Node + commander | Migrate self-service task data (defines a MigrationError class; multi-line description array). | ./bin/migrate-self-service-task-data [opts] |
| vuer_oss | bin/remove-empty-records-directories.js | Node + commander | Remove empty dirs from the record and replay dirs. Options --skip-record, --skip-replay, --dry-run. Sets serviceContainer.auditLog. | node bin/remove-empty-records-directories.js [--dry-run] |
| vuer_oss | bin/self_service_settings_db_checker (no ext) | Node + commander | ”Get/set faceComparison setting in the Settings table.” | ./bin/self_service_settings_db_checker [opts] |
| vuer_oss | bin/sms-logs-cli.mjs | Node ESM + commander | SMS-log query/export CLI; decrypts via Crypto/DataCrypto services, normalizes numbers via google-libphonenumber, inquirer prompts, Sequelize Op. | node bin/sms-logs-cli.mjs [opts] |
| vuer_oss | bin/storage.js | Node + commander | ”Moves media files between storages.” Flag -m/--move. Sets serviceContainer.auditLog. (Distinct from the root storage.js storage-engine worker process.) | node bin/storage.js --move [opts] |
| vuer_oss | bin/timestamp-check.js | Node + commander | ”Verify timestamp tokens of a room or a selfservice room.” Options -r/--roomId, -s/--selfServiceRoomId, -v/--verify. Uses child_process.execFile. | node bin/timestamp-check.js -r <id> [-v] |
| vuer_oss | bin/validate-config.js | Node ESM (AJV 2020-12) | AJV-validate a config JSON against docs/config/main.json plus customization/docs/config/custom.json and the schema dir. Backs validate_config:dev/:docker. | node bin/validate-config.js config/<env>.json |
| vuer_oss | bin/credits (no ext) | Node | Emit HTML third-party license table (license-checker). | node bin/credits > CREDITS.html (yarn credits) |
| vuer_oss | bin/config.getter.ts | TypeScript (Node strip-types / Deno) | Greps .js for config.get('a.b.c') keys, diffs vs config/ref.json, regenerates it. (Differs from the vuer_css copy — verified diff.) | node --experimental-strip-types bin/config.getter.ts |
| vuer_oss | bin/doc.gen.ts | TypeScript (Deno/Node) | Inlines $ref sub-schemas of docs/config/main.json and generates config-table markdown docs. (Byte-identical to the vuer_css copy — verified cmp.) | node --experimental-strip-types bin/doc.gen.ts (or Deno) |
vuer_oss bin/db/ (DB ops)
| Repo | Path | Language | What it does | How invoked |
|---|---|---|---|---|
| vuer_oss | bin/db/create_user (no ext) | Node + commander | Create a user. Args <role> <username> <password> [email] [firstName] [lastName] [phone]. | ./bin/db/create_user <role> <user> <pass> [..] |
| vuer_oss | bin/db/create_user_batch (no ext) | Node + commander | Batch-create users from an input file. Arg <inFile>. | ./bin/db/create_user_batch <inFile> |
| vuer_oss | bin/db/create_standard_days (no ext) | Node | Seed the OpenHourStandard table (Mon–Sun rows, 10:00–16:00, destroys existing first). | ./bin/db/create_standard_days |
| vuer_oss | bin/db/enable_user (no ext) | Node + commander | Enable a user by username (or by id with -i/--user-id). Usage <username>. | ./bin/db/enable_user <username> [-i] |
| vuer_oss | bin/db/customer-index.js | Node | (Re)index customers (indexCustomer/indexCustomers), logs per-customer success/failure. | node bin/db/customer-index.js |
| vuer_oss | bin/db/migrate-rdbms.js | Node + commander | Migrate data between RDBMS instances. Options -o/--origin <url>, -d/--destination <url>, -t/--testConnectionOnly. | node bin/db/migrate-rdbms.js -o <url> -d <url> |
| vuer_oss | bin/db/sync (no ext) | Node + commander | sequelize.sync(); -f/--force (destructive), --noninteractive. | ./bin/db/sync [-f] [--noninteractive] |
| vuer_oss | bin/db/truncate (no ext) | Node + inquirer | Inquirer-confirmed truncate of all models except User, OpenHourStandard, OpenHourException. | ./bin/db/truncate |
| vuer_oss | bin/db/migrate-data (no ext) | Node + Umzug | Old-DB → new-DB data migration (Umzug + SequelizeStorage). | ./bin/db/migrate-data [opts] |
| vuer_oss | bin/db/pg_sanity_check (no ext) | Node | Read-only Postgres introspection: JSON dump of every public table (row counts, sizes, columns, FKs, constraints, indexes). | ./bin/db/pg_sanity_check |
vuer_oss bin/crypto/
| Repo | Path | Language | What it does | How invoked |
|---|---|---|---|---|
| vuer_oss | bin/crypto/decrypt (no ext) | Node + commander | Decrypt an AES-256-GCM payload via server/gcm. Usage <key> [aad] <data>; pretty-prints (and tries JSON.parse) the result. | ./bin/crypto/decrypt <key> [aad] <data> |
| vuer_oss | bin/crypto/find-room-with-attachments (no ext) | Node | Print the roomId of the most recent room that has an attachment Activity (helper for the remote-extract flow). Uses ./helpers/setup. | node bin/crypto/find-room-with-attachments |
| vuer_oss | bin/crypto/extract-room-attachments-remote.sh | Bash | SSH/SCP wrapper: uploads the crypto scripts to a remote host, finds the latest room with attachments, runs extract-room-attachments remotely, and downloads the zip. Args [HOST=Facekom] [VUER_PATH=/workspace/vuer_oss] [OUTPUT_DIR=~/Downloads]. | ./bin/crypto/extract-room-attachments-remote.sh [host] [path] [out] |
| vuer_oss | bin/crypto/migrate (no ext) | Node + commander | ”Run this command after you enabled some kind of encryption in the config.” Migrates existing data to the newly-enabled encryption scheme; uses the bin/crypto/helpers/*.js per-model migration helpers. | ./bin/crypto/migrate [type] |
| vuer_oss | bin/crypto/helpers/*.js (13 files) | Node | Per-model migration helpers used by bin/crypto/migrate: activity, attachment, callbackrequest, customer, customerDataChange, customerHistory, customervalidation, emaillog, emrtdinfo, general, recognitionattempt, room, smslog. | required by migrate (not standalone) |
On-disk gap in
bin/crypto/
extract-room-attachments-remote.shreferences sibling scriptsextract-room-attachmentsandhelpers/setup.js/helpers/room.js, but in this working treebin/crypto/contains onlydecrypt,find-room-with-attachments,extract-room-attachments-remote.sh,migrate, and ahelpers/dir holding the migration helpers (nosetup.js, noroom.js, noextract-room-attachments). The remote-extract script therefore points at files not present here (likely added on another branch).find-room-with-attachmentsalsorequires./helpers/setup, which is likewise absent on disk.
vuer_oss bin/ build pipeline (invoked by npm scripts)
| Repo | Path | Language | What it does | How invoked |
|---|---|---|---|---|
| vuer_oss | bin/build/build.js | Node | One-shot full build: pushes --no-exit, Promise.all([script.task, style.task]). | node bin/build/build.js (yarn build) |
| vuer_oss | bin/script/script.task.js, script.compiler.js, inlineWorkerPluign.js, browserify-istanbul.js | Node (esbuild) | Client-JS bundling for client/customization pages+layouts → web/js; optional istanbul + inline-worker plugins. | node bin/script/script.task (yarn script) |
| vuer_oss | bin/style/style.task.js, style.compiler.js | Node (Stylus) | Stylus → CSS bundling → web/css (breakpoints/device-sizes/colors injected, autoprefixer, optional clean-css). | node bin/style/style.task (yarn style) |
| vuer_oss | bin/watch/watch.js | Node | Pushes --watch, requires script+style+server tasks. | node bin/watch/watch (yarn watch/yarn dev) |
| vuer_oss | bin/server/server.task.js | Node | Watches twig/trans/server/config/db/engines + (with --restart) restarts the process. | required by watch |
esign_oss — bin/
Source: esign_oss/bin/. Build pipeline mirrors the _css repos (browserify + stylus) and is invoked via yarn build/script/style/watch.
| Repo | Path | Language | What it does | How invoked |
|---|---|---|---|---|
| esign_oss | bin/attachment.js | Node + commander | exports command: dump Attachment rows named ScreenShot for given customer id(s) to <output>/customer-<id>/.... Options -o/--output, -i/--id. | node bin/attachment.js exports -o <dir> -i <ids> |
| esign_oss | bin/sms-api (no ext) | Node + commander | Join an SMS-provider CSV export against SmsLog rows in [from,to] and compute delivery-delta columns. Options -f/--from-datetime, -t/--to-datetime, -s/--source-file, -d/--destination-file, -e/--extended. Documented by docs/features/bin/sms-api.md. | ./bin/sms-api -f <dt> -t <dt> -s <csv> -d <csv> [-e] |
| esign_oss | bin/credits (no ext) | Node | HTML dependency-license table via license-checker. | node bin/credits > CREDITS.html (yarn credits) |
| esign_oss | bin/db/create_user (no ext) | Node + commander | Create a user <role> <username> <password> [email] [firstName] [lastName]; ACL-validates role, refuses if config.activeDirectory set, bcrypt-hashes, writes an AuditLog user/created. | ./bin/db/create_user <role> <user> <pass> [..] |
| esign_oss | bin/db/sync (no ext) | Node + commander | sequelize.sync(); -f/--force prompts (inquirer) before destructive sync. Invoked at boot when db.syncOnStart. | ./bin/db/sync [-f] |
| esign_oss | bin/db/truncate (no ext) | Node + inquirer | Truncate all models except User, OpenHourStandard, OpenHourException. | ./bin/db/truncate |
| esign_oss | bin/db/migrate-data (no ext) | Node + Umzug | Old-DB → new-DB data migration (authenticate old DB by URL, force-sync + umzug.up() new DB, truncate then copy). | ./bin/db/migrate-data [opts] |
| esign_oss | bin/db/pg_sanity_check (no ext) | Node | Read-only Postgres introspection (table row counts/sizes/columns/FKs/constraints/indexes). | ./bin/db/pg_sanity_check |
| esign_oss | bin/db/fetchCustomerDataAndExtendCSV.js | Node + commander (no shebang) | “Extend input CSV with app IDs from the esign_oss database.” Reads a CSV keyed by customer/external id, looks up DB data, writes an extended CSV. | node bin/db/fetchCustomerDataAndExtendCSV.js [opts] |
| esign_oss | bin/test/trans-check.js | Node + commander | Translation linter: per page, loads *.trans.js and scans twig+script for t.t('key') refs, reports missing/unused keys. Options --no-missing, -u/--unused, -c/--collapse. | node bin/test/trans-check.js (yarn trans) |
| esign_oss | bin/build/build.js | Node | Pushes --no-exit, runs script.task+style.task in parallel. | node bin/build/build (yarn build) |
| esign_oss | bin/script/script.task.js, script.compiler.js | Node (browserify) | Browserify-bundle client *.script.js/*.layout.js → web/js. | node bin/script/script.task (yarn script) |
| esign_oss | bin/style/style.task.js, style.compiler.js | Node (Stylus) | Stylus → CSS bundles → web/css. | node bin/style/style.task (yarn style) |
| esign_oss | bin/watch/watch.js | Node | Pushes --watch, requires both tasks (BrowserSync livereload). | node bin/watch/watch (yarn watch) |
vuer_css — bin/
Source: vuer_css/bin/. No installed CLIs; build/dev/validation tooling invoked via npm scripts.
| Repo | Path | Language | What it does | How invoked |
|---|---|---|---|---|
| vuer_css | bin/validate-config.js | Node ESM (AJV 2020-12) | Load docs/config/main.json, resolve $ref sub-schemas from docs/config/, validate the JSON config passed as argv[2]; exit 1 on invalid. | node bin/validate-config.js config/<env>.json (validate_config:*) |
| vuer_css | bin/config.getter.ts | TypeScript (Node strip-types / Deno) | Greps .js for config.get('a.b.c') keys, diffs vs config/ref.json, prints missing keys, regenerates config/ref.json (backs up to old_ref.json). | node --experimental-strip-types bin/config.getter.ts |
| vuer_css | bin/doc.gen.ts | TypeScript (Deno/Node shebang) | Inlines $ref sub-schemas of docs/config/main.json, optionally writes docs/config/ref.json (-s), generates Hungarian config docs markdown. Shebang auto-selects Deno → Node fallback. | ./bin/doc.gen.ts or node --experimental-strip-types bin/doc.gen.ts |
| vuer_css | bin/credits (no ext) | Node | HTML license table via license-checker. | node bin/credits > CREDITS.html (yarn credits) |
| vuer_css | bin/build/build.js | Node | One-shot build: externals + scripts + styles in parallel (Promise.all). | node bin/build/build.js (yarn build) |
| vuer_css | bin/script/script.task.js, script.compiler.js | Node (esbuild) | esbuild page/layout JS bundles → web/js. | node bin/script/script.task (yarn script) |
| vuer_css | bin/script/external.task.js, external.compiler.js | Node (browserify) | Bundle React/react-dom “externals” → web/js/externals. | node bin/script/external.task (yarn script:external) |
| vuer_css | bin/style/style.task.js, style.compiler.js | Node (Stylus) | Stylus → CSS (+ branding) bundles → web/css / web/branding. | node bin/style/style.task (yarn style) |
| vuer_css | bin/server/server.task.js | Node | Watch-mode server task: watches twig/trans/customization/config/engines/server and supervisorctl restart vuer_css. | required by watch/dev |
| vuer_css | bin/watch/watch.js | Node | Pushes --watch, requires externals+scripts+styles+server tasks. | node bin/watch/watch (yarn watch/yarn dev) |
esign_css — bin/
Source: esign_css/bin/. bin/readme.md = “Project related CLI commands.” Only bin/credits is a shebang CLI; the rest are Node modules run via node bin/....
| Repo | Path | Language | What it does | How invoked |
|---|---|---|---|---|
| esign_css | bin/credits (no ext) | Node | HTML license table via license-checker. | node bin/credits > CREDITS.html (yarn credits) |
| esign_css | bin/build/build.js | Node | Pushes --no-exit, Promise.all([script.task, style.task]). | node bin/build/build (yarn build) |
| esign_css | bin/script/script.task.js, script.compiler.js | Node (browserify) | Declare + compile JS bundle targets → web/js. | node bin/script/script.task (yarn script) |
| esign_css | bin/style/style.task.js, style.compiler.js | Node (Stylus) | Declare + compile CSS bundle targets (incl. branding) → web/css/web/branding. | node bin/style/style.task (yarn style) |
| esign_css | bin/watch/watch.js | Node | Forces --watch, requires both tasks. | node bin/watch/watch (yarn watch) |
portal_css — bin/
Source: portal_css/bin/. First-party build helpers; none are runtime/installed CLIs. bin/.eslintrc.json present.
| Repo | Path | Language | What it does | How invoked |
|---|---|---|---|---|
| portal_css | bin/credits (no ext) | Node | HTML <table> license report via license-checker. | node bin/credits > CREDITS.html (npm run credits) |
| portal_css | bin/build/build.js | Node | Orchestrator: --no-exit then Promise.all of externals + scripts + styles; exits unless --watch. | node bin/build/build.js (npm run build) |
| portal_css | bin/script/script.task.js, script.compiler.js | Node (browserify + Babel) | Page/layout JS bundles (@babel/preset-env+preset-react, browserifyDust, optional istanbul) → web/js. | node bin/script/script.task (npm run script) |
| portal_css | bin/script/external.task.js, external.compiler.js | Node (browserify) | React externals bundle → web/js/externals. | node bin/script/external.task (npm run script:external) |
| portal_css | bin/style/style.task.js, style.compiler.js | Node (Stylus) | Stylus → CSS (+ branding) → web/css/web/branding. | node bin/style/style.task (npm run style) |
| portal_css | bin/watch/watch.js | Node | Pushes --watch, requires externals + scripts + styles. | node bin/watch/watch (npm run watch) |
vuer_docker — bin/ + toxiproxy/bin/
Source: vuer_docker/bin/ and vuer_docker/toxiproxy/bin/. This repo has no package.json; these are the only first-party bin/ dirs. (Service/build dirs like install/, janus/, rabbitmq/, oracledb19/, mssql/, postgresql/ also hold shell scripts but live outside a bin/ — see vuer_docker.)
| Repo | Path | Language | What it does | How invoked |
|---|---|---|---|---|
| vuer_docker | bin/vuer.sh | Bash | Developer CLI (devel-only), run from inside a sibling project root; dispatches docker exec into containers. Command tree (from its own vuer_help): cd, checkout <branch>, db init|wipe, dev build|install|reinstall|watch, docker down|restart|up|update, git checkout|status, help, init, log [file], server restart|start|status|stop [process], wipe, workspace init|wipe. db init runs the app’s own bin/db/create_user for admin+operator. | vuer.sh <command> <subcommand> |
| vuer_docker | toxiproxy/bin/fetch-config (no ext) | Bash | curl -s $TOXIPROXY_URL/proxies | jq . — dump current proxy config (TOXIPROXY_URL=http://localhost:8474). | ./toxiproxy/bin/fetch-config |
| vuer_docker | toxiproxy/bin/populate-proxies (no ext) | Bash | POST each proxies/*/*.json to /proxies to create/update proxies; optional $1 upstream-name filter; tolerates “already exists”. | ./toxiproxy/bin/populate-proxies [name] |
| vuer_docker | toxiproxy/bin/apply-toxic (no ext) | Bash | Verify a proxy exists, then apply one or all toxic JSONs from toxics/ (bandwidth/latency/limit_data/reset_peer/slow_close/timeout). Usage <proxy-name> [toxic-name]. | ./toxiproxy/bin/apply-toxic css_websocket [latency] |
| vuer_docker | toxiproxy/bin/reset (no ext) | Bash | curl -s -X POST $TOXIPROXY_URL/reset — clear all toxics (keep proxies). | ./toxiproxy/bin/reset |
Notes / scope boundaries
- Excluded as duplicates/vendored (verified present but not re-catalogued): everything under
vuer_oss/.worktrees/**,vuer_oss/.claude/worktrees/**,vuer-release/.worktrees/**, and the vendoredemrtd/bin+pdf/bincopies undervuer_build/,vuer_docker/, andvuer-release/install/(thosebin/dirs are empty or are install-time placeholders, not first-party scripts). Thevuer_css-FKITDEV-8533-videoorientext/andvuer_css-instacash-update/top-level dirs arevuer_csscustomization clones with the identicalbin/layout above. - Every
*/bin/creditsis the same pattern (license-checker → HTML). Every*/bin/{build,script,style,watch,server}set is the per-repo build pipeline; only their bundler differs (esbuild forvuer_oss/vuer_css; browserify(+Babel) foresign_oss/esign_css/portal_css). vuer_osshas a root-levelstorage.js(storage-engine worker) that is not inbin/; the CLI counterpart isbin/storage.js(listed above).
Sources
Read directly (on disk, read-only):
bin/proxy-ts.shvuer_oss/customization/bin/:batch_restore.js,export,export_batch.js,export_customers.js,export-room-documents.js,get-sms-api-info,room-delete,set-mnb-certs(headers + commander option/command blocks)vuer_oss/bin/listing (git ls-tree devel:bin+ on-disk) + top-level scripts:archive,check,clean-rooms,convert,crypt-room,customer-key,export_batch.js,export_customers.js,migrate-rooms,migrate-self-service-task-data,self_service_settings_db_checker,create_rab_token.js,create-decrypted-room-copy.js,create-turn-static-auth-secret.js,comptest.js,flow-editor.js,flow-extractor-portable.mjs,import-legacy-data.js,instacash-cli.js,integration-log.js,migrate-folder-hierarchy.js,remove-empty-records-directories.js,sms-logs-cli.mjs,storage.js,timestamp-check.js,validate-config.js,config.getter.ts,doc.gen.tsvuer_oss/bin/db/:create_user,create_user_batch,create_standard_days,enable_user,migrate-rdbms.js,customer-index.js,sync,truncate,migrate-data,pg_sanity_checkvuer_oss/bin/crypto/:decrypt(full),find-room-with-attachments(full),extract-room-attachments-remote.sh(full),migrate(head+desc),helpers/listingvuer_oss/bin/{build,script,style,server,watch}/listingsesign_oss/bin/listing +sms-api,attachment.js,credits,db/{create_user,sync,truncate,migrate-data,pg_sanity_check,fetchCustomerDataAndExtendCSV.js},test/trans-check.js,script/,style/vuer_css/bin/:validate-config.js,config.getter.ts,doc.gen.ts(heads);diffvsvuer_oss/bin/config.getter.ts+doc.gen.ts; subdir listingsesign_css/bin/:readme.md,credits(shebang), subdir listingsportal_css/bin/listingvuer_docker/bin/vuer.sh(vuer_helpcommand tree),vuer_docker/toxiproxy/bin/{fetch-config,populate-proxies,apply-toxic,reset}(full)find(viartk proxy) for allbin/dirs under/Users/levander/coding/facekom
Cross-checked against (already source-verified) per-repo docs:
/Users/levander/levandor_obsidian/projects/facekom-v2/repos/{vuer_oss,esign_oss,vuer_css,esign_css,portal_css,vuer_docker}.md