# biswajit-codes/visitor-management architecture

> Architecture diagram of the GitHub repository biswajit-codes/visitor-management, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/biswajit-codes/visitor-management
- Repository: https://github.com/biswajit-codes/visitor-management

## Overview

This is a Next.js visitor-management dashboard. The main workflow is visitor registration: a user submits the registration form, which validates the fields and calls a server action that creates a Prisma user record; the user directory and dashboard expose visitor records and counts, with delete and check-in controls shown on visitor cards. The README documents Prisma with SQLite and theme support. Some page and component relationships are visible only in the source index; check-in behavior and the underlying schema were not sampled, so their implementation links are omitted.

Main entry points: [`src/components/Registration/UserRegForm.tsx`](https://github.com/biswajit-codes/visitor-management/blob/main/src/components/Registration/UserRegForm.tsx) (Registration form), [`src/lib/dbClient/prisma.ts`](https://github.com/biswajit-codes/visitor-management/blob/main/src/lib/dbClient/prisma.ts) (Prisma client), [`src/components/UsersDetails/UserCardUiShow.tsx`](https://github.com/biswajit-codes/visitor-management/blob/main/src/components/UsersDetails/UserCardUiShow.tsx) (Visitor card), [`src/components/Button/DeleteButton.tsx`](https://github.com/biswajit-codes/visitor-management/blob/main/src/components/Button/DeleteButton.tsx) (Delete control)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_visitor_workflow["Visitor workflow"]
  node_registration_page["Registration page<br/>[page.tsx]"]
  node_registration_form["Registration form<br/>[UserRegForm.tsx]"]
  node_registration_schema["Registration schema<br/>[schema.ts]"]
  node_create_visitor["Create visitor<br/>[createVisiter.ts]"]
  node_visitor_store[("Visitor database")]
  node_user_directory["User directory<br/>[page.tsx]"]
  node_visitor_card["Visitor card<br/>[UserCardUiShow.tsx]"]
  node_delete_control["Delete control<br/>[DeleteButton.tsx]"]
  node_delete_visitor["Delete visitor<br/>[deleteUser.ts]"]
  node_checkin_control["Check-in control<br/>[CheckinButton.tsx]"]
end

subgraph group_dashboard_directory["Dashboard and directory"]
  node_dashboard_page["Dashboard page<br/>[page.tsx]"]
  node_total_users_card["Total users card<br/>[TotalUsersCard.tsx]"]
  node_user_count["User count<br/>[getTotalUser.ts]"]
  node_prisma_client["Prisma client<br/>[prisma.ts]"]
end

subgraph group_app_shell["Application shell"]
  node_app_sidebar["App sidebar<br/>[AppSidebar.tsx]"]
  node_header["Header<br/>[Header.tsx]"]
  node_theme_toggle["Theme toggle"]
  node_theme_provider["Theme provider<br/>[ThemeProvider.tsx]"]
end

subgraph group_ui_foundation["UI foundation"]
  node_sidebar_primitives["Sidebar primitives<br/>[sidebar.tsx]"]
  node_design_primitives["UI primitives"]
  node_toast_ui["Toast UI<br/>[toast.tsx]"]
end

node_visitor(("Visitor"))
node_sqlite[("SQLite")]

node_visitor -->|"opens"| node_registration_page
node_registration_page -->|"renders"| node_registration_form
node_registration_form -->|"validates with"| node_registration_schema
node_registration_form -->|"submits to"| node_create_visitor
node_create_visitor -->|"creates user"| node_prisma_client
node_prisma_client -.->|"uses SQLite adapter"| node_sqlite
node_user_directory -->|"renders"| node_visitor_card
node_user_directory -->|"reads users"| node_prisma_client
node_visitor_card -->|"renders"| node_delete_control
node_visitor_card -->|"renders"| node_checkin_control
node_delete_control -->|"calls"| node_delete_visitor
node_delete_visitor -->|"deletes user"| node_prisma_client
node_dashboard_page -->|"renders"| node_total_users_card
node_total_users_card -->|"gets count"| node_user_count
node_user_count -->|"counts users"| node_prisma_client
node_app_sidebar -->|"uses"| node_sidebar_primitives
node_header -->|"renders"| node_theme_toggle
node_theme_provider -->|"uses"| node_toast_ui
node_visitor_card -->|"uses cards"| node_design_primitives
node_registration_form -->|"uses form controls"| node_design_primitives
node_registration_form -->|"shows feedback"| node_toast_ui
node_delete_control -->|"shows feedback"| node_toast_ui

click node_registration_page "https://github.com/biswajit-codes/visitor-management/blob/main/src/app/user/registration/page.tsx"
click node_registration_form "https://github.com/biswajit-codes/visitor-management/blob/main/src/components/Registration/UserRegForm.tsx"
click node_registration_schema "https://github.com/biswajit-codes/visitor-management/blob/main/src/lib/schema.ts"
click node_create_visitor "https://github.com/biswajit-codes/visitor-management/blob/main/src/server/createVisiter.ts"
click node_user_directory "https://github.com/biswajit-codes/visitor-management/blob/main/src/app/user/page.tsx"
click node_visitor_card "https://github.com/biswajit-codes/visitor-management/blob/main/src/components/UsersDetails/UserCardUiShow.tsx"
click node_delete_control "https://github.com/biswajit-codes/visitor-management/blob/main/src/components/Button/DeleteButton.tsx"
click node_delete_visitor "https://github.com/biswajit-codes/visitor-management/blob/main/src/server/deleteUser.ts"
click node_checkin_control "https://github.com/biswajit-codes/visitor-management/blob/main/src/components/Button/CheckinButton.tsx"
click node_dashboard_page "https://github.com/biswajit-codes/visitor-management/blob/main/src/app/page.tsx"
click node_total_users_card "https://github.com/biswajit-codes/visitor-management/blob/main/src/components/DashboardCard/TotalUsersCard.tsx"
click node_user_count "https://github.com/biswajit-codes/visitor-management/blob/main/src/server/getTotalUser.ts"
click node_prisma_client "https://github.com/biswajit-codes/visitor-management/blob/main/src/lib/dbClient/prisma.ts"
click node_app_sidebar "https://github.com/biswajit-codes/visitor-management/blob/main/src/components/SideBarComp/AppSidebar.tsx"
click node_sidebar_primitives "https://github.com/biswajit-codes/visitor-management/blob/main/src/components/shadcnui/sidebar.tsx"
click node_header "https://github.com/biswajit-codes/visitor-management/blob/main/src/components/Layout/Header.tsx"
click node_theme_toggle "https://github.com/biswajit-codes/visitor-management/blob/main/src/components/Layout/ThemeToggleButton.tsx"
click node_theme_provider "https://github.com/biswajit-codes/visitor-management/blob/main/src/components/Providers/ThemeProvider.tsx"
click node_design_primitives "https://github.com/biswajit-codes/visitor-management/tree/main/src/components/shadcnui"
click node_toast_ui "https://github.com/biswajit-codes/visitor-management/blob/main/src/components/shadcnui/toast.tsx"

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_registration_page,node_registration_form,node_registration_schema,node_create_visitor,node_visitor_store,node_user_directory,node_visitor_card,node_delete_control,node_delete_visitor,node_checkin_control toneBlue
class node_dashboard_page,node_total_users_card,node_user_count,node_prisma_client,node_sqlite toneAmber
class node_app_sidebar,node_header,node_theme_toggle,node_theme_provider toneMint
class node_sidebar_primitives,node_design_primitives,node_toast_ui toneRose
class node_visitor toneIndigo
```

## Components

### Visitor workflow

- [Registration page](https://github.com/biswajit-codes/visitor-management/blob/main/src/app/user/registration/page.tsx): `src/app/user/registration/page.tsx`
- [Registration form](https://github.com/biswajit-codes/visitor-management/blob/main/src/components/Registration/UserRegForm.tsx): `src/components/Registration/UserRegForm.tsx`
- [Registration schema](https://github.com/biswajit-codes/visitor-management/blob/main/src/lib/schema.ts): `src/lib/schema.ts`
- [Create visitor](https://github.com/biswajit-codes/visitor-management/blob/main/src/server/createVisiter.ts): `src/server/createVisiter.ts`
- **Visitor database**
- [User directory](https://github.com/biswajit-codes/visitor-management/blob/main/src/app/user/page.tsx): `src/app/user/page.tsx`
- [Visitor card](https://github.com/biswajit-codes/visitor-management/blob/main/src/components/UsersDetails/UserCardUiShow.tsx): `src/components/UsersDetails/UserCardUiShow.tsx`
- [Delete control](https://github.com/biswajit-codes/visitor-management/blob/main/src/components/Button/DeleteButton.tsx): `src/components/Button/DeleteButton.tsx`
- [Delete visitor](https://github.com/biswajit-codes/visitor-management/blob/main/src/server/deleteUser.ts): `src/server/deleteUser.ts`
- [Check-in control](https://github.com/biswajit-codes/visitor-management/blob/main/src/components/Button/CheckinButton.tsx): `src/components/Button/CheckinButton.tsx`

### Dashboard and directory

- [Dashboard page](https://github.com/biswajit-codes/visitor-management/blob/main/src/app/page.tsx): `src/app/page.tsx`
- [Total users card](https://github.com/biswajit-codes/visitor-management/blob/main/src/components/DashboardCard/TotalUsersCard.tsx): `src/components/DashboardCard/TotalUsersCard.tsx`
- [User count](https://github.com/biswajit-codes/visitor-management/blob/main/src/server/getTotalUser.ts): `src/server/getTotalUser.ts`
- [Prisma client](https://github.com/biswajit-codes/visitor-management/blob/main/src/lib/dbClient/prisma.ts): `src/lib/dbClient/prisma.ts`

### Application shell

- [App sidebar](https://github.com/biswajit-codes/visitor-management/blob/main/src/components/SideBarComp/AppSidebar.tsx): `src/components/SideBarComp/AppSidebar.tsx`
- [Header](https://github.com/biswajit-codes/visitor-management/blob/main/src/components/Layout/Header.tsx): `src/components/Layout/Header.tsx`
- [Theme toggle](https://github.com/biswajit-codes/visitor-management/blob/main/src/components/Layout/ThemeToggleButton.tsx): `src/components/Layout/ThemeToggleButton.tsx`
- [Theme provider](https://github.com/biswajit-codes/visitor-management/blob/main/src/components/Providers/ThemeProvider.tsx): `src/components/Providers/ThemeProvider.tsx`

### UI foundation

- [Sidebar primitives](https://github.com/biswajit-codes/visitor-management/blob/main/src/components/shadcnui/sidebar.tsx): `src/components/shadcnui/sidebar.tsx`
- [UI primitives](https://github.com/biswajit-codes/visitor-management/tree/main/src/components/shadcnui): `src/components/shadcnui`
- [Toast UI](https://github.com/biswajit-codes/visitor-management/blob/main/src/components/shadcnui/toast.tsx): `src/components/shadcnui/toast.tsx`

### Other components

- **Visitor**
- **SQLite**

## Connections

- Visitor → Registration page: opens (evidence: `src/app/user/registration/page.tsx`)
- Registration page → Registration form: renders (evidence: `src/app/user/registration/page.tsx`)
- Registration form → Registration schema: validates with (evidence: `src/components/Registration/UserRegForm.tsx`)
- Registration form → Create visitor: submits to (evidence: `src/components/Registration/UserRegForm.tsx`)
- Create visitor → Prisma client: creates user (evidence: `src/server/createVisiter.ts`)
- Prisma client → SQLite: uses SQLite adapter
- User directory → Visitor card: renders (evidence: `src/app/user/page.tsx`)
- User directory → Prisma client: reads users (evidence: `src/app/user/page.tsx`)
- Visitor card → Delete control: renders (evidence: `src/components/UsersDetails/UserCardUiShow.tsx`)
- Visitor card → Check-in control: renders (evidence: `src/components/UsersDetails/UserCardUiShow.tsx`)
- Delete control → Delete visitor: calls (evidence: `src/components/Button/DeleteButton.tsx`)
- Delete visitor → Prisma client: deletes user (evidence: `src/server/deleteUser.ts`)
- Dashboard page → Total users card: renders (evidence: `src/app/page.tsx`)
- Total users card → User count: gets count (evidence: `src/components/DashboardCard/TotalUsersCard.tsx`)
- User count → Prisma client: counts users (evidence: `src/server/getTotalUser.ts`)
- App sidebar → Sidebar primitives: uses (evidence: `src/components/SideBarComp/AppSidebar.tsx`)
- Header → Theme toggle: renders (evidence: `src/components/Layout/Header.tsx`)
- Theme provider → Toast UI: uses (evidence: `src/components/Providers/ThemeProvider.tsx`)
- Visitor card → UI primitives: uses cards (evidence: `src/components/UsersDetails/UserCardUiShow.tsx`)
- Registration form → UI primitives: uses form controls (evidence: `src/components/Registration/UserRegForm.tsx`)
- Registration form → Toast UI: shows feedback (evidence: `src/components/Registration/UserRegForm.tsx`)
- Delete control → Toast UI: shows feedback (evidence: `src/components/Button/DeleteButton.tsx`)
