# aayushdura/visitor-management-np_nestjs architecture

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

- Interactive diagram: https://gitdiagram.com/aayushdura/visitor-management-np_nestjs
- Repository: https://github.com/aayushdura/visitor-management-np_nestjs

## Overview

This NestJS boilerplate exposes REST endpoints for account registration, JWT login/refresh, password recovery and changes, protected resources, and user profile/record management. The main workflow is an API request routed through an auth or users controller to its service, with user persistence behind a repository; authentication also relies on password hashing and token handling. Registration documents confirmation email, and the README describes MySQL-backed storage. The graph follows sampled controller/repository calls and documented capabilities; service internals not sampled are represented only where paths are present.

Main entry points: [`src/iam/login/login.service.ts`](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/iam/login/login.service.ts) (Login service), [`src/iam/register/register.service.ts`](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/iam/register/register.service.ts) (Registration service), [`src/users/repositories/implementations/users.typeorm.repository.ts`](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/users/repositories/implementations/users.typeorm.repository.ts) (Users repository), [`src/users/users.service.ts`](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/users/users.service.ts) (Users service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_auth["Identity and access"]
  node_authcontroller["Login controller"]
  node_registercontroller["Registration controller"]
  node_authservice["Login service<br/>[login.service.ts]"]
  node_registerservice["Registration service"]
  node_guards["Token guards"]
  node_jwtconfig["JWT configuration<br/>[jwt.config.ts]"]
end

subgraph group_users["User management"]
  node_userscontroller["Users controller"]
  node_usersservice["Users service<br/>[users.service.ts]"]
  node_repository["Users repository"]
  node_repo_provider["Repository provider"]
  node_user_model["User model<br/>[users.model.ts]"]
end

subgraph group_shared["Shared services"]
  node_hashing["Password hashing<br/>[argon2.service.ts]"]
  node_mailer["Email service<br/>[mailer.service.ts]"]
end

subgraph group_runtime["Application runtime"]
  node_main["Nest bootstrap<br/>[main.ts]"]
  node_appmodule["App module<br/>[app.module.ts]"]
  node_appcontroller["Resource controller<br/>[app.controller.ts]"]
  node_appservice["Resource service<br/>[app.service.ts]"]
end

node_client(("API client"))
node_mysql[("MySQL database")]
node_smtp["SMTP service"]

node_client -->|"sends requests"| node_main
node_main -->|"creates app"| node_appmodule
node_client -->|"calls auth routes"| node_authcontroller
node_authcontroller -->|"invokes auth"| node_authservice
node_client -->|"registers account"| node_registercontroller
node_registercontroller -->|"invokes registration"| node_registerservice
node_authservice -->|"uses accounts"| node_usersservice
node_registerservice -->|"creates user"| node_usersservice
node_authservice -->|"checks passwords"| node_hashing
node_registerservice -->|"hashes password"| node_hashing
node_authservice -->|"uses settings"| node_jwtconfig
node_authcontroller -->|"secured refresh"| node_guards
node_client -->|"calls user routes"| node_userscontroller
node_userscontroller -->|"requires bearer token"| node_guards
node_userscontroller -->|"invokes operations"| node_usersservice
node_usersservice -->|"delegates data"| node_repository
node_repo_provider -->|"provides implementation"| node_repository
node_repo_provider -->|"injects hashing"| node_hashing
node_repository -->|"persists records"| node_user_model
node_repository -->|"reads and writes"| node_mysql
node_registerservice -.->|"sends confirmation"| node_mailer
node_mailer -.->|"sends email"| node_smtp
node_client -->|"requests resource"| node_appcontroller
node_appcontroller -->|"invokes resource"| node_appservice

click node_main "https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/main.ts"
click node_appmodule "https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/app.module.ts"
click node_authcontroller "https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/iam/login/login.controller.ts"
click node_registercontroller "https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/iam/register/register.controller.ts"
click node_authservice "https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/iam/login/login.service.ts"
click node_registerservice "https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/iam/register/register.service.ts"
click node_guards "https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/iam/login/guards/access-token/access-token.guard.ts"
click node_jwtconfig "https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/iam/login/config/jwt.config.ts"
click node_userscontroller "https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/users/users.controller.ts"
click node_usersservice "https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/users/users.service.ts"
click node_repository "https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/users/repositories/implementations/users.typeorm.repository.ts"
click node_repo_provider "https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/users/repositories/users.repository.provider.ts"
click node_user_model "https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/users/models/users.model.ts"
click node_hashing "https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/common/hashing/argon2.service.ts"
click node_mailer "https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/common/mailer/mailer.service.ts"
click node_appcontroller "https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/app.controller.ts"
click node_appservice "https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/app.service.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_authcontroller,node_registercontroller,node_authservice,node_registerservice,node_guards,node_jwtconfig,node_client toneBlue
class node_userscontroller,node_usersservice,node_repository,node_repo_provider,node_user_model,node_mysql toneAmber
class node_hashing,node_mailer toneMint
class node_main,node_appmodule,node_appcontroller,node_appservice toneRose
class node_smtp toneIndigo
```

## Components

### Identity and access

- [Login controller](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/iam/login/login.controller.ts): `src/iam/login/login.controller.ts`
- [Registration controller](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/iam/register/register.controller.ts): `src/iam/register/register.controller.ts`
- [Login service](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/iam/login/login.service.ts): `src/iam/login/login.service.ts`
- [Registration service](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/iam/register/register.service.ts): `src/iam/register/register.service.ts`
- [Token guards](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/iam/login/guards/access-token/access-token.guard.ts): `src/iam/login/guards/access-token/access-token.guard.ts`
- [JWT configuration](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/iam/login/config/jwt.config.ts): `src/iam/login/config/jwt.config.ts`

### User management

- [Users controller](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/users/users.controller.ts): `src/users/users.controller.ts`
- [Users service](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/users/users.service.ts): `src/users/users.service.ts`
- [Users repository](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/users/repositories/implementations/users.typeorm.repository.ts): `src/users/repositories/implementations/users.typeorm.repository.ts`
- [Repository provider](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/users/repositories/users.repository.provider.ts): `src/users/repositories/users.repository.provider.ts`
- [User model](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/users/models/users.model.ts): `src/users/models/users.model.ts`

### Shared services

- [Password hashing](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/common/hashing/argon2.service.ts): `src/common/hashing/argon2.service.ts`
- [Email service](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/common/mailer/mailer.service.ts): `src/common/mailer/mailer.service.ts`

### Application runtime

- [Nest bootstrap](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/main.ts): `src/main.ts`
- [App module](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/app.module.ts): `src/app.module.ts`
- [Resource controller](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/app.controller.ts): `src/app.controller.ts`
- [Resource service](https://github.com/aayushdura/visitor-management-np_nestjs/blob/master/src/app.service.ts): `src/app.service.ts`

### Other components

- **API client**
- **MySQL database**
- **SMTP service**

## Connections

- API client → Nest bootstrap: sends requests
- Nest bootstrap → App module: creates app
- API client → Login controller: calls auth routes
- Login controller → Login service: invokes auth
- API client → Registration controller: registers account
- Registration controller → Registration service: invokes registration
- Login service → Users service: uses accounts
- Registration service → Users service: creates user
- Login service → Password hashing: checks passwords
- Registration service → Password hashing: hashes password
- Login service → JWT configuration: uses settings
- Login controller → Token guards: secured refresh
- API client → Users controller: calls user routes
- Users controller → Token guards: requires bearer token
- Users controller → Users service: invokes operations
- Users service → Users repository: delegates data
- Repository provider → Users repository: provides implementation
- Repository provider → Password hashing: injects hashing
- Users repository → User model: persists records
- Users repository → MySQL database: reads and writes
- Registration service → Email service: sends confirmation
- Email service → SMTP service: sends email
- API client → Resource controller: requests resource
- Resource controller → Resource service: invokes resource
