# jetychodipilli/client-onboarding architecture

> Architecture diagram of the GitHub repository jetychodipilli/client-onboarding, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jetychodipilli/client-onboarding
- Repository: https://github.com/jetychodipilli/client-onboarding

## Overview

This is a multi-tenant client-onboarding and relationship-management platform: internal staff configure services and versioned workflows, create client projects, start an immutable onboarding run, and invite clients to complete portal steps. Forms and asset collection support submission, review, revision, and approval; organization membership, MFA/RBAC, and audit provide governance. The excerpts substantiate several service-level calls, while unsampled modules are represented only where the README documents capabilities; the supplied tree contains no asset package.

Main entry points: [`frontend/app/app`](https://github.com/jetychodipilli/client-onboarding/tree/main/frontend/app/app) (Internal workspace), [`backend/src/main/java/com/brainserve/clientonboarding/audit/application/AuditService.java`](https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/audit/application/AuditService.java) (Audit service), [`frontend/app/portal`](https://github.com/jetychodipilli/client-onboarding/tree/main/frontend/app/portal) (Client portal), [`backend/src/main/java/com/brainserve/clientonboarding/project/application/ProjectService.java`](https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/project/application/ProjectService.java) (Project management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_internalui["Internal workspace"]
  node_portalui["Client portal"]
end

subgraph group_setup["Tenant and workflow setup"]
  node_catalog["Service catalog"]
  node_workflow["Workflow templates"]
end

subgraph group_execution["Onboarding execution"]
  node_clientapi["Client API"]
  node_clientservice["Client management<br/>[ClientService.java]"]
  node_projectapi["Project API"]
  node_projectservice["Project management"]
  node_onboardapi["Onboarding API"]
  node_onboarding["Onboarding engine"]
  node_steps["Step execution"]
  node_portalservice["Invitation and portal"]
  node_forms["Form templates"]
  node_responses["Form submissions"]
  node_assets["Asset collection"]
  node_storage[("Private object storage")]
  node_scanner["Malware scanner"]
end

subgraph group_security["Security and audit"]
  node_auth["Authentication<br/>[AuthService.java]"]
  node_orgadmin["Organization access"]
  node_audit["Audit service<br/>[AuditService.java]"]
  node_postgres[("PostgreSQL")]
end

node_staff(("Internal staff"))
node_clientuser(("Client user"))

node_staff -->|"uses"| node_internalui
node_clientuser -->|"uses"| node_portalui
node_internalui -->|"manages services"| node_catalog
node_internalui -->|"configures workflows"| node_workflow
node_internalui -->|"manages clients"| node_clientapi
node_clientapi -->|"dispatches"| node_clientservice
node_clientservice -->|"persists clients"| node_postgres
node_internalui -->|"manages projects"| node_projectapi
node_projectapi -->|"dispatches"| node_projectservice
node_projectservice -->|"reads client"| node_clientservice
node_projectservice -->|"reads service"| node_catalog
node_projectservice -->|"persists projects"| node_postgres
node_internalui -->|"starts onboarding"| node_onboardapi
node_onboardapi -->|"dispatches"| node_onboarding
node_onboarding -->|"requires project"| node_projectservice
node_onboarding -->|"loads published version"| node_workflow
node_onboarding -->|"stores snapshot and steps"| node_postgres
node_onboardapi -->|"updates progress"| node_steps
node_portalui -->|"invites and accesses"| node_portalservice
node_portalservice -->|"stores grants and invitations"| node_postgres
node_portalui -->|"browses forms"| node_forms
node_portalui -->|"submits answers"| node_responses
node_responses -->|"updates workflow state"| node_steps
node_responses -->|"records review history"| node_audit
node_portalui -->|"uploads files"| node_assets
node_assets -.->|"uploads and retrieves versions"| node_storage
node_assets -.->|"scans uploads"| node_scanner
node_internalui -->|"signs in"| node_auth
node_portalui -->|"client sign-in"| node_auth
node_auth -->|"stores sessions"| node_postgres
node_internalui -->|"manages members and roles"| node_orgadmin
node_orgadmin -->|"persists organization access"| node_postgres
node_clientservice -->|"records changes"| node_audit
node_projectservice -->|"records changes"| node_audit
node_onboarding -->|"records changes"| node_audit
node_workflow -->|"records changes"| node_audit
node_auth -->|"records security events"| node_audit
node_orgadmin -->|"records administration"| node_audit
node_audit -->|"writes audit entries"| node_postgres

click node_internalui "https://github.com/jetychodipilli/client-onboarding/tree/main/frontend/app/app"
click node_portalui "https://github.com/jetychodipilli/client-onboarding/tree/main/frontend/app/portal"
click node_clientapi "https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/client/api/ClientController.java"
click node_clientservice "https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/client/application/ClientService.java"
click node_projectapi "https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/project/api/ProjectController.java"
click node_projectservice "https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/project/application/ProjectService.java"
click node_catalog "https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/servicecatalog/application/ServiceCatalogService.java"
click node_workflow "https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/workflow/application/WorkflowTemplateService.java"
click node_onboardapi "https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/onboarding/api/OnboardingController.java"
click node_onboarding "https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/onboarding/application/OnboardingService.java"
click node_steps "https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/onboarding/application/StepExecutionService.java"
click node_portalservice "https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/portal/application/ClientPortalService.java"
click node_forms "https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/forms/application/FormTemplateService.java"
click node_responses "https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/forms/application/FormResponseService.java"
click node_assets "https://github.com/jetychodipilli/client-onboarding/tree/main/backend/src/main/java/com/brainserve/clientonboarding"
click node_auth "https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/auth/application/AuthService.java"
click node_orgadmin "https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/organization/application/OrganizationAdminService.java"
click node_audit "https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/audit/application/AuditService.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_internalui,node_portalui,node_clientuser toneBlue
class node_catalog,node_workflow toneAmber
class node_clientapi,node_clientservice,node_projectapi,node_projectservice,node_onboardapi,node_onboarding,node_steps,node_portalservice,node_forms,node_responses,node_assets,node_storage,node_scanner toneMint
class node_auth,node_orgadmin,node_audit,node_postgres toneRose
class node_staff toneIndigo
```

## Components

### User experience

- [Internal workspace](https://github.com/jetychodipilli/client-onboarding/tree/main/frontend/app/app): `frontend/app/app`
- [Client portal](https://github.com/jetychodipilli/client-onboarding/tree/main/frontend/app/portal): `frontend/app/portal`

### Tenant and workflow setup

- [Service catalog](https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/servicecatalog/application/ServiceCatalogService.java): `backend/src/main/java/com/brainserve/clientonboarding/servicecatalog/application/ServiceCatalogService.java`
- [Workflow templates](https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/workflow/application/WorkflowTemplateService.java): `backend/src/main/java/com/brainserve/clientonboarding/workflow/application/WorkflowTemplateService.java`

### Onboarding execution

- [Client API](https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/client/api/ClientController.java): `backend/src/main/java/com/brainserve/clientonboarding/client/api/ClientController.java`
- [Client management](https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/client/application/ClientService.java): `backend/src/main/java/com/brainserve/clientonboarding/client/application/ClientService.java`
- [Project API](https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/project/api/ProjectController.java): `backend/src/main/java/com/brainserve/clientonboarding/project/api/ProjectController.java`
- [Project management](https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/project/application/ProjectService.java): `backend/src/main/java/com/brainserve/clientonboarding/project/application/ProjectService.java`
- [Onboarding API](https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/onboarding/api/OnboardingController.java): `backend/src/main/java/com/brainserve/clientonboarding/onboarding/api/OnboardingController.java`
- [Onboarding engine](https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/onboarding/application/OnboardingService.java): `backend/src/main/java/com/brainserve/clientonboarding/onboarding/application/OnboardingService.java`
- [Step execution](https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/onboarding/application/StepExecutionService.java): `backend/src/main/java/com/brainserve/clientonboarding/onboarding/application/StepExecutionService.java`
- [Invitation and portal](https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/portal/application/ClientPortalService.java): `backend/src/main/java/com/brainserve/clientonboarding/portal/application/ClientPortalService.java`
- [Form templates](https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/forms/application/FormTemplateService.java): `backend/src/main/java/com/brainserve/clientonboarding/forms/application/FormTemplateService.java`
- [Form submissions](https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/forms/application/FormResponseService.java): `backend/src/main/java/com/brainserve/clientonboarding/forms/application/FormResponseService.java`
- [Asset collection](https://github.com/jetychodipilli/client-onboarding/tree/main/backend/src/main/java/com/brainserve/clientonboarding): `backend/src/main/java/com/brainserve/clientonboarding`
- **Private object storage**
- **Malware scanner**

### Security and audit

- [Authentication](https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/auth/application/AuthService.java): `backend/src/main/java/com/brainserve/clientonboarding/auth/application/AuthService.java`
- [Organization access](https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/organization/application/OrganizationAdminService.java): `backend/src/main/java/com/brainserve/clientonboarding/organization/application/OrganizationAdminService.java`
- [Audit service](https://github.com/jetychodipilli/client-onboarding/blob/main/backend/src/main/java/com/brainserve/clientonboarding/audit/application/AuditService.java): `backend/src/main/java/com/brainserve/clientonboarding/audit/application/AuditService.java`
- **PostgreSQL**

### Other components

- **Internal staff**
- **Client user**

## Connections

- Internal staff → Internal workspace: uses
- Client user → Client portal: uses
- Internal workspace → Service catalog: manages services
- Internal workspace → Workflow templates: configures workflows
- Internal workspace → Client API: manages clients
- Client API → Client management: dispatches
- Client management → PostgreSQL: persists clients
- Internal workspace → Project API: manages projects
- Project API → Project management: dispatches
- Project management → Client management: reads client
- Project management → Service catalog: reads service
- Project management → PostgreSQL: persists projects
- Internal workspace → Onboarding API: starts onboarding
- Onboarding API → Onboarding engine: dispatches
- Onboarding engine → Project management: requires project
- Onboarding engine → Workflow templates: loads published version
- Onboarding engine → PostgreSQL: stores snapshot and steps
- Onboarding API → Step execution: updates progress
- Client portal → Invitation and portal: invites and accesses
- Invitation and portal → PostgreSQL: stores grants and invitations
- Client portal → Form templates: browses forms
- Client portal → Form submissions: submits answers
- Form submissions → Step execution: updates workflow state
- Form submissions → Audit service: records review history
- Client portal → Asset collection: uploads files
- Asset collection → Private object storage: uploads and retrieves versions
- Asset collection → Malware scanner: scans uploads
- Internal workspace → Authentication: signs in
- Client portal → Authentication: client sign-in
- Authentication → PostgreSQL: stores sessions
- Internal workspace → Organization access: manages members and roles
- Organization access → PostgreSQL: persists organization access
- Client management → Audit service: records changes
- Project management → Audit service: records changes
- Onboarding engine → Audit service: records changes
- Workflow templates → Audit service: records changes
- Authentication → Audit service: records security events
- Organization access → Audit service: records administration
- Audit service → PostgreSQL: writes audit entries
