# mariana8l8/contactmanagermvcapp architecture

> Architecture diagram of the GitHub repository mariana8l8/contactmanagermvcapp, 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/mariana8l8/contactmanagermvcapp
- Repository: https://github.com/mariana8l8/contactmanagermvcapp

## Overview

Contact Manager is an ASP.NET MVC application for importing, browsing, and maintaining contacts in SQL Server. Users upload CSV files; the controller delegates parsing and validation, then persists valid batches. The contacts page renders a server-paged and server-ordered list through a view component; browser JavaScript adds current-page filtering and sorting plus AJAX inline edits and deletes. Repository and parser behavior is supported by sampled source; page-to-component rendering and database configuration are described by the README/tree, so those links are shown at the documented level.

Main entry points: [`ContactManager/Data/ContactRepository.cs`](https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Data/ContactRepository.cs) (Contact repository), [`ContactManager/ViewComponents/ContactsListViewComponent.cs`](https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/ViewComponents/ContactsListViewComponent.cs) (List component), [`ContactManager/Controllers/ContactsController.cs`](https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Controllers/ContactsController.cs) (Contacts controller), [`ContactManager/Views/Contacts/Index.cshtml`](https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Views/Contacts/Index.cshtml) (Contacts page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_contacts_controller["Contacts controller"]
  node_contacts_page["Contacts page<br/>[Index.cshtml]"]
  node_list_component["List component"]
  node_list_template["List template<br/>[Default.cshtml]"]
  node_browser_js["Table interactions<br/>[contacts.js]"]
end

subgraph group_import["CSV import"]
  node_csv_parser["CSV parser"]
  node_import_result["Import result<br/>[CsvImportResult.cs]"]
end

subgraph group_persistence["Contact persistence"]
  node_repository["Contact repository"]
  node_connection_factory["SQL connection factory"]
  node_sql_server[("SQL Server")]
end

subgraph group_domain["Contact domain"]
  node_contact["Contact model<br/>[Contact.cs]"]
  node_query_parameters["Query parameters"]
  node_paged_result["Paged result<br/>[PagedResult.cs]"]
  node_list_model["List view model"]
end

node_user(("User"))

node_user -->|"requests page"| node_contacts_controller
node_contacts_controller -->|"renders"| node_contacts_page
node_contacts_page -->|"invokes"| node_list_component
node_list_component -->|"loads page"| node_repository
node_list_component -->|"renders"| node_list_template
node_repository -->|"queries and writes"| node_sql_server
node_repository -->|"creates connection"| node_connection_factory
node_contacts_controller -->|"parses upload"| node_csv_parser
node_csv_parser -->|"returns validation"| node_import_result
node_contacts_controller -->|"inserts, updates, deletes"| node_repository
node_list_component -->|"builds"| node_list_model
node_repository -->|"returns page"| node_paged_result
node_browser_js -->|"posts edits and deletes"| node_contacts_controller
node_user -->|"filters and sorts"| node_browser_js
node_repository -->|"reads and writes"| node_contact
node_list_component -->|"normalizes query"| node_query_parameters

click node_contacts_controller "https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Controllers/ContactsController.cs"
click node_contacts_page "https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Views/Contacts/Index.cshtml"
click node_list_component "https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/ViewComponents/ContactsListViewComponent.cs"
click node_list_template "https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Views/Contacts/Components/ContactsList/Default.cshtml"
click node_browser_js "https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/wwwroot/js/contacts.js"
click node_csv_parser "https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Services/ContactCsvParser.cs"
click node_import_result "https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Models/CsvImportResult.cs"
click node_repository "https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Data/ContactRepository.cs"
click node_connection_factory "https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Data/SqlConnectionFactory.cs"
click node_contact "https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Models/Contact.cs"
click node_query_parameters "https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Models/ContactQueryParameters.cs"
click node_paged_result "https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Models/PagedResult.cs"
click node_list_model "https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Models/ContactListViewModel.cs"

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_contacts_controller,node_contacts_page,node_list_component,node_list_template,node_browser_js,node_user toneBlue
class node_csv_parser,node_import_result toneAmber
class node_repository,node_connection_factory,node_sql_server toneMint
class node_contact,node_query_parameters,node_paged_result,node_list_model toneRose
```

## Components

### Web experience

- [Contacts controller](https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Controllers/ContactsController.cs): `ContactManager/Controllers/ContactsController.cs`
- [Contacts page](https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Views/Contacts/Index.cshtml): `ContactManager/Views/Contacts/Index.cshtml`
- [List component](https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/ViewComponents/ContactsListViewComponent.cs): `ContactManager/ViewComponents/ContactsListViewComponent.cs`
- [List template](https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Views/Contacts/Components/ContactsList/Default.cshtml): `ContactManager/Views/Contacts/Components/ContactsList/Default.cshtml`
- [Table interactions](https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/wwwroot/js/contacts.js): `ContactManager/wwwroot/js/contacts.js`

### CSV import

- [CSV parser](https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Services/ContactCsvParser.cs): `ContactManager/Services/ContactCsvParser.cs`
- [Import result](https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Models/CsvImportResult.cs): `ContactManager/Models/CsvImportResult.cs`

### Contact persistence

- [Contact repository](https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Data/ContactRepository.cs): `ContactManager/Data/ContactRepository.cs`
- [SQL connection factory](https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Data/SqlConnectionFactory.cs): `ContactManager/Data/SqlConnectionFactory.cs`
- **SQL Server**

### Contact domain

- [Contact model](https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Models/Contact.cs): `ContactManager/Models/Contact.cs`
- [Query parameters](https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Models/ContactQueryParameters.cs): `ContactManager/Models/ContactQueryParameters.cs`
- [Paged result](https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Models/PagedResult.cs): `ContactManager/Models/PagedResult.cs`
- [List view model](https://github.com/mariana8l8/contactmanagermvcapp/blob/main/ContactManager/Models/ContactListViewModel.cs): `ContactManager/Models/ContactListViewModel.cs`

### Other components

- **User**

## Connections

- User → Contacts controller: requests page
- Contacts controller → Contacts page: renders
- Contacts page → List component: invokes
- List component → Contact repository: loads page
- List component → List template: renders
- Contact repository → SQL Server: queries and writes
- Contact repository → SQL connection factory: creates connection
- Contacts controller → CSV parser: parses upload
- CSV parser → Import result: returns validation
- Contacts controller → Contact repository: inserts, updates, deletes
- List component → List view model: builds
- Contact repository → Paged result: returns page
- Table interactions → Contacts controller: posts edits and deletes
- User → Table interactions: filters and sorts
- Contact repository → Contact model: reads and writes
- List component → Query parameters: normalizes query
