# abhi-singh01/contact-management-app architecture

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

- Interactive diagram: https://gitdiagram.com/abhi-singh01/contact-management-app
- Repository: https://github.com/abhi-singh01/contact-management-app

## Overview

Next Gen Contact Manager is a multi-user contact application exposing REST APIs and server-rendered pages. A user’s contact workflow enters through contact endpoints, where services perform ownership-aware CRUD, search, favorites, and CSV import/export before repository persistence; dashboard and natural-language assistant requests are separate result paths. Registration, profile updates, and password changes use the user service, while authentication loads persisted user details. The README documents CSV, search, and authorization capabilities; some controller and security wiring is unsampled, so uncertain links are omitted.

Main entry points: [`Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Repository/UserRepository.java`](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Repository/UserRepository.java) (User queries), [`Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Repository/ContactRepository.java`](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Repository/ContactRepository.java) (Contact queries), [`Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Service/UserService.java`](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Service/UserService.java) (User account service), [`Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Service/ContactService.java`](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Service/ContactService.java) (Contact operations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API endpoints"]
  node_contact_api["Contact endpoints"]
  node_assistant_api["Assistant endpoint"]
  node_dashboard_api["Dashboard endpoint"]
  node_auth_api["Auth and profile APIs"]
  node_registration_api["Registration page flow"]
end

subgraph group_logic["Application services"]
  node_contact_service["Contact operations"]
  node_assistant_service["Query assistant"]
  node_dashboard_service["Dashboard statistics"]
  node_user_service["User account service<br/>[UserService.java]"]
  node_exception_handler["Exception mapping"]
end

subgraph group_data["Domain and persistence"]
  node_contact_repo["Contact queries"]
  node_user_repo["User queries"]
  node_contact_model["Contact records<br/>[Contact.java]"]
  node_user_model["User records<br/>[MyUser.java]"]
  node_db[("Relational database")]
end

subgraph group_identity["Identity and security"]
  node_security_config["Authorization configuration"]
  node_user_details["Authentication lookup"]
end

node_client(("User / API client"))

node_client -->|"requests"| node_contact_api
node_client -->|"asks"| node_assistant_api
node_client -->|"requests"| node_dashboard_api
node_client -->|"manages account"| node_auth_api
node_client -.->|"registers"| node_registration_api
node_contact_api -->|"delegates"| node_contact_service
node_assistant_api -->|"delegates"| node_assistant_service
node_dashboard_api -->|"delegates"| node_dashboard_service
node_auth_api -->|"delegates"| node_user_service
node_registration_api -->|"delegates"| node_user_service
node_contact_service -->|"queries and saves"| node_contact_repo
node_contact_service -->|"resolves owner"| node_user_repo
node_assistant_service -->|"loads contacts"| node_contact_repo
node_assistant_service -->|"loads user"| node_user_repo
node_dashboard_service -->|"loads user"| node_user_service
node_user_service -->|"reads and saves"| node_user_repo
node_user_details -->|"looks up account"| node_user_repo
node_contact_repo -->|"persists"| node_contact_model
node_user_repo -->|"persists"| node_user_model
node_contact_model -->|"belongs to"| node_user_model
node_contact_repo -.->|"reads and writes"| node_db
node_user_repo -.->|"reads and writes"| node_db
node_security_config -.->|"configures lookup"| node_user_details

click node_contact_api "https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Controller/ContactController.java"
click node_assistant_api "https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Controller/ContactAssistantController.java"
click node_dashboard_api "https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Controller/DashboardController.java"
click node_auth_api "https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Controller/AuthController.java"
click node_registration_api "https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Controller/RegistrationController.java"
click node_contact_service "https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Service/ContactService.java"
click node_assistant_service "https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Service/ContactAssistantService.java"
click node_dashboard_service "https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Service/DashboardService.java"
click node_user_service "https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Service/UserService.java"
click node_exception_handler "https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Exception/GlobalExceptionHandler.java"
click node_contact_repo "https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Repository/ContactRepository.java"
click node_user_repo "https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Repository/UserRepository.java"
click node_contact_model "https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Model/Contact.java"
click node_user_model "https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Model/MyUser.java"
click node_security_config "https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Security/SecurityConfig.java"
click node_user_details "https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Service/MyUserDetailsService.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_contact_api,node_assistant_api,node_dashboard_api,node_auth_api,node_registration_api,node_client toneBlue
class node_contact_service,node_assistant_service,node_dashboard_service,node_user_service,node_exception_handler toneAmber
class node_contact_repo,node_user_repo,node_contact_model,node_user_model,node_db toneMint
class node_security_config,node_user_details toneRose
```

## Components

### API endpoints

- [Contact endpoints](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Controller/ContactController.java): `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Controller/ContactController.java`
- [Assistant endpoint](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Controller/ContactAssistantController.java): `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Controller/ContactAssistantController.java`
- [Dashboard endpoint](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Controller/DashboardController.java): `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Controller/DashboardController.java`
- [Auth and profile APIs](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Controller/AuthController.java): `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Controller/AuthController.java`
- [Registration page flow](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Controller/RegistrationController.java): `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Controller/RegistrationController.java`

### Application services

- [Contact operations](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Service/ContactService.java): `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Service/ContactService.java`
- [Query assistant](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Service/ContactAssistantService.java): `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Service/ContactAssistantService.java`
- [Dashboard statistics](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Service/DashboardService.java): `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Service/DashboardService.java`
- [User account service](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Service/UserService.java): `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Service/UserService.java`
- [Exception mapping](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Exception/GlobalExceptionHandler.java): `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Exception/GlobalExceptionHandler.java`

### Domain and persistence

- [Contact queries](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Repository/ContactRepository.java): `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Repository/ContactRepository.java`
- [User queries](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Repository/UserRepository.java): `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Repository/UserRepository.java`
- [Contact records](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Model/Contact.java): `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Model/Contact.java`
- [User records](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Model/MyUser.java): `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Model/MyUser.java`
- **Relational database**

### Identity and security

- [Authorization configuration](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Security/SecurityConfig.java): `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Security/SecurityConfig.java`
- [Authentication lookup](https://github.com/abhi-singh01/contact-management-app/blob/master/Next%20Gen%20Contact%20Manager/src/main/java/com/nextgen/contactmanager/Service/MyUserDetailsService.java): `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Service/MyUserDetailsService.java`

### Other components

- **User / API client**

## Connections

- User / API client → Contact endpoints: requests (evidence: `README.md`)
- User / API client → Assistant endpoint: asks (evidence: `README.md`)
- User / API client → Dashboard endpoint: requests (evidence: `README.md`)
- User / API client → Auth and profile APIs: manages account (evidence: `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Controller/AuthController.java`)
- User / API client → Registration page flow: registers
- Contact endpoints → Contact operations: delegates (evidence: `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Controller/ContactController.java`)
- Assistant endpoint → Query assistant: delegates (evidence: `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Controller/ContactAssistantController.java`)
- Dashboard endpoint → Dashboard statistics: delegates (evidence: `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Controller/DashboardController.java`)
- Auth and profile APIs → User account service: delegates (evidence: `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Controller/AuthController.java`)
- Registration page flow → User account service: delegates (evidence: `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Controller/RegistrationController.java`)
- Contact operations → Contact queries: queries and saves (evidence: `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Service/ContactService.java`)
- Contact operations → User queries: resolves owner (evidence: `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Service/ContactService.java`)
- Query assistant → Contact queries: loads contacts (evidence: `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Service/ContactAssistantService.java`)
- Query assistant → User queries: loads user (evidence: `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Service/ContactAssistantService.java`)
- Dashboard statistics → User account service: loads user (evidence: `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Service/DashboardService.java`)
- User account service → User queries: reads and saves (evidence: `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Service/UserService.java`)
- Authentication lookup → User queries: looks up account (evidence: `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Service/MyUserDetailsService.java`)
- Contact queries → Contact records: persists (evidence: `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Repository/ContactRepository.java`)
- User queries → User records: persists (evidence: `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Repository/UserRepository.java`)
- Contact records → User records: belongs to (evidence: `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Model/Contact.java`)
- Contact queries → Relational database: reads and writes
- User queries → Relational database: reads and writes
- Authorization configuration → Authentication lookup: configures lookup (evidence: `Next Gen Contact Manager/src/main/java/com/nextgen/contactmanager/Security/SecurityConfig.java`)
