From b12fcc02cdbf89c4a91147fef9c270d57e1b235d Mon Sep 17 00:00:00 2001 From: Louisa Best Date: Wed, 18 Mar 2026 23:05:35 +1030 Subject: [PATCH 1/5] Add system architecture documentation draft --- app-backend/docs/system-architecture.md | 254 ++++++++++++++++++++++++ 1 file changed, 254 insertions(+) create mode 100644 app-backend/docs/system-architecture.md diff --git a/app-backend/docs/system-architecture.md b/app-backend/docs/system-architecture.md new file mode 100644 index 000000000..03c901877 --- /dev/null +++ b/app-backend/docs/system-architecture.md @@ -0,0 +1,254 @@ +# SecureShift System Architecture + +## 1. Overview + +SecureShift is a multi-client security workforce platform composed of three main application areas: + +- **Backend API** (`app-backend`) - Node.js and Express backend providing REST endpoints, authentication, business logic, and persistence. +- **Employer Panel** (`app-frontend/employer-panel`) - web frontend for employers and administrative workflows. +- **Guard App** (`guard_app`) - mobile client for guards, built with Expo / React Native. + +The backend acts as the central integration point between the web and mobile clients, the database layer, and supporting services such as file uploads, notifications, and verification workflows. + +--- + +## 2. Repository Structure + +At a high level, the repository is organised into the following major areas: + +- `app-backend` + - backend service, API routes, controllers, models, middleware, configuration, and documentation +- `app-frontend/employer-panel` + - employer-facing web frontend +- `guard_app` + - guard-facing mobile application +- `docker-compose.yml` + - local orchestration for backend, frontend, and database services + +### Simplified Repository Layout + +SecureShift/ +├── app-backend/ +│ ├── src/ +│ │ ├── adapters/ +│ │ ├── config/ +│ │ ├── controllers/ +│ │ ├── middleware/ +│ │ ├── models/ +│ │ ├── routes/ +│ │ ├── services/ +│ │ └── utils/ +│ └── docs/ +├── app-frontend/ +│ └── employer-panel/ +├── guard_app/ +└── docker-compose.yml + +This reflects the high-level organisation of the system while omitting build artifacts and dependency directories (e.g. `node_modules`) for clarity. + +Within the backend, the main source modules are organised under `app-backend/src`: + +- `adapters` - external or specialised integration logic +- `config` - configuration such as database, uploads, and Swagger +- `controllers` - request handling logic +- `middleware` - authentication, RBAC, logging, and error handling +- `models` - MongoDB / Mongoose schemas +- `routes` - API endpoint definitions +- `scripts` - utility and seeding scripts +- `services` - business logic layer (currently limited) +- `utils` - reusable helpers such as crypto and email + +--- + +## 3. Backend Architecture + +The backend follows a modular Express architecture: + +1. **Routes** define endpoint paths and attach middleware. +2. **Controllers** receive validated requests and coordinate workflow logic. +3. **Adapters / services** encapsulate specific integrations or subsystem behaviour. +4. **Models** persist and retrieve data using MongoDB via Mongoose. +5. **Middleware** enforces cross-cutting concerns such as authentication, permissions, logging, and error handling. + +This creates a request flow of: + +`Client -> Route -> Controller -> Adapter/Service -> Model -> Database` + +The API is mounted under the versioned base path: + +`/api/v1` + +Swagger UI is exposed separately for API inspection and testing. + +--- + +## 4. Endpoint Areas + +The current backend exposes grouped endpoint areas through versioned REST routes. Based on the current route structure and Swagger configuration, key endpoint groups include: + +- `auth` +- `admin` +- `availability` +- `branch` +- `dashboard` +- `messages` +- `rbac` +- `shifts` +- `shiftattendance` +- `users` +- `verification` +- `health` + +Examples visible in the current API include: + +- `POST /api/v1/verification/start` +- `GET /api/v1/verification/status/:guardId` +- `POST /api/v1/verification/recheck/:guardId` +- `PUT /api/v1/shifts/{id}/complete` + +Swagger should be treated as the primary reference for the currently exposed API surface, while route files remain the source of implementation detail. + +--- + +## 5. Database Schema Overview + +The application uses MongoDB with Mongoose models representing core business entities. Key collections / models include: + +- `User` +- `Guard` +- `Employer` +- `Admin` +- `Shift` +- `ShiftAttendance` +- `Availability` +- `Message` +- `AuditLogs` +- `EOI` +- `GuardVerification` +- `ManualVerification` + +The previously created ERD remains useful as a high-level historical reference, but the current codebase should be treated as the authoritative source when documenting field-level details. + +At a high level: + +- `User` provides the shared account base +- `Guard`, `Employer`, and `Admin` extend user-related role information +- `Shift` stores work opportunities, assignments, status, and ratings +- `ShiftAttendance` records check-in/check-out data +- `Availability` records guard availability +- `Message` stores direct communication between users +- `GuardVerification` stores licence verification snapshots +- `ManualVerification` stores manual review records for non-automated jurisdictions + +--- + +## 6. Verification Subsystem Mapping + +The verification subsystem is explicitly documented in `verification.md` and implemented in code across adapters, controllers, routes, models, and utilities. + +### Intended Design + +The documented verification workflow defines: + +- **NSW** -> automatic licence verification through the NSW Security API +- **Other jurisdictions** -> manual verification workflow +- encrypted licence handling +- verification status and recheck endpoints + +### Code Mapping + +| Design concept | Code location | +|---|---| +| Verification routes | `src/routes/verification.routes.js` | +| Verification controller | `src/controllers/verification.controller.js` | +| NSW adapter | `src/adapters/verification/nswAdapter.js` | +| Manual adapter | `src/adapters/verification/manualAdapter.js` | +| Verification snapshot model | `src/models/GuardVerification.js` | +| Manual review model | `src/models/ManualVerification.js` | +| Licence encryption utility | `src/utils/crypto.js` | + +### Verification Interaction Flow + +For a request such as: + +`POST /api/v1/verification/start` + +the interaction flow is: + +`client -> verification route -> verification controller -> NSW adapter or manual adapter -> GuardVerification / ManualVerification model -> MongoDB` + +This subsystem is a clear example of the backend’s modular route-controller-adapter-model architecture. + +--- + +## 7. Documentation-to-Code Deltas + +Several differences were identified between the existing verification documentation and the current implementation: + +1. **API base path** + - Existing documentation describes verification endpoints under `/api/verification/...` + - Current backend routing is versioned under `/api/v1/...` + +2. **Model detail mismatch** + - The code contains additional schema detail not fully reflected in the documentation, including extra fields and enum values in the verification models. + +3. **Manual workflow completeness** + - The documentation describes a fuller manual approval workflow than is currently implemented in the exposed backend logic. + - Some manual review steps appear planned or only partially implemented. + +4. **Security policy gap** + - Documentation states that only admins manage manual verification records. + - Current implementation should be reviewed to confirm that this rule is fully enforced through middleware and controller logic. + +These deltas could be treated as maintenance items for future documentation refinement. + +--- + +## 8. Current Observations and Issues + +During local environment validation, the following current-state observations were identified: + +- `guard_app/.env` is no longer tracked in the current main branch, so local guard app environment configuration must be recreated manually. +- The employer frontend currently fails to compile in Docker due to a missing stylesheet import: + - `createShift.js` imports `./createShift.css` + - the stylesheet file is not present in the current branch +- This suggests a frontend asset rename/removal inconsistency that should be resolved separately from this documentation task. +- Local development may encounter port conflicts on `5000` when running Docker Compose alongside other services. +- In such cases, the backend container may need to be remapped (e.g. to `5001`) to allow successful startup. +- This suggests a need for clearer environment setup guidance or configurable port defaults. + +These findings are not blockers for backend architecture documentation, but they are relevant to the current system state. + +--- + +## 9. Existing Diagrams and Documentation Strategy + +Legacy architecture and ERD diagrams from a previous trimester remain useful as reference material. However, because the current codebase is still evolving, fully regenerating UML and ERD assets immediately is likely to create documentation churn. + +For the current task, the preferred strategy is: + +- document the **current module structure** +- document the **current endpoint groupings** +- document the **current schema concepts** +- document the **current subsystem interactions** +- defer full diagram regeneration until later in the trimester when the codebase stabilises + +This approach prioritises accuracy over presentation polish. + +--- + +## 10. Recommendations + +1. Add short documentation breadcrumbs in verification-related backend files linking code to `verification.md` +2. Align verification documentation with the `/api/v1` API base path +3. Document which parts of the manual verification workflow are implemented versus planned +4. Fix the employer frontend `createShift.css` import inconsistency +5. Regenerate architecture and database diagrams after feature churn slows later in the trimester + +--- + +## 11. Summary + +SecureShift uses a modular backend architecture that separates routes, controllers, adapters, models, middleware, and utilities. The current repository structure and verification subsystem provide a strong basis for maintainable in-repo architecture documentation. + +The most important immediate documentation need is not a polished diagram set, but an accurate mapping of current modules, endpoints, schema concepts, and interactions to the actual codebase. \ No newline at end of file From ee84c95556a619e7b16b44fba26262475e2d4773 Mon Sep 17 00:00:00 2001 From: Louisa Best Date: Wed, 15 Apr 2026 17:28:59 +0930 Subject: [PATCH 2/5] chore: remove system-architecture.md from tracking (local draft) --- app-backend/docs/system-architecture.md | 254 ------------------------ 1 file changed, 254 deletions(-) delete mode 100644 app-backend/docs/system-architecture.md diff --git a/app-backend/docs/system-architecture.md b/app-backend/docs/system-architecture.md deleted file mode 100644 index 03c901877..000000000 --- a/app-backend/docs/system-architecture.md +++ /dev/null @@ -1,254 +0,0 @@ -# SecureShift System Architecture - -## 1. Overview - -SecureShift is a multi-client security workforce platform composed of three main application areas: - -- **Backend API** (`app-backend`) - Node.js and Express backend providing REST endpoints, authentication, business logic, and persistence. -- **Employer Panel** (`app-frontend/employer-panel`) - web frontend for employers and administrative workflows. -- **Guard App** (`guard_app`) - mobile client for guards, built with Expo / React Native. - -The backend acts as the central integration point between the web and mobile clients, the database layer, and supporting services such as file uploads, notifications, and verification workflows. - ---- - -## 2. Repository Structure - -At a high level, the repository is organised into the following major areas: - -- `app-backend` - - backend service, API routes, controllers, models, middleware, configuration, and documentation -- `app-frontend/employer-panel` - - employer-facing web frontend -- `guard_app` - - guard-facing mobile application -- `docker-compose.yml` - - local orchestration for backend, frontend, and database services - -### Simplified Repository Layout - -SecureShift/ -├── app-backend/ -│ ├── src/ -│ │ ├── adapters/ -│ │ ├── config/ -│ │ ├── controllers/ -│ │ ├── middleware/ -│ │ ├── models/ -│ │ ├── routes/ -│ │ ├── services/ -│ │ └── utils/ -│ └── docs/ -├── app-frontend/ -│ └── employer-panel/ -├── guard_app/ -└── docker-compose.yml - -This reflects the high-level organisation of the system while omitting build artifacts and dependency directories (e.g. `node_modules`) for clarity. - -Within the backend, the main source modules are organised under `app-backend/src`: - -- `adapters` - external or specialised integration logic -- `config` - configuration such as database, uploads, and Swagger -- `controllers` - request handling logic -- `middleware` - authentication, RBAC, logging, and error handling -- `models` - MongoDB / Mongoose schemas -- `routes` - API endpoint definitions -- `scripts` - utility and seeding scripts -- `services` - business logic layer (currently limited) -- `utils` - reusable helpers such as crypto and email - ---- - -## 3. Backend Architecture - -The backend follows a modular Express architecture: - -1. **Routes** define endpoint paths and attach middleware. -2. **Controllers** receive validated requests and coordinate workflow logic. -3. **Adapters / services** encapsulate specific integrations or subsystem behaviour. -4. **Models** persist and retrieve data using MongoDB via Mongoose. -5. **Middleware** enforces cross-cutting concerns such as authentication, permissions, logging, and error handling. - -This creates a request flow of: - -`Client -> Route -> Controller -> Adapter/Service -> Model -> Database` - -The API is mounted under the versioned base path: - -`/api/v1` - -Swagger UI is exposed separately for API inspection and testing. - ---- - -## 4. Endpoint Areas - -The current backend exposes grouped endpoint areas through versioned REST routes. Based on the current route structure and Swagger configuration, key endpoint groups include: - -- `auth` -- `admin` -- `availability` -- `branch` -- `dashboard` -- `messages` -- `rbac` -- `shifts` -- `shiftattendance` -- `users` -- `verification` -- `health` - -Examples visible in the current API include: - -- `POST /api/v1/verification/start` -- `GET /api/v1/verification/status/:guardId` -- `POST /api/v1/verification/recheck/:guardId` -- `PUT /api/v1/shifts/{id}/complete` - -Swagger should be treated as the primary reference for the currently exposed API surface, while route files remain the source of implementation detail. - ---- - -## 5. Database Schema Overview - -The application uses MongoDB with Mongoose models representing core business entities. Key collections / models include: - -- `User` -- `Guard` -- `Employer` -- `Admin` -- `Shift` -- `ShiftAttendance` -- `Availability` -- `Message` -- `AuditLogs` -- `EOI` -- `GuardVerification` -- `ManualVerification` - -The previously created ERD remains useful as a high-level historical reference, but the current codebase should be treated as the authoritative source when documenting field-level details. - -At a high level: - -- `User` provides the shared account base -- `Guard`, `Employer`, and `Admin` extend user-related role information -- `Shift` stores work opportunities, assignments, status, and ratings -- `ShiftAttendance` records check-in/check-out data -- `Availability` records guard availability -- `Message` stores direct communication between users -- `GuardVerification` stores licence verification snapshots -- `ManualVerification` stores manual review records for non-automated jurisdictions - ---- - -## 6. Verification Subsystem Mapping - -The verification subsystem is explicitly documented in `verification.md` and implemented in code across adapters, controllers, routes, models, and utilities. - -### Intended Design - -The documented verification workflow defines: - -- **NSW** -> automatic licence verification through the NSW Security API -- **Other jurisdictions** -> manual verification workflow -- encrypted licence handling -- verification status and recheck endpoints - -### Code Mapping - -| Design concept | Code location | -|---|---| -| Verification routes | `src/routes/verification.routes.js` | -| Verification controller | `src/controllers/verification.controller.js` | -| NSW adapter | `src/adapters/verification/nswAdapter.js` | -| Manual adapter | `src/adapters/verification/manualAdapter.js` | -| Verification snapshot model | `src/models/GuardVerification.js` | -| Manual review model | `src/models/ManualVerification.js` | -| Licence encryption utility | `src/utils/crypto.js` | - -### Verification Interaction Flow - -For a request such as: - -`POST /api/v1/verification/start` - -the interaction flow is: - -`client -> verification route -> verification controller -> NSW adapter or manual adapter -> GuardVerification / ManualVerification model -> MongoDB` - -This subsystem is a clear example of the backend’s modular route-controller-adapter-model architecture. - ---- - -## 7. Documentation-to-Code Deltas - -Several differences were identified between the existing verification documentation and the current implementation: - -1. **API base path** - - Existing documentation describes verification endpoints under `/api/verification/...` - - Current backend routing is versioned under `/api/v1/...` - -2. **Model detail mismatch** - - The code contains additional schema detail not fully reflected in the documentation, including extra fields and enum values in the verification models. - -3. **Manual workflow completeness** - - The documentation describes a fuller manual approval workflow than is currently implemented in the exposed backend logic. - - Some manual review steps appear planned or only partially implemented. - -4. **Security policy gap** - - Documentation states that only admins manage manual verification records. - - Current implementation should be reviewed to confirm that this rule is fully enforced through middleware and controller logic. - -These deltas could be treated as maintenance items for future documentation refinement. - ---- - -## 8. Current Observations and Issues - -During local environment validation, the following current-state observations were identified: - -- `guard_app/.env` is no longer tracked in the current main branch, so local guard app environment configuration must be recreated manually. -- The employer frontend currently fails to compile in Docker due to a missing stylesheet import: - - `createShift.js` imports `./createShift.css` - - the stylesheet file is not present in the current branch -- This suggests a frontend asset rename/removal inconsistency that should be resolved separately from this documentation task. -- Local development may encounter port conflicts on `5000` when running Docker Compose alongside other services. -- In such cases, the backend container may need to be remapped (e.g. to `5001`) to allow successful startup. -- This suggests a need for clearer environment setup guidance or configurable port defaults. - -These findings are not blockers for backend architecture documentation, but they are relevant to the current system state. - ---- - -## 9. Existing Diagrams and Documentation Strategy - -Legacy architecture and ERD diagrams from a previous trimester remain useful as reference material. However, because the current codebase is still evolving, fully regenerating UML and ERD assets immediately is likely to create documentation churn. - -For the current task, the preferred strategy is: - -- document the **current module structure** -- document the **current endpoint groupings** -- document the **current schema concepts** -- document the **current subsystem interactions** -- defer full diagram regeneration until later in the trimester when the codebase stabilises - -This approach prioritises accuracy over presentation polish. - ---- - -## 10. Recommendations - -1. Add short documentation breadcrumbs in verification-related backend files linking code to `verification.md` -2. Align verification documentation with the `/api/v1` API base path -3. Document which parts of the manual verification workflow are implemented versus planned -4. Fix the employer frontend `createShift.css` import inconsistency -5. Regenerate architecture and database diagrams after feature churn slows later in the trimester - ---- - -## 11. Summary - -SecureShift uses a modular backend architecture that separates routes, controllers, adapters, models, middleware, and utilities. The current repository structure and verification subsystem provide a strong basis for maintainable in-repo architecture documentation. - -The most important immediate documentation need is not a polished diagram set, but an accurate mapping of current modules, endpoints, schema concepts, and interactions to the actual codebase. \ No newline at end of file From 2c67ef0e8fd2849427f2a76a44749338b525143c Mon Sep 17 00:00:00 2001 From: Louisa Best Date: Mon, 20 Apr 2026 16:46:44 +0930 Subject: [PATCH 3/5] docs: add system architecture document for review --- app-backend/docs/system-architecture.md | 491 +++++++++++++++++++++++ app-backend/docs/system-architecture.pdf | Bin 0 -> 62298 bytes 2 files changed, 491 insertions(+) create mode 100644 app-backend/docs/system-architecture.md create mode 100644 app-backend/docs/system-architecture.pdf diff --git a/app-backend/docs/system-architecture.md b/app-backend/docs/system-architecture.md new file mode 100644 index 000000000..6089884c8 --- /dev/null +++ b/app-backend/docs/system-architecture.md @@ -0,0 +1,491 @@ +--- +title: "SecureShift Backend System Architecture" +author: "Lou Best" +date: "April 2026" +--- + +## 1. Introduction + +### 1.1 Purpose + +This document provides an overview of the SecureShift backend architecture, including system structure, access control design, data ownership rules, and current implementation gaps. It is intended to support development, onboarding, and future system evolution. + +### 1.2 Scope + +This document focuses on the backend API (app-backend), including its interaction with the Employer Panel and Guard App. It covers architecture, security model, data relationships, and key subsystems. + +### 1.3 Intended Audience + +- Backend developers +- Frontend developers integrating with the API +- Project mentors and assessors + +--- + +## 2 System Context + +### 2.1 Platform Overview +SecureShift is a multi-client workforce management platform designed for the security industry. It supports employer-driven shift creation and management, guard onboarding and verification, and workforce coordination. + +### 2.2 Main Application Areas +- Backend API (Node.js/Express) +- Employer Panel (React) +- Guard App (React Native / Expo) + +### 2.3 Core Business Workflows +- Employer onboarding and profile management +- Guard registration and verification +- Shift creation and assignment +- Guard application and attendance tracking +- Payroll and reporting (partially implemented) + +--- + +## 3. High-Level Architecture + +### 3.1 Major Components + +SecureShift consists of three primary application components and one shared persistence layer: + +- **Backend API (`app-backend`)** + Node.js and Express service providing REST endpoints, authentication, RBAC, business logic, persistence, and integration with supporting subsystems such as verification, uploads, and notifications. + +- **Employer Panel (`app-frontend/employer-panel`)** + React-based web frontend used by employers and administrative users to manage profiles, shifts, sites, favourites, and other employer-facing workflows. + +- **Guard App (`guard_app`)** + Expo / React Native mobile application used by guards to manage profile details, view and apply for shifts, complete attendance workflows, and interact with notifications. + +- **MongoDB Database** + Primary persistence layer used by the backend through Mongoose models for users, shifts, attendance, verification, messaging, and related platform data. + +### 3.2 Component Interaction Summary + +The backend acts as the central coordination layer between client applications and the database. Both the Employer Panel and Guard App consume backend REST endpoints exposed under `/api/v1`. The backend is responsible for enforcing authentication, role-based access control, business rules, and persistence. + +At a high level: + +- the Employer Panel communicates with the backend for employer and admin workflows +- the Guard App communicates with the backend for guard-facing workflows +- the backend reads from and writes to MongoDB +- supporting subsystems such as verification, uploads, and notifications are coordinated through backend modules + +### 3.3 Request and Data Flow + +A typical request follows this path: + +`Client -> Route -> Middleware -> Controller -> Service/Adapter -> Model -> Database` + +In the current codebase, many endpoints still follow a simpler flow: + +`Client -> Route -> Middleware -> Controller -> Model -> Database` + + +This reflects the current architecture state, where some areas such as verification, payroll, and documents have clearer separation into service or adapter layers, while other parts remain more controller-driven. + +--- + +## 4. Repository and Codebase Structure + +### 4.1 Monorepo Structure + +The SecureShift project is organised as a monorepo containing backend, frontend, and mobile application components. + +SecureShift/ +|-- app-backend/ +|-- app-frontend/ +|-- guard_app/ +`-- docker-compose.yml + + +This structure enables coordinated development across multiple clients while maintaining a shared backend API and data model. + +--- + +### 4.2 Backend Source Layout + +The backend is structured into modular directories under `app-backend/src`: + +- **routes** — API endpoint definitions and middleware composition +- **controllers** — request handling and orchestration logic +- **services** — business logic (currently partial implementation) +- **models** — Mongoose schemas and database interaction +- **middleware** — authentication, RBAC, logging, validation +- **adapters** — external integrations and subsystem logic +- **utils** — reusable helper functions + +--- + +### 4.3 Documentation Strategy + +Documentation is maintained alongside the codebase under `app-backend/docs`. + +Current documentation includes: + +- RBAC design (`rbac.md`) +- verification subsystem (`verification.md`) +- architecture documentation (this document) + +The strategy is to maintain documentation as a living reference aligned with the current codebase, rather than static diagrams that quickly become outdated. + +--- + +## 5. Backend Architectural Style + +### 5.1 Current Request Flow + +The backend follows a modular Express architecture where requests pass through: + +`Route -> Middleware -> Controller -> Model -> Database` + +Middleware layers handle authentication, RBAC, and logging before requests reach controllers. + +--- + +### 5.2 Current Layer Responsibilities + +- **Routes** + - Define endpoints and attach middleware +- **Middleware** + - Authentication (JWT) + - Role-based access control (RBAC) + - Logging and request handling +- **Controllers** + - Handle request/response lifecycle + - Coordinate application logic +- **Models** + - Handle schema validation and database persistence + +--- + +### 5.3 Current vs Target Layering + +**Current State:** +- Many endpoints use controller-driven logic directly +- Limited service-layer abstraction exists + +**Target State:** +- Controllers remain thin +- Business logic is moved into reusable service layers +- Models remain responsible for persistence and validation + +This transition is planned incrementally rather than through large-scale refactoring. +--- + +## 6. Access Control and Security Model + +### 6.1 Authentication + +Authentication is implemented using JWT tokens validated through the `auth` middleware. + +Authenticated requests pass through the `auth` middleware. Some routes also use `loadUser` where the controller requires the full user document rather than only the JWT payload. + +Swagger documentation uses bearer authentication for API testing. + +--- + +### 6.2 Current RBAC Implementation + +RBAC is implemented through middleware using role-based and permission-based checks. + +However, RBAC is currently **partially consolidated**, with multiple approaches present across the codebase. + +--- + +### 6.3 Implemented Roles vs Documented Roles + +**Currently implemented roles:** +- `admin` +- `employer` +- `guard` + +**Documented or partially implemented roles:** +- `super_admin` +- `branch_admin` +- `client` + +These additional roles exist in documentation and middleware but are not consistently supported across the full system. + +The `User.role` enum defined in the user schema is currently the authoritative list of roles that can be persisted for user accounts. + +Middleware references to roles such as `super_admin`, `branch_admin`, and `client` represent planned or partially implemented functionality unless fully supported by the schema and route access rules. + +--- + +### 6.4 Access Control Principles + +Access control is designed to prioritise **data safety and ownership boundaries**. + +Routes must not grant broad access unless: +- the underlying controller or service enforces ownership filtering + +Example: +- `/api/v1/users/guards` was restricted to admin-only access +- due to lack of employer-level data scoping + +--- + +### 6.5 Security Notes and Limitations + +- RBAC patterns are not yet fully standardised +- Some endpoints rely on role checks without consistent data filtering +- Future improvements should unify RBAC enforcement and tenant-aware access rules + +--- + +## 7. Data Ownership and Tenant Scoping + +### 7.1 Multi-Tenant Context + +SecureShift operates as a multi-client platform where multiple employers use the same system. + +This requires strict separation of data between employers. + +--- + +### 7.2 Current Ownership Signals + +The current data model includes partial ownership indicators: + +- `Employer` extends `User` +- `Branch/Site` includes `employerId` +- `Shift` includes `createdBy` +- `Guard` appears globally accessible +- No explicit `Company` model exists + +--- + +### 7.3 Current Scoping Gaps + +Tenant boundaries are not consistently enforced across all endpoints. + +In particular: +- guard data +- shift data +- payroll-related data + +may not be fully scoped to employer ownership. + +--- + +### 7.4 Ownership Rules + +The system should enforce the following principle: + +> All employer-facing queries must be scoped by ownership fields such as `employerId`, `createdBy`, or equivalent relationships. + +Employers must never receive unscoped global data. + +--- + +### 7.5 Practical Implication + +Recent backend changes (e.g. `/users/guards`) highlight the need for: + +- explicit ownership filtering +- consistent tenant-aware query design + +This will guide future backend improvements. + +Examples of endpoints that require ownership-aware review include: + +- `GET /api/v1/availability/:userId` +- document administration routes accessible by employer roles +- notification creation and broadcast routes +- future attendance history endpoints + +These endpoints must be reviewed to ensure they enforce proper tenant scoping before broader role access is enabled. + +--- + +## 8. Domain Model and Relationships + +### 8.1 Core Entities + +The SecureShift backend is built around a set of core domain entities representing users, workforce operations, and system interactions. + +- **User** + - Base account model for all roles + - Stores authentication and shared profile data + +- **Guard** + - Extends user role + - Represents workforce members + - Includes verification status, licence data, and shift participation + +- **Employer** + - Extends user role + - Represents organisations managing workforce operations + - Owns branches/sites and creates shifts + +- **Shift** + - Represents work assignments created by employers + - Includes scheduling, assignment, and lifecycle state + +- **Branch/Site** + - Represents employer-owned locations + - Intended to scope shifts and workforce operations + +- **ShiftAttendance** + - Tracks guard attendance and check-in/check-out events + +- **Availability** + - Stores guard availability for shift matching + +- **Message** + - Represents communication between users + +- **Verification Models** + - `GuardVerification` + - `ManualVerification` + +- **EOI (Expression of Interest)** + - Represents pre-onboarding company interest + +--- + +### 8.2 Relationship Summary + +- A **User** is the base entity for all roles +- A **Guard** participates in shifts and has attendance records +- An **Employer** owns branches/sites and creates shifts +- A **Shift** is created by an employer and may be linked to a branch/site +- A **ShiftAttendance** record links a guard to a shift +- A **Branch/Site** belongs to an employer +- Verification records are linked to guards + +--- + +### 8.3 Known Model Ambiguities + +Several relationships are not yet fully defined or enforced: + +- Guards appear globally accessible rather than employer-scoped +- Shifts do not consistently reference `employerId` or `branchId` +- No explicit `Company` model exists +- Ownership boundaries rely partially on `createdBy` rather than explicit fields + +These ambiguities contribute to challenges in enforcing tenant-level data isolation. + +--- + +## 9. API Surface and Functional Areas + +### 9.1 Endpoint Groupings + +The currently mounted backend route groups (as defined in `src/routes/index.js`) are: + +- auth +- admin +- availability +- branch +- documents +- health +- messages +- notifications +- payroll +- rbac +- shifts +- users + +Additional route files exist for dashboard, shift attendance, and verification, but these should be checked against `src/routes/index.js` before being treated as currently exposed API groups. + +--- + +### 9.2 Versioning and Swagger + +All endpoints are versioned under: + +`/api/v1` + +Swagger UI is used as the primary interface for: +- API discovery +- testing endpoints +- validating request/response structures + +--- + +### 9.3 Notes on Route Coverage + +Swagger is useful for API discovery and testing, but mounted route files should be treated as the source of truth for currently reachable endpoints. + +Some Swagger-documented endpoints may not be accessible if their corresponding routes are not mounted. + +--- + +### 9.4 RBAC Route Considerations + +The `/api/v1/rbac` route group is currently mounted, but the associated route file appears to include middleware-related logic and may not represent a clean, stable RBAC management API. + +This suggests that the RBAC route implementation requires review before being treated as a production-ready endpoint group. + +--- + +## 10. Current Gaps, Risks, and Architectural Debt + +### 10.1 RBAC Inconsistencies + +- Multiple RBAC patterns exist across middleware and routes +- Role definitions are not fully aligned between documentation and schema +- Some endpoints rely on role checks without sufficient data scoping + +--- + +### 10.2 Tenant Scoping Risks + +- Employer-facing endpoints are not consistently scoped +- Some queries currently return global data without ownership filtering +- Example: + - `/api/v1/users/guards` required restriction to admin-only due to lack of scoping + +--- + +### 10.3 Service Layer Gaps + +- Business logic is inconsistently distributed +- Controllers often contain logic that should be moved to services +- Limited reuse of business rules across modules + +--- + +### 10.4 Documentation and Implementation Drift + +- Documentation may not reflect current API paths or schema details +- Some workflows (e.g. verification) are partially implemented +- Swagger and code should remain the primary sources of truth + +--- + +### 10.5 Operational and Environment Issues + +- Local environment setup inconsistencies +- Docker build issues in frontend +- Port conflicts during development + +These issues do not prevent system operation but introduce friction and inconsistency in development workflows. + +--- + +## 11. Recommendations and Roadmap + +### 11.1 Short-Term + +- Align RBAC roles between schema and middleware +- Ensure employer-facing endpoints enforce tenant scoping +- Fix documentation inconsistencies + +--- + +### 11.2 Mid-Term + +- Introduce service layer for shift and user workflows +- Define guard-to-employer relationship model +- Consolidate RBAC implementation patterns + +--- + +### 11.3 Long-Term + +- Introduce formal company model if required +- Expand role system where justified +- Improve test coverage and validation consistency \ No newline at end of file diff --git a/app-backend/docs/system-architecture.pdf b/app-backend/docs/system-architecture.pdf new file mode 100644 index 0000000000000000000000000000000000000000..217f509a5fe384cb7f95dddc32db4940448f2249 GIT binary patch literal 62298 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 literal 0 HcmV?d00001 From 438284e599be6d289bf755ada4586246853f961e Mon Sep 17 00:00:00 2001 From: Louisa Best Date: Sun, 17 May 2026 15:34:46 +0930 Subject: [PATCH 4/5] docs(backend): update system architecture evidence --- app-backend/docs/system-architecture.md | 265 +++++++++++++++-------- app-backend/docs/system-architecture.pdf | Bin 62298 -> 71897 bytes 2 files changed, 177 insertions(+), 88 deletions(-) diff --git a/app-backend/docs/system-architecture.md b/app-backend/docs/system-architecture.md index 6089884c8..4f5955602 100644 --- a/app-backend/docs/system-architecture.md +++ b/app-backend/docs/system-architecture.md @@ -1,7 +1,7 @@ --- title: "SecureShift Backend System Architecture" author: "Lou Best" -date: "April 2026" +date: "May 2026" --- ## 1. Introduction @@ -20,7 +20,7 @@ This document focuses on the backend API (app-backend), including its interactio - Frontend developers integrating with the API - Project mentors and assessors ---- +*** ## 2 System Context @@ -39,7 +39,7 @@ SecureShift is a multi-client workforce management platform designed for the sec - Guard application and attendance tracking - Payroll and reporting (partially implemented) ---- +*** ## 3. High-Level Architecture @@ -81,9 +81,9 @@ In the current codebase, many endpoints still follow a simpler flow: `Client -> Route -> Middleware -> Controller -> Model -> Database` -This reflects the current architecture state, where some areas such as verification, payroll, and documents have clearer separation into service or adapter layers, while other parts remain more controller-driven. +This reflects the current architecture state, where some areas such as payroll, fatigue monitoring, guard scoring, documents, and verification adapters have clearer separation into service or adapter layers. Other parts of the backend, including shift creation, attendance, branch/site logic, availability, and incident workflows, remain more controller-driven and are candidates for future service-layer consolidation. ---- +*** ## 4. Repository and Codebase Structure @@ -100,7 +100,7 @@ SecureShift/ This structure enables coordinated development across multiple clients while maintaining a shared backend API and data model. ---- +*** ### 4.2 Backend Source Layout @@ -114,7 +114,7 @@ The backend is structured into modular directories under `app-backend/src`: - **adapters** — external integrations and subsystem logic - **utils** — reusable helper functions ---- +*** ### 4.3 Documentation Strategy @@ -128,7 +128,7 @@ Current documentation includes: The strategy is to maintain documentation as a living reference aligned with the current codebase, rather than static diagrams that quickly become outdated. ---- +*** ## 5. Backend Architectural Style @@ -140,29 +140,42 @@ The backend follows a modular Express architecture where requests pass through: Middleware layers handle authentication, RBAC, and logging before requests reach controllers. ---- +*** ### 5.2 Current Layer Responsibilities - **Routes** - - Define endpoints and attach middleware + - Define endpoint paths and attach middleware + - Apply authentication and role guards + - In some areas, routes also contain inline authorization helpers + - **Middleware** - - Authentication (JWT) - - Role-based access control (RBAC) - - Logging and request handling + - Authentication using JWT + - User loading where full user records are required + - Role-based and permission-based access control + - Logging, audit middleware, and error handling + - **Controllers** - Handle request/response lifecycle - Coordinate application logic + - In several modules, controllers still contain business rules directly + +- **Services** + - Contain reusable business logic where service-layer separation has been introduced + - Current examples include payroll, fatigue monitoring, guard scoring, documents, and verification adapters + - **Models** - - Handle schema validation and database persistence + - Define Mongoose schemas, validation rules, indexes, virtual fields, and persistence relationships ---- +*** ### 5.3 Current vs Target Layering **Current State:** -- Many endpoints use controller-driven logic directly -- Limited service-layer abstraction exists +- Many endpoints still use controller-driven logic directly +- Service-layer abstraction exists in selected areas, including payroll, fatigue monitoring, guard scoring, documents, and verification adapters +- Some route files use inline role guards rather than the central RBAC middleware +- Attendance check-in/check-out logic remains close to the controller/model layer **Target State:** - Controllers remain thin @@ -170,7 +183,7 @@ Middleware layers handle authentication, RBAC, and logging before requests reach - Models remain responsible for persistence and validation This transition is planned incrementally rather than through large-scale refactoring. ---- +*** ## 6. Access Control and Security Model @@ -182,7 +195,7 @@ Authenticated requests pass through the `auth` middleware. Some routes also use Swagger documentation uses bearer authentication for API testing. ---- +*** ### 6.2 Current RBAC Implementation @@ -190,7 +203,7 @@ RBAC is implemented through middleware using role-based and permission-based che However, RBAC is currently **partially consolidated**, with multiple approaches present across the codebase. ---- +*** ### 6.3 Implemented Roles vs Documented Roles @@ -208,9 +221,11 @@ These additional roles exist in documentation and middleware but are not consist The `User.role` enum defined in the user schema is currently the authoritative list of roles that can be persisted for user accounts. +A current implementation risk is role-definition drift. For example, some routes and middleware reference expanded roles such as `super_admin`, `branch_admin`, `client`, or `employee`, but the persisted `User.role` enum currently only supports `guard`, `employer`, and `admin`. This means route-level role checks must be reviewed against the schema before being treated as reliable access-control guarantees. + Middleware references to roles such as `super_admin`, `branch_admin`, and `client` represent planned or partially implemented functionality unless fully supported by the schema and route access rules. ---- +*** ### 6.4 Access Control Principles @@ -220,10 +235,11 @@ Routes must not grant broad access unless: - the underlying controller or service enforces ownership filtering Example: -- `/api/v1/users/guards` was restricted to admin-only access -- due to lack of employer-level data scoping +- `/api/v1/users/guards` is intended to be restricted because it exposes global guard data +- however, the current route references `ROLES.ADMIN` and `ROLES.EMPLOYEE`, where `ROLES.EMPLOYEE` does not align with the persisted user-role enum +- this indicates role-definition drift and reinforces the need for route-level RBAC review ---- +*** ### 6.5 Security Notes and Limitations @@ -231,29 +247,40 @@ Example: - Some endpoints rely on role checks without consistent data filtering - Future improvements should unify RBAC enforcement and tenant-aware access rules ---- +*** ## 7. Data Ownership and Tenant Scoping -### 7.1 Multi-Tenant Context +### 7.1 Multi-Tenant and Marketplace Context -SecureShift operates as a multi-client platform where multiple employers use the same system. +SecureShift operates as a multi-client workforce platform where multiple employers use the same backend and database. -This requires strict separation of data between employers. +The current implementation is best understood as a hybrid model: ---- +- employers own branches/sites through `employerId` +- employers create shifts through `createdBy` +- guards are global users rather than employer-owned records +- guards connect to employers through shift applications, assignments, attendance, payroll, and related workflows + +This means employer-facing queries must be scoped carefully. In a marketplace-style model, employers should not receive broad global guard data. Instead, employer access to guard information should generally be based on shift-specific relationships such as applicants, assigned guards, payroll records, or attendance records connected to shifts owned by that employer. + +*** ### 7.2 Current Ownership Signals The current data model includes partial ownership indicators: -- `Employer` extends `User` -- `Branch/Site` includes `employerId` -- `Shift` includes `createdBy` -- `Guard` appears globally accessible +- `User.role` identifies whether an account is a guard, employer, or admin +- `Branch/Site` includes `employerId`, identifying the employer that owns the site +- `Shift` includes `createdBy`, identifying the employer/admin user that created the shift +- `Shift.siteId` links a shift to an employer-owned branch/site +- `Shift.applicants` records guards who have applied for a shift +- `Shift.acceptedBy` records the approved/assigned guard +- `Shift.guardIds` supports preselected or assigned guard references +- `Guard` users appear globally accessible unless scoped through shift, payroll, attendance, or other relationship data - No explicit `Company` model exists ---- +*** ### 7.3 Current Scoping Gaps @@ -266,7 +293,7 @@ In particular: may not be fully scoped to employer ownership. ---- +*** ### 7.4 Ownership Rules @@ -276,7 +303,7 @@ The system should enforce the following principle: Employers must never receive unscoped global data. ---- +*** ### 7.5 Practical Implication @@ -287,16 +314,20 @@ Recent backend changes (e.g. `/users/guards`) highlight the need for: This will guide future backend improvements. -Examples of endpoints that require ownership-aware review include: +Examples of endpoints and workflows that require ownership-aware review include: +- `GET /api/v1/users/guards` +- `GET /api/v1/users/guards/:id/score` +- `GET /api/v1/users/favourites` - `GET /api/v1/availability/:userId` +- `GET /api/v1/attendance/:userId` - document administration routes accessible by employer roles - notification creation and broadcast routes -- future attendance history endpoints +- payroll and reporting endpoints These endpoints must be reviewed to ensure they enforce proper tenant scoping before broader role access is enabled. ---- +*** ## 8. Domain Model and Relationships @@ -342,7 +373,27 @@ The SecureShift backend is built around a set of core domain entities representi - **EOI (Expression of Interest)** - Represents pre-onboarding company interest ---- +- **Payroll** + - Stores payroll records derived from completed shifts and attendance data + - Supports approval, processing, and export workflows + +- **Incident** + - Records guard-related incident data + - Used by guard scoring and operational risk workflows + +- **Notification** + - Represents system/user notifications + +- **Equipment** + - Represents equipment-related records + +- **Role** + - Represents role/permission structures where implemented + +- **AuditLog** + - Supports auditability of backend actions where logging is used + +*** ### 8.2 Relationship Summary @@ -354,7 +405,7 @@ The SecureShift backend is built around a set of core domain entities representi - A **Branch/Site** belongs to an employer - Verification records are linked to guards ---- +*** ### 8.3 Known Model Ambiguities @@ -367,30 +418,33 @@ Several relationships are not yet fully defined or enforced: These ambiguities contribute to challenges in enforcing tenant-level data isolation. ---- +*** ## 9. API Surface and Functional Areas ### 9.1 Endpoint Groupings -The currently mounted backend route groups (as defined in `src/routes/index.js`) are: +The currently mounted backend route groups, as defined in `src/routes/index.js`, are: -- auth -- admin -- availability -- branch -- documents -- health -- messages -- notifications -- payroll -- rbac -- shifts -- users +- `/api/v1/documents` +- `/api/v1/health` +- `/api/v1/auth` +- `/api/v1/shifts` +- `/api/v1/messages` +- `/api/v1/admin` +- `/api/v1/availability` +- `/api/v1/users` +- `/api/v1/rbac` +- `/api/v1/branch` +- `/api/v1/attendance` +- `/api/v1/incidents` +- `/api/v1/notifications` +- `/api/v1/payroll` +- `/api/v1/equipment` -Additional route files exist for dashboard, shift attendance, and verification, but these should be checked against `src/routes/index.js` before being treated as currently exposed API groups. +These mounted route groups should be treated as the source of truth for currently reachable backend API areas. ---- +*** ### 9.2 Versioning and Swagger @@ -403,15 +457,17 @@ Swagger UI is used as the primary interface for: - testing endpoints - validating request/response structures ---- +*** ### 9.3 Notes on Route Coverage Swagger is useful for API discovery and testing, but mounted route files should be treated as the source of truth for currently reachable endpoints. -Some Swagger-documented endpoints may not be accessible if their corresponding routes are not mounted. +Because Swagger can scan route files that exist in the repository, it may document endpoints from files that are not currently mounted under `/api/v1`. This creates a possible documentation drift risk where Swagger appears to expose an endpoint that is not actually reachable through the Express route index. ---- +For this reason, `src/routes/index.js` should be checked when confirming whether an API group is currently exposed. + +*** ### 9.4 RBAC Route Considerations @@ -419,44 +475,60 @@ The `/api/v1/rbac` route group is currently mounted, but the associated route fi This suggests that the RBAC route implementation requires review before being treated as a production-ready endpoint group. ---- +*** + +## 10. Recent Backend Improvements and Architecture Impact + +Recent backend work has improved the maintainability, reliability, and future-readiness of the SecureShift backend. + +| Improvement | Architecture impact | +|---|---| +| Payroll service and cleanup | Moves payroll calculation, date-range handling, role scoping, approval, processing, and export logic into a dedicated service layer. This improves maintainability and prepares payroll data for reporting and analytics. | +| Fatigue monitoring service | Introduces reusable workload-safety logic for assessing guard fatigue based on shifts per week, hours per day, and hours per week. This supports safer shift assignment and creates a foundation for future guard recommendation logic. | +| Guard scoring service | Combines shift completion, punctuality, and incident data into a reusable scoring calculation. This shows how attendance, shift, and incident data can support future operational intelligence. | +| Assigned guard and applicant relationships | Shift records now more clearly represent applicants, accepted guards, assigned guard virtuals, and guard references. This supports the marketplace-style workflow where guards apply to shifts and employers approve assignments. | +| Attendance validation | Attendance check-in/check-out includes location validation, assigned-guard checks, duplicate check-in prevention, and geofence-style radius checking. This logic is important for payroll reliability but remains a candidate for future service-layer consolidation. | +| RBAC and scoping review | Analysis of guard access, role drift, and employer visibility has clarified the need for route-level RBAC cleanup and marketplace-aware data scoping. | +| Architecture documentation | This document records the backend structure, risks, ownership model, and roadmap to support maintainability, onboarding, and future development. | + +*** -## 10. Current Gaps, Risks, and Architectural Debt +## 11. Current Gaps, Risks, and Architectural Debt -### 10.1 RBAC Inconsistencies +### 11.1 RBAC Inconsistencies - Multiple RBAC patterns exist across middleware and routes - Role definitions are not fully aligned between documentation and schema - Some endpoints rely on role checks without sufficient data scoping ---- +*** -### 10.2 Tenant Scoping Risks +### 11.2 Tenant Scoping Risks - Employer-facing endpoints are not consistently scoped - Some queries currently return global data without ownership filtering - Example: - - `/api/v1/users/guards` required restriction to admin-only due to lack of scoping + - `/api/v1/users/guards` exposes global guard data and requires RBAC and marketplace-aware scoping review ---- +*** -### 10.3 Service Layer Gaps +### 11.3 Service Layer Gaps - Business logic is inconsistently distributed - Controllers often contain logic that should be moved to services - Limited reuse of business rules across modules ---- +*** -### 10.4 Documentation and Implementation Drift +### 11.4 Documentation and Implementation Drift - Documentation may not reflect current API paths or schema details - Some workflows (e.g. verification) are partially implemented - Swagger and code should remain the primary sources of truth ---- +*** -### 10.5 Operational and Environment Issues +### 11.5 Operational and Environment Issues - Local environment setup inconsistencies - Docker build issues in frontend @@ -464,28 +536,45 @@ This suggests that the RBAC route implementation requires review before being tr These issues do not prevent system operation but introduce friction and inconsistency in development workflows. ---- +*** -## 11. Recommendations and Roadmap +### 11.6 Mounted Route and Swagger Drift -### 11.1 Short-Term +Swagger may show endpoints from route files that exist in the repository even where those routes are not mounted through `src/routes/index.js`. This can make API documentation appear broader than the actually reachable API surface. -- Align RBAC roles between schema and middleware -- Ensure employer-facing endpoints enforce tenant scoping -- Fix documentation inconsistencies +**Recommendation:** treat `src/routes/index.js` as the source of truth for exposed route groups and periodically reconcile Swagger documentation with mounted routes. ---- +*** +### 11.7 Attendance and Site Geolocation Mismatch -### 11.2 Mid-Term +Attendance check-in validates the guard location against `shift.siteId.location.latitude` and `shift.siteId.location.longitude`. However, the `Branch` model currently stores address-style location fields such as line, city, state, postcode, and country. This creates a possible mismatch between the attendance geofence logic and the site schema. -- Introduce service layer for shift and user workflows -- Define guard-to-employer relationship model -- Consolidate RBAC implementation patterns +**Recommendation:** standardise branch/site geolocation fields or ensure shift-level latitude/longitude is consistently used for attendance validation. ---- +*** + +## 12. Recommendations and Roadmap + +### 12.1 Short-Term + +- Reconcile mounted route groups with Swagger documentation +- Fix role-definition drift, including unsupported role constants such as `employee` +- Review `/users/guards` and guard score visibility against marketplace access rules +- Standardise branch/site geolocation fields used by attendance validation + +*** + +### 12.2 Mid-Term + +- Introduce shift-specific applicant access, such as `GET /api/v1/shifts/:shiftId/applicants` +- Continue moving attendance, shift approval, branch/site, and availability logic into services +- Consolidate route-level authorization into shared RBAC middleware rather than inline route guards +- Add service-level and endpoint-level regression tests for shift, attendance, payroll, and RBAC workflows + +*** -### 11.3 Long-Term +### 12.3 Long-Term -- Introduce formal company model if required -- Expand role system where justified -- Improve test coverage and validation consistency \ No newline at end of file +- Develop operational analytics using attendance, payroll, shift, incident, and guard score data +- Support employer labour cost summaries, guard earnings summaries, projected versus actual labour cost, and reliability metrics +- Use fatigue, availability, attendance, and guard score data as foundations for future AI-assisted guard recommendation diff --git a/app-backend/docs/system-architecture.pdf b/app-backend/docs/system-architecture.pdf index 217f509a5fe384cb7f95dddc32db4940448f2249..88cfd5b1f7e9f48ac5f90b4da4a5b48a9e077ad5 100644 GIT binary patch delta 58184 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 S$HC0T#STMGF0Lp6^M3$*m)`yW From 62179acc36ccd7123a6e7b1d5ca3005421ac164e Mon Sep 17 00:00:00 2001 From: Louisa Best Date: Mon, 18 May 2026 00:04:49 +0930 Subject: [PATCH 5/5] docs(backend): update system architecture evidence 2 --- app-backend/docs/system-architecture.md | 1 + app-backend/docs/system-architecture.pdf | Bin 71897 -> 71771 bytes 2 files changed, 1 insertion(+) diff --git a/app-backend/docs/system-architecture.md b/app-backend/docs/system-architecture.md index 4f5955602..fa2d81cad 100644 --- a/app-backend/docs/system-architecture.md +++ b/app-backend/docs/system-architecture.md @@ -183,6 +183,7 @@ Middleware layers handle authentication, RBAC, and logging before requests reach - Models remain responsible for persistence and validation This transition is planned incrementally rather than through large-scale refactoring. + *** ## 6. Access Control and Security Model diff --git a/app-backend/docs/system-architecture.pdf b/app-backend/docs/system-architecture.pdf index 88cfd5b1f7e9f48ac5f90b4da4a5b48a9e077ad5..7718755d6f1134be0c830ddb5b11d226bd9e0b35 100644 GIT binary patch delta 23149 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

OYj@;C%@OSuIH5`Q?OQa|iO52i}9dVT6zh}zp{ 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