# itsriku237/assetflow architecture

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

- Interactive diagram: https://gitdiagram.com/itsriku237/assetflow
- Repository: https://github.com/itsriku237/assetflow

## Overview

ADP AssetHub manages company IT assets from inventory and employee custody through requests, returns, repair, and retirement, with reimbursements and audit history. Employees and administrators use role-specific dashboards; admins also manage employees and administrator accounts. The documented flow is Next.js pages/components → server actions and data services → Prisma-backed PostgreSQL. Auth.js handles sign-in and server-side role checks; onboarding includes OTP email activation. Workflow capabilities and several connections are based on the README because their implementation was not sampled.

Main entry points: [`src/lib/actions/activation-actions.ts`](https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/activation-actions.ts) (Activation actions), [`src/lib/actions/asset-actions.ts`](https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/asset-actions.ts) (Asset operations), [`src/lib/actions/return-request-actions.ts`](https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/return-request-actions.ts) (Return workflow), [`src/lib/actions/maintenance-actions.ts`](https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/maintenance-actions.ts) (Repairs and maintenance)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and onboarding"]
  node_authpages["Sign-in pages<br/>[page.tsx]"]
  node_authactions["Sign-in actions<br/>[auth-actions.ts]"]
  node_authcore["Auth.js<br/>[auth.ts]"]
  node_onboarding["Employee activation"]
  node_onboardactions["Activation actions"]
  node_guards["Role guards<br/>[auth-guards.ts]"]
end

subgraph group_asset["Asset lifecycle"]
  node_assetpages["Asset views<br/>[page.tsx]"]
  node_assetactions["Asset operations<br/>[asset-actions.ts]"]
  node_lifecycle["Lifecycle rules<br/>[asset-lifecycle.ts]"]
  node_assignments["Custody assignments"]
  node_returns["Return workflow"]
  node_maintenance["Repairs and maintenance"]
end

subgraph group_workflows["Requests and expenses"]
  node_assetrequests["Asset requests"]
  node_reimbursements["Reimbursements"]
end

subgraph group_oversight["Administration and oversight"]
  node_employees["Employee directory"]
  node_audit["Audit trail<br/>[audit.ts]"]
  node_notifications["Notifications<br/>[notifications.ts]"]
  node_admin["Admin management<br/>[admin-actions.ts]"]
end

subgraph group_platform["Application and persistence"]
  node_dashboard["Role dashboards"]
  node_data["Domain data services<br/>[assets.ts]"]
  node_prisma["Prisma client<br/>[prisma.ts]"]
  node_db[("PostgreSQL")]
end

node_people(("Employees and admins"))
node_email["Resend email"]

node_people -->|"signs in"| node_authpages
node_authpages -->|"submits credentials"| node_authactions
node_authactions -->|"calls sign-in"| node_authcore
node_authcore -->|"reads and links users"| node_db
node_people -->|"activates account"| node_onboarding
node_onboarding -->|"submits OTP"| node_onboardactions
node_onboardactions -.->|"sends OTP"| node_email
node_onboardactions -->|"updates account"| node_db
node_people -->|"requests protected access"| node_guards
node_guards -->|"resolves session"| node_authcore
node_people -->|"uses dashboard"| node_dashboard
node_dashboard -->|"links to assets"| node_assetpages
node_assetpages -->|"loads asset data"| node_data
node_people -->|"administers directory"| node_employees
node_employees -->|"writes directory"| node_db
node_people -->|"manages inventory"| node_assetactions
node_assetactions -->|"applies transitions"| node_lifecycle
node_assetactions -->|"writes assets"| node_db
node_people -->|"assigns assets"| node_assignments
node_assignments -->|"creates custody record"| node_db
node_people -->|"requests asset"| node_assetrequests
node_assetrequests -->|"creates assignment on approval"| node_assignments
node_assetrequests -->|"stores request"| node_db
node_people -->|"requests return"| node_returns
node_returns -->|"updates asset state"| node_lifecycle
node_returns -->|"stores review"| node_db
node_people -->|"manages repairs"| node_maintenance
node_maintenance -->|"updates asset state"| node_lifecycle
node_maintenance -->|"stores repair history"| node_db
node_people -->|"submits or reviews claim"| node_reimbursements
node_reimbursements -->|"stores claim"| node_db
node_people -->|"manages admins"| node_admin
node_admin -->|"updates admin accounts"| node_db
node_audit -->|"appends events"| node_db
node_notifications -->|"stores alerts"| node_db
node_data -->|"queries through"| node_prisma
node_prisma -->|"reads and writes"| node_db

click node_authpages "https://github.com/itsriku237/assetflow/blob/main/src/app/(auth)/login/page.tsx"
click node_authactions "https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/auth-actions.ts"
click node_authcore "https://github.com/itsriku237/assetflow/blob/main/src/auth.ts"
click node_onboarding "https://github.com/itsriku237/assetflow/blob/main/src/components/auth/activation-form.tsx"
click node_onboardactions "https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/activation-actions.ts"
click node_guards "https://github.com/itsriku237/assetflow/blob/main/src/lib/auth-guards.ts"
click node_employees "https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/employee-actions.ts"
click node_dashboard "https://github.com/itsriku237/assetflow/blob/main/src/components/dashboard/employee-dashboard.tsx"
click node_assetpages "https://github.com/itsriku237/assetflow/blob/main/src/app/(dashboard)/available-assets/page.tsx"
click node_assetactions "https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/asset-actions.ts"
click node_lifecycle "https://github.com/itsriku237/assetflow/blob/main/src/lib/asset-lifecycle.ts"
click node_assignments "https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/assignment-actions.ts"
click node_returns "https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/return-request-actions.ts"
click node_assetrequests "https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/asset-request-actions.ts"
click node_maintenance "https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/maintenance-actions.ts"
click node_reimbursements "https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/reimbursement-actions.ts"
click node_audit "https://github.com/itsriku237/assetflow/blob/main/src/lib/audit.ts"
click node_notifications "https://github.com/itsriku237/assetflow/blob/main/src/lib/notifications.ts"
click node_admin "https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/admin-actions.ts"
click node_data "https://github.com/itsriku237/assetflow/blob/main/src/lib/data/assets.ts"
click node_prisma "https://github.com/itsriku237/assetflow/blob/main/src/lib/prisma.ts"

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_authpages,node_authactions,node_authcore,node_onboarding,node_onboardactions,node_guards toneBlue
class node_assetpages,node_assetactions,node_lifecycle,node_assignments,node_returns,node_maintenance toneAmber
class node_assetrequests,node_reimbursements toneMint
class node_employees,node_audit,node_notifications,node_admin toneRose
class node_dashboard,node_data,node_prisma,node_db,node_people,node_email toneIndigo
```

## Components

### Access and onboarding

- [Sign-in pages](https://github.com/itsriku237/assetflow/blob/main/src/app/(auth)/login/page.tsx): `src/app/(auth)/login/page.tsx`
- [Sign-in actions](https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/auth-actions.ts): `src/lib/actions/auth-actions.ts`
- [Auth.js](https://github.com/itsriku237/assetflow/blob/main/src/auth.ts): `src/auth.ts`
- [Employee activation](https://github.com/itsriku237/assetflow/blob/main/src/components/auth/activation-form.tsx): `src/components/auth/activation-form.tsx`
- [Activation actions](https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/activation-actions.ts): `src/lib/actions/activation-actions.ts`
- [Role guards](https://github.com/itsriku237/assetflow/blob/main/src/lib/auth-guards.ts): `src/lib/auth-guards.ts`

### Asset lifecycle

- [Asset views](https://github.com/itsriku237/assetflow/blob/main/src/app/(dashboard)/available-assets/page.tsx): `src/app/(dashboard)/available-assets/page.tsx`
- [Asset operations](https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/asset-actions.ts): `src/lib/actions/asset-actions.ts`
- [Lifecycle rules](https://github.com/itsriku237/assetflow/blob/main/src/lib/asset-lifecycle.ts): `src/lib/asset-lifecycle.ts`
- [Custody assignments](https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/assignment-actions.ts): `src/lib/actions/assignment-actions.ts`
- [Return workflow](https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/return-request-actions.ts): `src/lib/actions/return-request-actions.ts`
- [Repairs and maintenance](https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/maintenance-actions.ts): `src/lib/actions/maintenance-actions.ts`

### Requests and expenses

- [Asset requests](https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/asset-request-actions.ts): `src/lib/actions/asset-request-actions.ts`
- [Reimbursements](https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/reimbursement-actions.ts): `src/lib/actions/reimbursement-actions.ts`

### Administration and oversight

- [Employee directory](https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/employee-actions.ts): `src/lib/actions/employee-actions.ts`
- [Audit trail](https://github.com/itsriku237/assetflow/blob/main/src/lib/audit.ts): `src/lib/audit.ts`
- [Notifications](https://github.com/itsriku237/assetflow/blob/main/src/lib/notifications.ts): `src/lib/notifications.ts`
- [Admin management](https://github.com/itsriku237/assetflow/blob/main/src/lib/actions/admin-actions.ts): `src/lib/actions/admin-actions.ts`

### Application and persistence

- [Role dashboards](https://github.com/itsriku237/assetflow/blob/main/src/components/dashboard/employee-dashboard.tsx): `src/components/dashboard/employee-dashboard.tsx`
- [Domain data services](https://github.com/itsriku237/assetflow/blob/main/src/lib/data/assets.ts): `src/lib/data/assets.ts`
- [Prisma client](https://github.com/itsriku237/assetflow/blob/main/src/lib/prisma.ts): `src/lib/prisma.ts`
- **PostgreSQL**

### Other components

- **Employees and admins**
- **Resend email**

## Connections

- Employees and admins → Sign-in pages: signs in
- Sign-in pages → Sign-in actions: submits credentials
- Sign-in actions → Auth.js: calls sign-in
- Auth.js → PostgreSQL: reads and links users
- Employees and admins → Employee activation: activates account
- Employee activation → Activation actions: submits OTP
- Activation actions → Resend email: sends OTP
- Activation actions → PostgreSQL: updates account
- Employees and admins → Role guards: requests protected access
- Role guards → Auth.js: resolves session
- Employees and admins → Role dashboards: uses dashboard
- Role dashboards → Asset views: links to assets
- Asset views → Domain data services: loads asset data
- Employees and admins → Employee directory: administers directory
- Employee directory → PostgreSQL: writes directory
- Employees and admins → Asset operations: manages inventory
- Asset operations → Lifecycle rules: applies transitions
- Asset operations → PostgreSQL: writes assets
- Employees and admins → Custody assignments: assigns assets
- Custody assignments → PostgreSQL: creates custody record
- Employees and admins → Asset requests: requests asset
- Asset requests → Custody assignments: creates assignment on approval
- Asset requests → PostgreSQL: stores request
- Employees and admins → Return workflow: requests return
- Return workflow → Lifecycle rules: updates asset state
- Return workflow → PostgreSQL: stores review
- Employees and admins → Repairs and maintenance: manages repairs
- Repairs and maintenance → Lifecycle rules: updates asset state
- Repairs and maintenance → PostgreSQL: stores repair history
- Employees and admins → Reimbursements: submits or reviews claim
- Reimbursements → PostgreSQL: stores claim
- Employees and admins → Admin management: manages admins
- Admin management → PostgreSQL: updates admin accounts
- Audit trail → PostgreSQL: appends events
- Notifications → PostgreSQL: stores alerts
- Domain data services → Prisma client: queries through
- Prisma client → PostgreSQL: reads and writes
