# kumarancnpalani/odoo- architecture

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

- Interactive diagram: https://gitdiagram.com/kumarancnpalani/odoo-
- Repository: https://github.com/kumarancnpalani/odoo-

## Overview

#### Purpose and Entry Points
AssetFlow is a Next.js App Router application for enterprise IT asset registry, custody, reservations, maintenance, and physical audits. The public root routes users into authentication and the protected dashboard:
- `src/app/page.tsx`
- `src/app/login/page.tsx`
- `src/app/dashboard/layout.tsx`
- `src/middleware.ts`

#### Application Shell and Access Control
The dashboard layout provides the shared authenticated workspace and navigation; login submits through server-side auth actions. Middleware is the request boundary for route protection, while JWT/auth utilities provide session handling.
- `src/app/dashboard/layout.tsx`
- `src/app/login/loginForm.tsx`
- `src/app/actions/authActions.ts`
- `src/lib/auth.ts`

#### Persistence and Initialization
Prisma maps the relational AssetFlow domain to MySQL. The schema is the system-of-record boundary for assets, people, allocations, bookings, maintenance, and audit records. Database initialization and seed routines run schema/bootstrap checks for development deployment.
- `prisma/schema.prisma`
- `prisma/seed.ts`
- `src/lib/prisma.ts`
- `src/lib/initDb.ts`

#### Server-Action Domain Boundary
Mutating business workflows are implemented as Next.js Server Actions rather than a separate API layer. UI consoles invoke these actions for authorization-sensitive database updates, validation, status transitions, imports, and revalidation.
- `src/app/actions/assetActions.ts`
- `src/app/actions/bookingActions.ts`
- `src/app/actions/maintenanceActions.ts`
- `src/app/actions/auditActions.ts`

#### Asset Registry and Custody Flow
The assets directory manages catalog records, category-driven metadata, serials, tags, locations, condition, and availability. Allocation operations connect assets to employees/departments, enforce custody conflict rules, and support returns and transfer workflows.
- `src/app/dashboard/assets/assetsDirectory.tsx`
- `src/app/dashboard/allocations/allocationsConsole.tsx`
- `src/app/actions/assetActions.ts`
- `src/app/actions/bookingActions.ts`

#### Scheduling and Maintenance Flow
Bookable assets pass through reservation overlap validation before bookings are persisted. Maintenance uses a stateful repair workflow: assignment and repair status changes affect the linked asset’s availability/maintenance status.
- `src/app/dashboard/bookings/bookingsConsole.tsx`
- `src/app/dashboard/maintenance/page.tsx`
- `src/components/maintenanceConsole.tsx`
- `src/app/actions/maintenanceActions.ts`

#### Audit, Setup, and Operational I/O
Audit cycles generate assigned verification workflows and persist outcomes such as verified, missing, or damaged assets. Setup centralizes master-data administration and bulk imports. CSV utilities form the import/export boundary; SMTP mail sends workflow notifications externally.
- `src/app/dashboard/audit/auditConsole.tsx`
- `src/app/dashboard/setup/setupTabs.tsx`
- `src/app/actions/importActions.ts`
- `src/lib/csvUtils.ts`
- `src/lib/mail.ts`

#### Runtime and Infrastructure
The application runs on Next.js 16 with React 19 Server Components/Server Actions and Tailwind styling. It depends on a MySQL database via Prisma, SMTP via Nodemailer, and environment-provided database, JWT, and mail credentials. Deployment is compatible with the referenced Vercel-hosted instance.
- `next.config.ts`
- `package.json`
- `src/lib/db.ts`
- `src/lib/runInit.ts`

Main entry points: [`src/app/dashboard/layout.tsx`](https://github.com/kumarancnpalani/odoo-/blob/main/src/app/dashboard/layout.tsx) (Dashboard shell), [`src/lib/prisma.ts`](https://github.com/kumarancnpalani/odoo-/blob/main/src/lib/prisma.ts) (Prisma data access), [`src/app/actions/auditActions.ts`](https://github.com/kumarancnpalani/odoo-/blob/main/src/app/actions/auditActions.ts) (Audit actions), [`src/app/actions/importActions.ts`](https://github.com/kumarancnpalani/odoo-/blob/main/src/app/actions/importActions.ts) (Import actions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access &amp; Shell"]
  node_root["Public entry<br/>Next.js route<br/>[page.tsx]"]
  node_login["Login form<br/>client form<br/>[loginForm.tsx]"]
  node_auth["Auth actions &amp; JWT<br/>session boundary<br/>[authActions.ts]"]
  node_middleware["Route middleware<br/>request guard<br/>[middleware.ts]"]
  node_shell["Dashboard shell<br/>authenticated workspace<br/>[layout.tsx]"]
end

subgraph group_consoles["Dashboard Consoles"]
  node_assets["Asset registry<br/>dashboard console"]
  node_allocations["Custody console<br/>dashboard console"]
  node_bookings["Bookings console<br/>dashboard console"]
  node_maintenance["Maintenance console<br/>dashboard console"]
  node_audits["Audit console<br/>dashboard console<br/>[auditConsole.tsx]"]
  node_setup["Setup &amp; imports<br/>admin console<br/>[setupTabs.tsx]"]
end

subgraph group_workflows["Server Actions"]
  node_asset_actions{{"Asset actions<br/>server actions<br/>[assetActions.ts]"}}
  node_booking_actions{{"Booking actions<br/>server actions<br/>[bookingActions.ts]"}}
  node_maintenance_actions{{"Maintenance actions<br/>server actions"}}
  node_audit_actions{{"Audit actions<br/>server actions<br/>[auditActions.ts]"}}
  node_import_actions{{"Import actions<br/>server actions<br/>[importActions.ts]"}}
end

subgraph group_data["Data &amp; Operations"]
  node_prisma["Prisma data access<br/>ORM client<br/>[prisma.ts]"]
  node_schema[("AssetFlow schema<br/>Prisma schema<br/>[schema.prisma]")]
  node_csv["CSV I/O<br/>import/export boundary<br/>[csvUtils.ts]"]
  node_mail["SMTP notifications<br/>external integration<br/>[mail.ts]"]
  node_init["Database bootstrap<br/>initialization<br/>[initDb.ts]"]
end

node_root -->|"directs unauthenticated users"| node_login
node_login -->|"submits credentials"| node_auth
node_auth -->|"establishes session"| node_middleware
node_middleware -->|"permits protected request"| node_shell
node_shell -->|"hosts"| node_assets
node_shell -->|"hosts"| node_allocations
node_shell -->|"hosts"| node_bookings
node_shell -->|"hosts"| node_maintenance
node_shell -->|"hosts"| node_audits
node_shell -->|"hosts"| node_setup
node_assets -->|"mutates registry"| node_asset_actions
node_allocations -->|"changes custody"| node_asset_actions
node_bookings -->|"creates reservations"| node_booking_actions
node_maintenance -->|"updates repair workflow"| node_maintenance_actions
node_audits -->|"records outcomes"| node_audit_actions
node_setup -->|"runs bulk import"| node_import_actions
node_import_actions -->|"parses and exports CSV"| node_csv
node_asset_actions -->|"persists changes"| node_prisma
node_booking_actions -->|"validates and persists"| node_prisma
node_maintenance_actions -->|"updates linked asset state"| node_prisma
node_audit_actions -->|"persists audit outcomes"| node_prisma
node_import_actions -->|"writes imported data"| node_prisma
node_prisma -->|"maps domain models"| node_schema
node_init -->|"bootstraps"| node_schema
node_audit_actions -.->|"sends notifications"| node_mail

click node_root "https://github.com/kumarancnpalani/odoo-/blob/main/src/app/page.tsx"
click node_login "https://github.com/kumarancnpalani/odoo-/blob/main/src/app/login/loginForm.tsx"
click node_auth "https://github.com/kumarancnpalani/odoo-/blob/main/src/app/actions/authActions.ts"
click node_middleware "https://github.com/kumarancnpalani/odoo-/blob/main/src/middleware.ts"
click node_shell "https://github.com/kumarancnpalani/odoo-/blob/main/src/app/dashboard/layout.tsx"
click node_assets "https://github.com/kumarancnpalani/odoo-/blob/main/src/app/dashboard/assets/assetsDirectory.tsx"
click node_allocations "https://github.com/kumarancnpalani/odoo-/blob/main/src/app/dashboard/allocations/allocationsConsole.tsx"
click node_bookings "https://github.com/kumarancnpalani/odoo-/blob/main/src/app/dashboard/bookings/bookingsConsole.tsx"
click node_maintenance "https://github.com/kumarancnpalani/odoo-/blob/main/src/components/maintenanceConsole.tsx"
click node_audits "https://github.com/kumarancnpalani/odoo-/blob/main/src/app/dashboard/audit/auditConsole.tsx"
click node_setup "https://github.com/kumarancnpalani/odoo-/blob/main/src/app/dashboard/setup/setupTabs.tsx"
click node_asset_actions "https://github.com/kumarancnpalani/odoo-/blob/main/src/app/actions/assetActions.ts"
click node_booking_actions "https://github.com/kumarancnpalani/odoo-/blob/main/src/app/actions/bookingActions.ts"
click node_maintenance_actions "https://github.com/kumarancnpalani/odoo-/blob/main/src/app/actions/maintenanceActions.ts"
click node_audit_actions "https://github.com/kumarancnpalani/odoo-/blob/main/src/app/actions/auditActions.ts"
click node_import_actions "https://github.com/kumarancnpalani/odoo-/blob/main/src/app/actions/importActions.ts"
click node_prisma "https://github.com/kumarancnpalani/odoo-/blob/main/src/lib/prisma.ts"
click node_schema "https://github.com/kumarancnpalani/odoo-/blob/main/prisma/schema.prisma"
click node_csv "https://github.com/kumarancnpalani/odoo-/blob/main/src/lib/csvUtils.ts"
click node_mail "https://github.com/kumarancnpalani/odoo-/blob/main/src/lib/mail.ts"
click node_init "https://github.com/kumarancnpalani/odoo-/blob/main/src/lib/initDb.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_root,node_login,node_auth,node_middleware,node_shell toneBlue
class node_assets,node_allocations,node_bookings,node_maintenance,node_audits,node_setup toneAmber
class node_asset_actions,node_booking_actions,node_maintenance_actions,node_audit_actions,node_import_actions toneMint
class node_prisma,node_schema,node_csv,node_mail,node_init toneRose
```

## Components

### Access & Shell

- [Public entry](https://github.com/kumarancnpalani/odoo-/blob/main/src/app/page.tsx): Next.js route · Routes users into authentication. · `src/app/page.tsx`
- [Login form](https://github.com/kumarancnpalani/odoo-/blob/main/src/app/login/loginForm.tsx): client form · Submits server-side authentication. · `src/app/login/loginForm.tsx`
- [Auth actions & JWT](https://github.com/kumarancnpalani/odoo-/blob/main/src/app/actions/authActions.ts): session boundary · Authenticates users and manages sessions. · `src/app/actions/authActions.ts`
- [Route middleware](https://github.com/kumarancnpalani/odoo-/blob/main/src/middleware.ts): request guard · Protects dashboard routes before rendering. · `src/middleware.ts`
- [Dashboard shell](https://github.com/kumarancnpalani/odoo-/blob/main/src/app/dashboard/layout.tsx): authenticated workspace · Provides shared protected navigation and layout. · `src/app/dashboard/layout.tsx`

### Dashboard Consoles

- [Asset registry](https://github.com/kumarancnpalani/odoo-/blob/main/src/app/dashboard/assets/assetsDirectory.tsx): dashboard console · Manages catalog, metadata, tags, locations, and availability. · `src/app/dashboard/assets/assetsDirectory.tsx`
- [Custody console](https://github.com/kumarancnpalani/odoo-/blob/main/src/app/dashboard/allocations/allocationsConsole.tsx): dashboard console · Handles allocation, return, and transfer workflows. · `src/app/dashboard/allocations/allocationsConsole.tsx`
- [Bookings console](https://github.com/kumarancnpalani/odoo-/blob/main/src/app/dashboard/bookings/bookingsConsole.tsx): dashboard console · Schedules reservations for bookable assets. · `src/app/dashboard/bookings/bookingsConsole.tsx`
- [Maintenance console](https://github.com/kumarancnpalani/odoo-/blob/main/src/components/maintenanceConsole.tsx): dashboard console · Tracks assignment and repair lifecycle. · `src/components/maintenanceConsole.tsx`
- [Audit console](https://github.com/kumarancnpalani/odoo-/blob/main/src/app/dashboard/audit/auditConsole.tsx): dashboard console · Runs assigned physical verification cycles. · `src/app/dashboard/audit/auditConsole.tsx`
- [Setup & imports](https://github.com/kumarancnpalani/odoo-/blob/main/src/app/dashboard/setup/setupTabs.tsx): admin console · Administers master data and bulk operations. · `src/app/dashboard/setup/setupTabs.tsx`

### Server Actions

- [Asset actions](https://github.com/kumarancnpalani/odoo-/blob/main/src/app/actions/assetActions.ts): server actions · Validates asset and custody state changes. · `src/app/actions/assetActions.ts`
- [Booking actions](https://github.com/kumarancnpalani/odoo-/blob/main/src/app/actions/bookingActions.ts): server actions · Enforces reservation overlap rules before persistence. · `src/app/actions/bookingActions.ts`
- [Maintenance actions](https://github.com/kumarancnpalani/odoo-/blob/main/src/app/actions/maintenanceActions.ts): server actions · Updates repair state and linked asset availability. · `src/app/actions/maintenanceActions.ts`
- [Audit actions](https://github.com/kumarancnpalani/odoo-/blob/main/src/app/actions/auditActions.ts): server actions · Generates audit work and records verification outcomes. · `src/app/actions/auditActions.ts`
- [Import actions](https://github.com/kumarancnpalani/odoo-/blob/main/src/app/actions/importActions.ts): server actions · Executes bulk data ingestion. · `src/app/actions/importActions.ts`

### Data & Operations

- [Prisma data access](https://github.com/kumarancnpalani/odoo-/blob/main/src/lib/prisma.ts): ORM client · Connects server workflows to the relational domain. · `src/lib/prisma.ts`
- [AssetFlow schema](https://github.com/kumarancnpalani/odoo-/blob/main/prisma/schema.prisma): Prisma schema · System of record for assets, people, allocations, bookings, maintenance, and audits. · `prisma/schema.prisma`
- [CSV I/O](https://github.com/kumarancnpalani/odoo-/blob/main/src/lib/csvUtils.ts): import/export boundary · `src/lib/csvUtils.ts`
- [SMTP notifications](https://github.com/kumarancnpalani/odoo-/blob/main/src/lib/mail.ts): external integration · Sends workflow notifications through Nodemailer. · `src/lib/mail.ts`
- [Database bootstrap](https://github.com/kumarancnpalani/odoo-/blob/main/src/lib/initDb.ts): initialization · Runs schema and development bootstrap checks. · `src/lib/initDb.ts`

## Connections

- Public entry → Login form: directs unauthenticated users
- Login form → Auth actions & JWT: submits credentials
- Auth actions & JWT → Route middleware: establishes session
- Route middleware → Dashboard shell: permits protected request
- Dashboard shell → Asset registry: hosts
- Dashboard shell → Custody console: hosts
- Dashboard shell → Bookings console: hosts
- Dashboard shell → Maintenance console: hosts
- Dashboard shell → Audit console: hosts
- Dashboard shell → Setup & imports: hosts
- Asset registry → Asset actions: mutates registry
- Custody console → Asset actions: changes custody
- Bookings console → Booking actions: creates reservations
- Maintenance console → Maintenance actions: updates repair workflow
- Audit console → Audit actions: records outcomes
- Setup & imports → Import actions: runs bulk import
- Import actions → CSV I/O: parses and exports CSV
- Asset actions → Prisma data access: persists changes
- Booking actions → Prisma data access: validates and persists
- Maintenance actions → Prisma data access: updates linked asset state
- Audit actions → Prisma data access: persists audit outcomes
- Import actions → Prisma data access: writes imported data
- Prisma data access → AssetFlow schema: maps domain models
- Database bootstrap → AssetFlow schema: bootstraps
- Audit actions → SMTP notifications: sends notifications
