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_oss CLIs)

Shebang #!/usr/bin/env noderequire('../server/bootstrap/process-settings')() + process-listeners (when present) → commander arg parsing → wire a subset of services into serviceContainersetupDb() (Sequelize authenticate + models + helpers) → run. These are operator/ops tools, not part of the request path. The *_css repos’ bin/ dirs are almost entirely build-pipeline code invoked via npm/yarn scripts (none are installed CLIs — there is no bin field in any package.json).

Working-tree branch caveat ( vuer_oss)

The vuer_oss working tree is checked out on a customization branch (update/customization/instacash-2026-05-27), so its bin/ may contain scripts that are not on devel — the genuinely branch-only one is bin/instacash-cli.js (git show devel:bin/instacash-cli.js fails). bin/comptest.js, by contrast, does exist on devel (git show devel:bin/comptest.js succeeds). instacash-cli.js is catalogued here because it exists on disk; the vuer_oss doc flags it as branch-only. The vuer_css-FKITDEV-8533-videoorientext/ and vuer_css-instacash-update/ top-level dirs are customization clones of vuer_css (same bin/ layout) and are not re-listed.


Top-level repo wrapper

RepoPathLanguageWhat it doesHow invoked
(root)bin/proxy-ts.shBash (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/.

RepoPathLanguageWhat it doesHow invoked
vuer_osscustomization/bin/batch_restore.jsNode + commanderRestore 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_osscustomization/bin/export (no ext)Node + commanderBulk-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_osscustomization/bin/export_batch.jsNode + commanderBatch 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_osscustomization/bin/export_customers.jsNode + commanderExport 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_osscustomization/bin/export-room-documents.jsNode + commanderExport 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_osscustomization/bin/get-sms-api-info (no ext)Node + commanderLook 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_osscustomization/bin/room-delete (no ext)Node + commanderDelete 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_osscustomization/bin/set-mnb-certs (no ext)Node + commanderInstall 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)

RepoPathLanguageWhat it doesHow invoked
vuer_ossbin/archive (no ext)Node + commanderArchive 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_ossbin/batch_restore.jsNode + commanderRestore all archived rooms / flows / self-service rooms (reconciles archive-folder ids vs DB status:'archived').node bin/batch_restore.js
vuer_ossbin/attachment.jsNode + commanderexports <path> dumps customer screenshots to filesystem, or copy sends screenshots to e-sign.node bin/attachment.js exports <path>
vuer_ossbin/check (no ext)Node + commanderScan 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_ossbin/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_ossbin/comptest.jsNode + commanderConnectivity + 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_ossbin/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_ossbin/create-decrypted-room-copy.jsNode + commanderCopy + 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_ossbin/create-turn-static-auth-secret.jsNode + commanderPrint TURN static-auth credentials via TurnPasswordService. Args <name> [validitySec] [turnServer] [secret].node bin/create-turn-static-auth-secret.js <name> [..]
vuer_ossbin/create_rab_token.jsNode + commanderGenerate an encrypted JWT “rab” access token for an <accessPath> <expiry> (uses TokenService, config.jwt.secret).node bin/create_rab_token.js <accessPath> <expiry>
vuer_ossbin/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_ossbin/customer-key (no ext)Node + commanderDev-only (exits unless NODE_ENV=dev): “Remove / insert the key of the given customer.” --insert/--memory/--remove../bin/customer-key <id> --insert|--remove
vuer_ossbin/data-export.jsNode + commanderExport 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_ossbin/export_batch.jsNode + commanderBatch 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_ossbin/export_customers.jsNode + commanderExport 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_ossbin/flow-editor.jsNode + commanderFlow 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_ossbin/flow-extractor-portable.mjsNode ESM + commanderExtract/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_ossbin/import-legacy-data.jsNode + 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_ossbin/instacash-cli.jsNode + commanderInstaCash 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_ossbin/integration-log.jsNode + 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_ossbin/migrate-folder-hierarchy.jsNode + commanderMigrate media folder hierarchy via DirectoryService; inquirer-confirmed, uses fs-extra + async.node bin/migrate-folder-hierarchy.js [opts]
vuer_ossbin/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_ossbin/migrate-self-service-task-data (no ext)Node + commanderMigrate self-service task data (defines a MigrationError class; multi-line description array)../bin/migrate-self-service-task-data [opts]
vuer_ossbin/remove-empty-records-directories.jsNode + commanderRemove 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_ossbin/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_ossbin/sms-logs-cli.mjsNode ESM + commanderSMS-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_ossbin/storage.jsNode + 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_ossbin/timestamp-check.jsNode + 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_ossbin/validate-config.jsNode 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_ossbin/credits (no ext)NodeEmit HTML third-party license table (license-checker).node bin/credits > CREDITS.html (yarn credits)
vuer_ossbin/config.getter.tsTypeScript (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_ossbin/doc.gen.tsTypeScript (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)

RepoPathLanguageWhat it doesHow invoked
vuer_ossbin/db/create_user (no ext)Node + commanderCreate a user. Args <role> <username> <password> [email] [firstName] [lastName] [phone]../bin/db/create_user <role> <user> <pass> [..]
vuer_ossbin/db/create_user_batch (no ext)Node + commanderBatch-create users from an input file. Arg <inFile>../bin/db/create_user_batch <inFile>
vuer_ossbin/db/create_standard_days (no ext)NodeSeed the OpenHourStandard table (Mon–Sun rows, 10:00–16:00, destroys existing first)../bin/db/create_standard_days
vuer_ossbin/db/enable_user (no ext)Node + commanderEnable a user by username (or by id with -i/--user-id). Usage <username>../bin/db/enable_user <username> [-i]
vuer_ossbin/db/customer-index.jsNode(Re)index customers (indexCustomer/indexCustomers), logs per-customer success/failure.node bin/db/customer-index.js
vuer_ossbin/db/migrate-rdbms.jsNode + commanderMigrate data between RDBMS instances. Options -o/--origin <url>, -d/--destination <url>, -t/--testConnectionOnly.node bin/db/migrate-rdbms.js -o <url> -d <url>
vuer_ossbin/db/sync (no ext)Node + commandersequelize.sync(); -f/--force (destructive), --noninteractive../bin/db/sync [-f] [--noninteractive]
vuer_ossbin/db/truncate (no ext)Node + inquirerInquirer-confirmed truncate of all models except User, OpenHourStandard, OpenHourException../bin/db/truncate
vuer_ossbin/db/migrate-data (no ext)Node + UmzugOld-DB → new-DB data migration (Umzug + SequelizeStorage)../bin/db/migrate-data [opts]
vuer_ossbin/db/pg_sanity_check (no ext)NodeRead-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/

RepoPathLanguageWhat it doesHow invoked
vuer_ossbin/crypto/decrypt (no ext)Node + commanderDecrypt 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_ossbin/crypto/find-room-with-attachments (no ext)NodePrint 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_ossbin/crypto/extract-room-attachments-remote.shBashSSH/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_ossbin/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_ossbin/crypto/helpers/*.js (13 files)NodePer-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.sh references sibling scripts extract-room-attachments and helpers/setup.js / helpers/room.js, but in this working tree bin/crypto/ contains only decrypt, find-room-with-attachments, extract-room-attachments-remote.sh, migrate, and a helpers/ dir holding the migration helpers (no setup.js, no room.js, no extract-room-attachments). The remote-extract script therefore points at files not present here (likely added on another branch). find-room-with-attachments also requires ./helpers/setup, which is likewise absent on disk.

vuer_oss bin/ build pipeline (invoked by npm scripts)

RepoPathLanguageWhat it doesHow invoked
vuer_ossbin/build/build.jsNodeOne-shot full build: pushes --no-exit, Promise.all([script.task, style.task]).node bin/build/build.js (yarn build)
vuer_ossbin/script/script.task.js, script.compiler.js, inlineWorkerPluign.js, browserify-istanbul.jsNode (esbuild)Client-JS bundling for client/customization pages+layouts → web/js; optional istanbul + inline-worker plugins.node bin/script/script.task (yarn script)
vuer_ossbin/style/style.task.js, style.compiler.jsNode (Stylus)Stylus → CSS bundling → web/css (breakpoints/device-sizes/colors injected, autoprefixer, optional clean-css).node bin/style/style.task (yarn style)
vuer_ossbin/watch/watch.jsNodePushes --watch, requires script+style+server tasks.node bin/watch/watch (yarn watch/yarn dev)
vuer_ossbin/server/server.task.jsNodeWatches 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.

RepoPathLanguageWhat it doesHow invoked
esign_ossbin/attachment.jsNode + commanderexports 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_ossbin/sms-api (no ext)Node + commanderJoin 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_ossbin/credits (no ext)NodeHTML dependency-license table via license-checker.node bin/credits > CREDITS.html (yarn credits)
esign_ossbin/db/create_user (no ext)Node + commanderCreate 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_ossbin/db/sync (no ext)Node + commandersequelize.sync(); -f/--force prompts (inquirer) before destructive sync. Invoked at boot when db.syncOnStart../bin/db/sync [-f]
esign_ossbin/db/truncate (no ext)Node + inquirerTruncate all models except User, OpenHourStandard, OpenHourException../bin/db/truncate
esign_ossbin/db/migrate-data (no ext)Node + UmzugOld-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_ossbin/db/pg_sanity_check (no ext)NodeRead-only Postgres introspection (table row counts/sizes/columns/FKs/constraints/indexes)../bin/db/pg_sanity_check
esign_ossbin/db/fetchCustomerDataAndExtendCSV.jsNode + 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_ossbin/test/trans-check.jsNode + commanderTranslation 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_ossbin/build/build.jsNodePushes --no-exit, runs script.task+style.task in parallel.node bin/build/build (yarn build)
esign_ossbin/script/script.task.js, script.compiler.jsNode (browserify)Browserify-bundle client *.script.js/*.layout.jsweb/js.node bin/script/script.task (yarn script)
esign_ossbin/style/style.task.js, style.compiler.jsNode (Stylus)Stylus → CSS bundles → web/css.node bin/style/style.task (yarn style)
esign_ossbin/watch/watch.jsNodePushes --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.

RepoPathLanguageWhat it doesHow invoked
vuer_cssbin/validate-config.jsNode 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_cssbin/config.getter.tsTypeScript (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_cssbin/doc.gen.tsTypeScript (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_cssbin/credits (no ext)NodeHTML license table via license-checker.node bin/credits > CREDITS.html (yarn credits)
vuer_cssbin/build/build.jsNodeOne-shot build: externals + scripts + styles in parallel (Promise.all).node bin/build/build.js (yarn build)
vuer_cssbin/script/script.task.js, script.compiler.jsNode (esbuild)esbuild page/layout JS bundles → web/js.node bin/script/script.task (yarn script)
vuer_cssbin/script/external.task.js, external.compiler.jsNode (browserify)Bundle React/react-dom “externals” → web/js/externals.node bin/script/external.task (yarn script:external)
vuer_cssbin/style/style.task.js, style.compiler.jsNode (Stylus)Stylus → CSS (+ branding) bundles → web/css / web/branding.node bin/style/style.task (yarn style)
vuer_cssbin/server/server.task.jsNodeWatch-mode server task: watches twig/trans/customization/config/engines/server and supervisorctl restart vuer_css.required by watch/dev
vuer_cssbin/watch/watch.jsNodePushes --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/....

RepoPathLanguageWhat it doesHow invoked
esign_cssbin/credits (no ext)NodeHTML license table via license-checker.node bin/credits > CREDITS.html (yarn credits)
esign_cssbin/build/build.jsNodePushes --no-exit, Promise.all([script.task, style.task]).node bin/build/build (yarn build)
esign_cssbin/script/script.task.js, script.compiler.jsNode (browserify)Declare + compile JS bundle targets → web/js.node bin/script/script.task (yarn script)
esign_cssbin/style/style.task.js, style.compiler.jsNode (Stylus)Declare + compile CSS bundle targets (incl. branding) → web/css/web/branding.node bin/style/style.task (yarn style)
esign_cssbin/watch/watch.jsNodeForces --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.

RepoPathLanguageWhat it doesHow invoked
portal_cssbin/credits (no ext)NodeHTML <table> license report via license-checker.node bin/credits > CREDITS.html (npm run credits)
portal_cssbin/build/build.jsNodeOrchestrator: --no-exit then Promise.all of externals + scripts + styles; exits unless --watch.node bin/build/build.js (npm run build)
portal_cssbin/script/script.task.js, script.compiler.jsNode (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_cssbin/script/external.task.js, external.compiler.jsNode (browserify)React externals bundle → web/js/externals.node bin/script/external.task (npm run script:external)
portal_cssbin/style/style.task.js, style.compiler.jsNode (Stylus)Stylus → CSS (+ branding) → web/css/web/branding.node bin/style/style.task (npm run style)
portal_cssbin/watch/watch.jsNodePushes --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.)

RepoPathLanguageWhat it doesHow invoked
vuer_dockerbin/vuer.shBashDeveloper 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_dockertoxiproxy/bin/fetch-config (no ext)Bashcurl -s $TOXIPROXY_URL/proxies | jq . — dump current proxy config (TOXIPROXY_URL=http://localhost:8474)../toxiproxy/bin/fetch-config
vuer_dockertoxiproxy/bin/populate-proxies (no ext)BashPOST each proxies/*/*.json to /proxies to create/update proxies; optional $1 upstream-name filter; tolerates “already exists”../toxiproxy/bin/populate-proxies [name]
vuer_dockertoxiproxy/bin/apply-toxic (no ext)BashVerify 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_dockertoxiproxy/bin/reset (no ext)Bashcurl -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 vendored emrtd/bin + pdf/bin copies under vuer_build/, vuer_docker/, and vuer-release/install/ (those bin/ dirs are empty or are install-time placeholders, not first-party scripts). The vuer_css-FKITDEV-8533-videoorientext/ and vuer_css-instacash-update/ top-level dirs are vuer_css customization clones with the identical bin/ layout above.
  • Every */bin/credits is 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 for vuer_oss/vuer_css; browserify(+Babel) for esign_oss/esign_css/portal_css).
  • vuer_oss has a root-level storage.js (storage-engine worker) that is not in bin/; the CLI counterpart is bin/storage.js (listed above).

Sources

Read directly (on disk, read-only):

  • bin/proxy-ts.sh
  • vuer_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.ts
  • vuer_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_check
  • vuer_oss/bin/crypto/: decrypt (full), find-room-with-attachments (full), extract-room-attachments-remote.sh (full), migrate (head+desc), helpers/ listing
  • vuer_oss/bin/{build,script,style,server,watch}/ listings
  • esign_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); diff vs vuer_oss/bin/config.getter.ts + doc.gen.ts; subdir listings
  • esign_css/bin/: readme.md, credits (shebang), subdir listings
  • portal_css/bin/ listing
  • vuer_docker/bin/vuer.sh (vuer_help command tree), vuer_docker/toxiproxy/bin/{fetch-config,populate-proxies,apply-toxic,reset} (full)
  • find (via rtk proxy) for all bin/ 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