Conventions & Glossary
Cross-repo coding, branch-naming, and file-naming conventions for FaceKom, plus a glossary of internal codenames. Every item is cited to source actually opened. Siblings: INDEX, architecture-overview, customization-architecture, customization-branch-catalog, vuer_oss, vuer_css.
Scope of evidence
Verified against the working trees and remote refs of
vuer_oss,vuer_css,esign_oss,esign_css,portal_css,vuer_docker,vuer-releaseunder/Users/levander/coding/facekom/, plus clones under/Users/levander/coding/facekom-v2-clones/(vuer_cv,vuer_emrtd). Branch-naming is verified from real remote branch names (git for-each-ref refs/remotes/origin/), not from documentation.
1. Coding conventions
1.1 Linting baseline — StandardJS + extensions
All JS Node repos share a near-identical ESLint flat config (eslint.config.mjs); portal_css still uses legacy .eslintrc.json. Common base across every repo:
- Base style:
standard(StandardJS) — extended viacompat.extends('standard', ...)(vuer_oss/eslint.config.mjs,vuer_css/eslint.config.mjs,esign_oss/eslint.config.mjs,esign_css/eslint.config.mjs) and"extends": ["standard", ...](portal_css/.eslintrc.json:3). StandardJS implies: no semicolons, single quotes, 2-space indent, no unused vars, space-before-function-paren. Confirmed in real code —vuer_oss/server/service/UserService.js:1-14has no semicolons, single-quoted strings, 2-space indent. - Plus
plugin:n/recommended(Node plugin) andplugin:jest-formatting/strict(vuer_oss/eslint.config.mjs).portal_cssinstead usesplugin:node/recommended+plugin:react/recommended(React app,portal_css/.eslintrc.json:3). - Shared explicit rule overrides (identical block in
vuer_oss,vuer_css,esign_oss,esign_css,portal_css):curly: ['error', 'all']'brace-style': ['error', '1tbs', { allowSingleLine: false }]— One True Brace Style, no single-line blocks'guard-for-in': 'error',radix: 'error','no-empty-function': 'error''no-console': 'error'(with per-area relaxations; browser/jquery contexts allowwarn/error/info/time/timeEnd—vuer_oss/eslint.config.mjs)'no-debugger': 'error''no-shadow': 'warn'(but'error'inportal_css/.eslintrc.json)
- ECMAScript level: 2020 (
ecmaVersion: 2020in every config).sourceTypediffers:vuer_oss='script';vuer_css/esign_oss/esign_css='module'(eslint.config.mjsof each). - TypeScript:
vuer_ossandvuer_cssload@typescript-eslint/parser(tsParser);vuer_ossadditionally enables@typescript-eslintplugin with'@typescript-eslint/no-require-imports': 'off'(vuer_oss/eslint.config.mjs). So the codebase is JS-first CommonJS with some TS allowed. - Ignored paths (lint):
web/,client/libs/,client/polyfills/,logs/(all repos’ignoresarray;portal_css/.eslintignorelists/web/,/logs/,node_modules/).
Custom global
vuerESLint registers a project-specific readonly global
vuerin the Jest test context, alongsidecontext,jestPuppeteer(vuer_oss/eslint.config.mjs, same invuer_css/esign_oss/esign_css). Browser-context globals declared:bootbox,echarts,pdfjsLib, plus jQuery.
1.2 Lint / test invocation
From package.json scripts:
- Lint (CI-grade, zero tolerance):
lint = eslint . --max-warnings 0 --ignore-pattern "test/*"(identical invuer_oss,vuer_css,esign_oss,esign_css).lint:fix = eslint . --fix && eslint --max-warnings 0 . esign_cssaliasestestto a lint run:test = eslint . --quiet --ignore-pattern "test/*"(esign_css/package.json).portal_csstest = npm run lint --silent(portal_css/package.json).- Unit tests via Jest:
vuer_oss/vuer_cssusejest --config ./test/jest.config.js --runInBand --forceExit;test:unit = yarn jest unit/*(vuer_css/package.json). - E2E via Playwright (
vuer_oss/README.md:yarn test:e2e/yarn playwright test). - Build pipeline scripts (shared shape):
build,style(bin/style/style.task),script(bin/script/script.task),watch(bin/watch/watch),dev = node bin/watch/watch --restart(vuer_oss/vuer_css),credits = node bin/credits > CREDITS.html.
1.3 Editor / formatting baseline
.editorconfig (vuer_oss/.editorconfig, root = true):
| Setting | Value |
|---|---|
indent_style | space |
indent_size | 2 |
end_of_line | lf |
charset | utf-8 |
trim_trailing_whitespace | true |
insert_final_newline | true |
max_line_length | 240 |
- Package manager: Yarn (classic) —
.yarnrc=--install.ignore-optional true(vuer_oss/.yarnrc); CI installs withyarn --frozen-lockfile(vuer_oss/.github/workflows/pull-request.yaml:34). - Browser support target:
IE >= 11,Safari >= 11,Edge >= 16,Firefox ESR,last 2 years(vuer_oss/.browserslistrc). - Module system: CommonJS
require/module.exportsis dominant (vuer_oss/server/service/UserService.js:1-4). Enum-style constants useObject.freeze({...})(UserService.js:6-11). - No code comments policy is NOT enforced in repo — JSDoc
/** */blocks exist in services (UserService.js:13). (The no-comments rule is the user’s personal global preference, not a FaceKom repo convention.)
1.4 CI conventions
- PR CI runs on every pull request: jobs
lint,test,audit,sonar, then a gating job needing[lint, test, audit, sonar](vuer_oss/.github/workflows/pull-request.yaml:18,50,90,127,171-172). Audit usesyarn audit --groups dependencies+improved-yarn-audit(pull-request.yaml:111-114). - Branch CI (
audit.yaml) triggers onpushtodevelandcustomization/*with Node 22 (vuer_css/.github/workflows/audit.yaml:4-7,19). Onlyvuer_csscarriesaudit.yaml; the other code repos carry onlypull-request.yaml. - SonarCloud is the static-analysis backend:
sonar.host.url=https://sonarcloud.io,sonar.organization=techteamer, project keys likevuer-css(vuer_css/sonar-project.properties). - vuer-release uses a single
autobuild.yml(tag-triggered Docker builds,vuer-release/.github/workflows/autobuild.yml, described invuer-release/README.md).
1.5 Runtime / engines (per package.json engines.node)
| Repo | Node engine | Source |
|---|---|---|
vuer_oss | >=22.18.0 (per repos/vuer_oss doc; engines block) | vuer_oss/package.json |
vuer_css | >=22.0.0 | vuer_css/package.json |
esign_oss | >=22.13.0 | esign_oss/package.json |
esign_css | >=22.13.0 | esign_css/package.json |
portal_css | >=16.14.2 (older) | portal_css/package.json |
All code repos: private: true, author: TechTeamer, repo URLs github.com/TechTeamer/<name> (*/package.json).
2. Branch-naming conventions
Verified from actual remote branch names. Aggregated prefix counts (git for-each-ref refs/remotes/origin/ | grep -oE '^[a-z]+/' | sort | uniq -c). vuer_oss alone has 1062 remote branches.
2.1 Default / base branches
| Repo | origin/HEAD (default) | Source |
|---|---|---|
vuer_oss, vuer_css, esign_oss, esign_css, portal_css | devel | git symbolic-ref refs/remotes/origin/HEAD |
vuer_docker, vuer-release | master | same |
Code repos branch off
devel(the core product line); infrastructure/release repos (vuer_docker,vuer-release) usemaster. Some repos also still carry a legacymasterref (e.g.esign_oss,portal_css) butHEADpoints atdevel.
2.2 Verified prefix taxonomy (<type>/<slug>)
Top prefixes by frequency in vuer_oss (representative of all code repos):
| Prefix | Count (vuer_oss) | Meaning / use | Example (real) |
|---|---|---|---|
feature/ | 271 | New feature work, usually ticket-led | feature/FKITDEV-1012-doc-scanner |
customization/ | 154 | Partner/client-specific code lines & fixes | customization/FKITDEV-3939-polgari-bank-branding |
test/ | 126 | Test branches | (test/*) |
fix/ | 118 | Bug fixes | fix/FKITDEV-300-instacash-mbh-rebranding-modifications |
save/ | 86 | Snapshots/backups of a partner state at a date | save/instacash-2021-09-21 |
update/ | 84 | Re-sync of a customization onto a new base, dated | update/customization/instacash-2026-05-27 |
mod/ | 27 | Modifications | mod/FKITDEV-226-cig-muhammara |
cr/ | 22 | Change request (partner change request) | cr/FKITDEV-3946-cofidis-pdf-password |
feat/ | 20 | Variant of feature/ | feat/FKITDEV-5794-instacash-remove-old-data |
release/ | 15 | Release branches | release/cib |
improvement/ | 12 | Improvements | — |
maintenance/ | 10 | Maintenance / dependency upkeep, often dated | maintenance/customization/cofidis-2025-11 |
bugfix/ | 8 | Synonym of fix/ | bugfix/FKITDEV-3597-name-regex |
docs/ | 6 | Documentation | docs/FKQA-227-libs-paaring-with-features |
chore/ | 4 | Chores | chore/FKQA-263-semantic-release |
upgrade/ | 5 | Dependency upgrades | upgrade/mq |
bug/, change/, cleanup/, coverage/, refact/, development/, hotfix/, wip/, backup/, dependabot/ | 1–4 each | Long tail | change/FKQA-141/update-phone-number-masking |
Prefix discipline is loose. Real branches show typos (
feautre/,featuer/,imporvement/) and overlapping synonyms (fix/≈bugfix/≈bug/;feature/≈feat/≈feautre/;refact/≈refactor;docs/≈doc/). Treat the prefix as a hint, not a contract. (vuer_ossaggregated prefix list.)
2.3 Customization / partner branch conventions (the load-bearing patterns)
These are the patterns the task highlights, all verified:
customization/<client>— the canonical long-lived partner branch. Real:customization/instacash,customization/raiffeisen,customization/cofidis,customization/sberbank,customization/cig,customization/bankmonitor,customization/demo,customization/equilor,customization/maliatec(esign_oss,esign_cssbranch lists);customization/cib,customization/dunatakarek,customization/takarek-mfszh,customization/unicredit-srb(portal_css).update/customization/<client>-<date>— a periodic re-sync of a customization onto the latest base, date-stampedYYYY-MM-DD. Real:update/customization/instacash-2026-05-27,update/customization/cofidis-2025-02-18,update/customization/demo-2025-04-16,update/customization/raiffeisen-2024-07-11(esign_oss);update/customization/instacash-2025-12-08(esign_css). Thevuer_ossworking tree was checked out onupdate/customization/instacash-2026-05-27(see vuer_oss).customization/FKITDEV-####-<client>-<slug>— a ticketed change targeted at a partner. Real:customization/FKITDEV-3939-polgari-bank-branding,customization/FKITDEV-5605-granit-branding,customization/FKITDEV-5036-nusz-remove-old-audio-video-attachment(vuer_oss).save/<client>-<date>andmaintenance/customization/<client>-<date>— dated snapshots / maintenance lines. Real:save/instacash-2021-09-21,save/raiffeisen-2023-08-25(esign_oss);maintenance/customization/cib-2025-11(portal_css).- Partner-flavored feature branches embed the client in the slug:
feature/FKITDEV-1449-localdev-<client>family (-bankmonitor,-demo,-instacash,-unicredit-srb,-otp,-mvm,-nusz,-szerencsejatek, …) (vuer_oss,portal_css).
See customization-architecture and customization-branch-catalog for the full partner roster.
2.4 feature/FKITDEV-#### and the ticket-prefix families
The task’s feature/FKITDEV-#### pattern is the dominant form. Aggregated across all 7 repos, ticket prefixes embedded in branch names (grep -oE '[A-Z]+-[0-9]+'):
| Ticket prefix | Occurrences (all repos) | Notes |
|---|---|---|
FKITDEV | 516 | Primary FaceKom IT-dev tracker |
FKQA | 104 | QA tickets |
FKDEV | 16 | older/dev |
FKC | 12 | |
TKMFSZHSSFK | 10 | Takarék MFSZH self-service partner |
KHFK | 10 | K&H bank |
DAP | 10 | |
UNISRBFK | 5 | UniCredit Serbia |
QTSPDEV/QTSP | 6 | Qualified Trust Service Provider work |
ISSFK, RFK, BBFK, DTKFK, FKVIDEO, FKCV, FKDEVOPS, BUGMVM, COFIDISFACEKOM, CRVKTA, BMFKSAAS, … | 1–5 each | Per-partner / per-area trackers |
Tickets are YouTrack, not Jira.
PR templates ask for “YouTrack ticket(s)” (
vuer_css/PULL_REQUEST_TEMPLATE.md,esign_oss/PULL_REQUEST_TEMPLATE.md,portal_css/pull_request_template.md) and the changelog links tohttps://youtrack.techteamer.com/issue/FKITDEV-####(vuer_oss/changelog.md). SoFKITDEV-####etc. are YouTrack issue IDs. (The task brief says “JIRA-like”; the actual tracker is YouTrack.)
2.5 Slug separator: hyphen vs slash after the ticket
Both FKITDEV-####-<slug> (hyphen) and FKITDEV-####/<slug> (slash) occur. Real: FKITDEV-2999/update-webserver-report-directive vs FKITDEV-1299-import-export-reporting (both vuer_oss). No single enforced separator.
2.6 PR template convention
Every PR uses the same template body — sections Summary, References → YouTrack ticket(s) (default no ticket linked), Related PR(s) (default nothing) (vuer_css/PULL_REQUEST_TEMPLATE.md, identical in esign_oss, portal_css/pull_request_template.md).
3. File-naming patterns
Counts below are from the live vuer_oss checkout — which is on the customization/instacash branch, not devel — via recursive find, excluding node_modules/, .worktrees/, and .claude/ (the latter two hold detached worktree copies that would otherwise multiply every count). Re-verified 2026-05-30.
These are working-tree (instacash) figures — the
develbase has fewer filesThe numbers below count the checked-out
customization/instacashtree. Thedevelbase carries fewer partner files. Verifieddeveldeltas (git ls-tree -r origin/devel):*Service.js= 129 (not 136),*.flow.handler.js= 14 (not 33 — the 14 core flows, before instacash adds itsic-*handlers). The naming patterns are branch-independent; only the totals differ by the customization overlay.
3.1 *.endpoint.js — HTTP route / API handlers
86 files (recursive, excluding node_modules/, .worktrees/, .claude/). Live under server/web/routes/ (75) and server/web/api/ (8 = 4 admin/ + 4 common/), plus customization/server/web/routes/ (3). 75 + 8 + 3 = 86.
- Route pages:
server/web/routes/homepage.endpoint.js,waiting-room.endpoint.js,we-are-closed.endpoint.js(vuer_css/server/web/routes/). - API endpoints (kebab-case, often
self-service-*):server/web/api/self-service-start.endpoint.js,self-service-attachment.endpoint.js,css-ping-waiting-room.endpoint.js,kioskPing.endpoint.js(vuer_css/server/web/api/).
3.2 *Service.js — service-container services (PascalCase)
136 files (recursive, excluding node_modules/, .worktrees/, .claude/). 112 under server/ — of which 87 sit directly in server/service/ and 17 more in its sub-namespaces (CryptoServices/ 6, ArchiveServices/ 4, ReportServices/ 3, IntegrityCheckServices/ 2, plus 8 scattered elsewhere under server/: sms/, room-inspector/, queue/, ocr/, flow/, e-mail/, db/, cv/) — plus customization/server/service/ (22) and 2 under client/. 112 + 22 + 2 = 136. Each is a class XxxService registered into the giant service container (see vuer_oss §service_container).
- Examples:
server/service/UserService.js,VuerCVService.js,SelfServiceRoomService.js,TrustedTimestampService.js,MediaFileService.js,CertService.js,VideoChatService.js(vuer_oss/server/service/).
3.3 *.flow.handler.js — Self-Service flow handlers
33 files (recursive, excluding node_modules/, .worktrees/, .claude/), all under customization/flow/<flow-name>/<flow-name>.flow.handler.js. customization/flow/ has 34 direct subdirectories; 33 of them hold exactly one .flow.handler.js (one handler per flow directory), and one — statProvider/ — holds none. So 34 flow dirs / 33 handlers (vuer_oss/customization/flow/).
- Core flow families:
self-service-phase-1/,self-service-phase-2/,self-service-v2-phase-1/,self-service-v2-phase-2/,online-verification-phase-1/,online-verification-phase-2/,automated-test-1..6/,esign-registration/,customer-data-change-test/. ic-prefix = instacash partner flows:ic-customer-verification-1,ic-loan-payment,ic-offer-handling,ic-self-service-v2-phase-1,ic-contract,ic-mfl-verification-1..4, etc. (mapping inferred from co-locatedcustomization/flow/ic-*next to the manyinstacashcustomization branches; theic-flows live in the instacash customization tree).- A separate
*.flow.jsexists for the socket event layer:server/socket/events/videochat.flow.js(1 file). Translations for flows:customization/flow/flow.trans.js,base.flow.trans.js.
3.4 Other recurring patterns
| Pattern | Count | Location / meaning | Source |
|---|---|---|---|
*.trans.js | 400 | Translation bundles (i18n), e.g. customization/sms/messageTypes.trans.js, customization/ocr/documents.trans.js | vuer_oss find |
*.schema.json | 79 (≈) | AJV config schemas under docs/config/schemas/ | vuer_oss/docs.json, find |
*Data.js | — | Customization data classes, e.g. customization/user/UserData, customization/portal/PortalData.trans.js | UserService.js:4 |
Case conventions
PascalCase for classes/services (
UserService.js,*Data.js). kebab-case for endpoints, flows, and route files (self-service-start.endpoint.js,self-service-v2-phase-1.flow.handler.js). Compound-suffix files use dotted tags (.endpoint.js,.flow.handler.js,.trans.js,.schema.json).
4. Glossary
| Term | Definition | Evidence |
|---|---|---|
| vuer | FaceKom’s internal codename for the product/repos. Used as repo prefixes (vuer_oss, vuer_css, vuer_cv, vuer_emrtd, vuer_build, vuer_docker, vuer-release), Docker build var VUER_TAG, and a reserved ESLint global vuer. | Repo names; vuer_build/README.md (VUER_TAG, -b microsec-1.9.11.12); vuer_oss/eslint.config.mjs (vuer: 'readonly') |
| OSS = Operator Side Server | The back-office / operator-side server: owns the PostgreSQL DB, crypto/keys, RPC business logic, recording pipeline. | esign_oss/README.md:4 “FaceKom eSign operator side server”; esign_oss/package.json:4; vuer_oss |
| CSS = Client Side Server | The customer-facing Express + Socket.IO server a browser/kiosk hits (homepage → waiting room → videochat). Talks to OSS over RabbitMQ. | vuer_css/README.md:1 “Facekom Client Side Server (CSS)”; esign_css/README.md:4 “customer side server” |
| portal_css | A trimmed CSS variant: a customer portal (registration, JWT/credential login, password recovery, SCA) that redirects to CSS. Keeps “the core functionality from CSS”. | portal_css/README.md (“Available features”) |
| CV = Computer Vision | vuer_cv — the computer-vision service (face detection/comparison, liveness, hologram, OCR support). Python service (requirements/*.in, Git-LFS model weights). Orchestrated from OSS via VuerCVService.js. | vuer_cv/Readme.md (Python, Git LFS weights); vuer_oss/server/service/VuerCVService.js |
| eMRTD | electronic Machine Readable Travel Document (ICAO 9303 ePassport/eID chip). vuer_emrtd reads passport/ID chip data groups (e.g. Hungarian DG13). Java service. | vuer_emrtd/README.md:1 “FaceKom eMRTD processor”; refs ICAO DOC 9303-10 |
| eSign | FaceKom’s electronic-signature product (esign_oss + esign_css), separate from the core video-ID product. PAdES/qualified-signature features. | esign_oss/README.md “FaceKom eSign operator side server”; esign_css/PULL_REQUEST_TEMPLATE.md; branch feature/pades (esign_oss) |
| Self-Service V2 | A product flow, not a customization branch. Implemented as flow-handler directories self-service-v2-phase-1/ & -phase-2/ (and ic-self-service-v2-phase-1 for instacash). | vuer_oss/customization/flow/self-service-v2-phase-1/self-service-v2-phase-1.flow.handler.js |
| QTSP | Qualified Trust Service Provider (eIDAS) — appears as a ticket-prefix family (QTSP-1664, QTSPDEV-*) for trust-service work (timestamps, certs, trust lists). | branch QTSP-1664 (vuer_oss); related repos timestamp_service, trust_list_proxy |
| Janus | The WebRTC media/gateway server used for video calls and recording (consumed by the OSS conversion pipeline). | repos janus-api, janus-sdk (facekom-v2-clones/); janus-api |
| FaceKom | The product/company brand (TechTeamer’s video-identification / KYC + video-banking platform). Repos are private, owner TechTeamer. | */package.json (author: TechTeamer); vuer_oss/README.md “FaceKom OSS” |
| YouTrack | The issue tracker; ticket IDs FKITDEV-####, FKQA-####, etc. | PR templates “YouTrack ticket(s)”; vuer_oss/changelog.md links youtrack.techteamer.com |
| vuer_build / vuer-release | Build & release tooling. vuer_build: Docker build env that packages partner source bundles (Hungarian README). vuer-release: tag-triggered Docker image build via vuer-release-cli + release.json descriptors. | vuer_build/README.md; vuer-release/README.md |
| vuer_docker | The developer environment: docker-compose stacks for the whole platform (oss, css, esign, cv, janus, postgres, rabbitmq, …). Default branch master; partner-named branches (e.g. kh, mbh, cofidis). | vuer_docker/README.md; branch list |
| ic- | Filename/flow prefix for instacash partner customizations (e.g. ic-loan-payment.flow.handler.js). | vuer_oss/customization/flow/ic-*; many instacash branches |
Clarifications vs the task brief
- “Self-Service V2 = product flow NOT a branch” is correct as a customization branch statement, but the slug
self-service-v2does appear inside ad-hocfeature//fix/branch names (e.g.feature/web-self-service-v2,feature/self-service-v2-history,fix/uc-selfservice-v2invuer_oss). It is not a long-livedcustomization/<client>line.- The brief calls tickets “JIRA-like”; the actual tracker is YouTrack (see above).
Sources
Files / refs actually read:
- ESLint configs:
vuer_oss/eslint.config.mjs,vuer_css/eslint.config.mjs,esign_oss/eslint.config.mjs,esign_css/eslint.config.mjs,portal_css/.eslintrc.json,portal_css/.eslintignore package.json(name/version/private/author/engines/scripts):vuer_oss,vuer_css,esign_oss,esign_css,portal_cssvuer_oss/.editorconfig,vuer_oss/.yarnrc,vuer_oss/.browserslistrc,vuer_oss/docs.json,vuer_oss/changelog.md(head)vuer_oss/.github/workflows/pull-request.yaml,vuer_css/.github/workflows/audit.yaml; workflow listings foresign_oss,esign_css,portal_css,vuer_docker,vuer-release;vuer_css/sonar-project.properties- READMEs:
vuer_oss/README.md,vuer_css/README.md,esign_oss/README.md,esign_css/README.md,portal_css/README.md,vuer_build/README.md,vuer_docker/README.md,vuer-release/README.md;vuer_cv/Readme.md,vuer_emrtd/README.md - PR templates:
vuer_css/PULL_REQUEST_TEMPLATE.md,esign_oss/PULL_REQUEST_TEMPLATE.md,portal_css/pull_request_template.md vuer_oss/docs/developer-documentation.md(head)- Code samples:
vuer_oss/server/service/UserService.js - Branch names:
git for-each-ref refs/remotes/origin/+git symbolic-ref refs/remotes/origin/HEADforvuer_oss,vuer_css,esign_oss,esign_css,portal_css,vuer_docker,vuer-release - File patterns:
findovervuer_oss(andvuer_css) for*.endpoint.js,*Service.js,*.flow.handler.js,*.flow.js,*.trans.js,*.schema.json; flow dir listingvuer_oss/customization/flow/ - Orientation only (claims re-verified independently):
/Users/levander/levandor_obsidian/projects/facekom-v2/repos/vuer_oss.md