HSK WEBKDAccess-control modernization with a safer domain core
HSK WebKD is an enterprise access-control and RCP system, not a brochure site. CloudFloo is modernizing the software around RCP servers, TKD controllers/readers, PKD cardholders, KAD access cards, individual and group permissions, schedules, events, reports, remote-work workflows, and release gates while preserving the operational behavior that facilities depend on.

01 · Operational context
WebKD sits in the operational layer of a facility. Operators work with RCP servers, TKD controllers and readers, PKD cardholders, KAD access cards, schedules, sequences, events, attendance reports, announcements, wanted-person workflows, DOD views, and remote-work modules.
Modernization therefore starts with the domain map, not a UI skin. The system has to preserve how access decisions are made, how permissions are recalculated, how readers receive updates, and how operators diagnose events when something does not behave as expected.
CloudFloo treats the project as enterprise software: many modules, legacy constraints, real physical devices, protected operational data, and release paths that need rollback and migration discipline.
02 · Domain modules and contracts
The NestJS backend is organized around explicit WebKD modules: RCP, TKD, PKD, KAD, Uprawnienia, Zdarzenia, Harmonogram, Sekwencja, Grupa, GLC, Kontrola, Komunikat, reports, access control, license checks, monitoring, job status, queues, and administration.
Access control is modeled as both functionality permissions and data permissions. That matters because an operator may be allowed to use a feature but still be limited to specific groups, cardholders, readers, or organizational scopes.
OpenAPI specs, controllers, DTOs, frontend API clients, and domain documentation give the team a shared contract. The goal is to let critical behavior change through deliberate slices rather than hidden coupling.
03 · Runtime and local platform
The runtime is more than one web process. React frontends and API ingress talk to NestJS backend pods; the backend uses TypeORM/Postgres, Redis query cache, Bull queues, Socket.IO Redis adapter, logging, throttling, guards, interceptors, and health endpoints.
RCP communication can run in the backend path or through a dedicated rcp-worker path behind a feature flag. That gives the modernization work a practical route to separate device communication from the API surface without forcing a risky big-bang rewrite.
Local development uses Docker, Kubernetes manifests, Skaffold, mock/API-site images, Postgres, Redis, and E2E fixtures so engineers can work against something closer to the real operational topology.
04 · Release and migration control
The delivery path is built around Nx affected builds, GitHub Actions, container images, Helm, and environment-specific values. Staging and production flows can build only what changed, run tests, publish images, and deploy through the chart.
Database migrations are treated as rollout gates. The Helm chart runs a migration Job, backend pods wait in an init container until the migration succeeds, and robust deployment scripts clean stuck migration jobs before retrying. That is the kind of operational detail that prevents a broken schema rollout from becoming a silent production failure.
05 · Why this is valuable for HSK
A system like WebKD accumulates risk when knowledge lives only in people, old assumptions, or scattered code paths. The modernization work turns that knowledge into modules, contracts, tests, deployment gates, and diagrams that a team can reason about.
The practical value is not a vanity rewrite. It is fewer unknowns before each change, safer permission behavior, more reproducible environments, clearer release ownership, and a better path for future modules such as DOD, remote work, reporting, monitoring, and RCP microservice separation.
How the system is actually put together.
Access decisions cross cards, people, readers, permissions, schedules, and events
The core domain is a graph, not a CRUD list. PKD cardholders receive KAD cards, permissions can be individual or group-based, GLC and reader/controller structures define physical scope, schedules and sequences affect timing, and events/reports close the operational loop.
That model is why the WebKD case study needs architecture diagrams. A change to one part of the domain can affect effective permissions, reader reloads, attendance records, and operator visibility.
- Backend modules include RCP, TKD, PKD, KAD, Uprawnienia, Zdarzenia, Harmonogram, Sekwencja, Grupa, GLC, Kontrola, Komunikat, reports, and access control.
- Functional permissions and data permissions are separate concerns.
- Frontend routes mirror operator domains: devices, cards, owners, events, schedules, sequences, reports, users, and DOD admin views.
React operators, NestJS modules, Postgres, Redis, queues, and RCP worker paths
The operational topology combines React frontends, API ingress, NestJS backend pods, Postgres/TypeORM, Redis query cache, Bull queues, Socket.IO Redis adapter, logging, throttling, guards, and optional RCP worker separation.
This gives CloudFloo a realistic modernization surface: improve module boundaries, extract device communication safely, add tests around permission behavior, and keep the local environment close enough to production to catch real integration issues.
- NestJS backend uses TypeORM/Postgres and Redis-backed cache/queues.
- RCP microservice mode can move device commands from backend pods to rcp-worker.
- Skaffold builds backend, frontend, API site, mockserver, and worker images for local Kubernetes.
Migrations and rollouts are explicit, not a side effect of deploy
The release architecture uses Nx affected builds, GitHub Actions, GHCR/GCR images, Helm values, migration Jobs, backend init-container waits, readiness probes, and deployment scripts that clean stuck operations before retrying.
That matters because access-control systems are not tolerant of ambiguous deployment state. A schema migration, API rollout, and frontend release need to be coordinated so operators do not see a half-upgraded system.
- PR, staging, production, and E2E workflows are split in GitHub Actions.
- Helm migration Job runs before backend pods become ready.
- Backend pods gate startup on migration success through a wait-for-migration init container.
Start with a two-week systems audit.
We map architecture risk, delivery slices, deployment gates, and where AI or automation can help without losing production control.