# dksifoua/bookmark-manager-app architecture

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

- Interactive diagram: https://gitdiagram.com/dksifoua/bookmark-manager-app
- Repository: https://github.com/dksifoua/bookmark-manager-app

## Overview

Bookmark Manager is a React UI backed by an ASP.NET Core API for account authentication and bookmark, tag, and visit management. The main user workflow is to sign in, create or find bookmarks, and update their tags, archive/pin state, or visit history. The README also documents search, tag filtering, sorting, theme switching, and responsive layouts. The sampled code supports the API’s authentication and bookmark-service flow; several other service implementations and most UI wiring were not sampled, so those links are omitted or marked unverified.

Main entry points: [`bookmark-manager-ui/src`](https://github.com/dksifoua/bookmark-manager-app/tree/develop/bookmark-manager-ui/src) (Bookmark UI), [`BookmarkManagerApp/Program.cs`](https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Program.cs) (API composition), [`BookmarkManagerApp/Services/BookmarkService.cs`](https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Services/BookmarkService.cs) (Bookmark management), [`BookmarkManagerApp/Repositories`](https://github.com/dksifoua/bookmark-manager-app/tree/develop/BookmarkManagerApp/Repositories) (Data repositories)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Web interface"]
  node_web["Bookmark UI"]
  node_discovery["Browse and organize"]
end

subgraph group_api["API endpoints"]
  node_authapi["Authentication API<br/>[AuthController.cs]"]
  node_bookmarkapi["Bookmark API"]
  node_tagapi["Tag API<br/>[TagController.cs]"]
  node_visitapi["Visit API<br/>[VisitController.cs]"]
  node_composition["API composition<br/>[Program.cs]"]
end

subgraph group_domain["Application services"]
  node_auth["Authentication<br/>[AuthService.cs]"]
  node_bookmarks["Bookmark management<br/>[BookmarkService.cs]"]
  node_tags["Tag management"]
  node_visits["Visit tracking"]
  node_usercontext["Current user context<br/>[UserContext.cs]"]
end

subgraph group_data["Persistence"]
  node_repositories["Data repositories"]
  node_dbcontext["EF data context"]
  node_entities["Domain records"]
  node_database[("PostgreSQL")]
end

node_user(("User"))

node_user -->|"uses"| node_web
node_web -.->|"browses"| node_discovery
node_web -.->|"authenticates"| node_authapi
node_web -.->|"manages bookmarks"| node_bookmarkapi
node_web -.->|"filters tags"| node_tagapi
node_web -.->|"records visits"| node_visitapi
node_authapi -->|"calls"| node_auth
node_bookmarkapi -->|"calls"| node_bookmarks
node_tagapi -->|"calls"| node_tags
node_visitapi -->|"calls"| node_visits
node_bookmarks -->|"uses contracts"| node_repositories
node_bookmarks -->|"gets user ID"| node_usercontext
node_auth -->|"uses user repository"| node_repositories
node_repositories -->|"queries"| node_dbcontext
node_dbcontext -->|"maps"| node_entities
node_composition -->|"registers"| node_dbcontext
node_composition -->|"registers"| node_repositories
node_composition -->|"registers"| node_auth
node_composition -->|"registers"| node_bookmarks
node_composition -->|"configures PostgreSQL"| node_database

click node_web "https://github.com/dksifoua/bookmark-manager-app/tree/develop/bookmark-manager-ui/src"
click node_discovery "https://github.com/dksifoua/bookmark-manager-app/tree/develop/bookmark-manager-ui/src/components/bookmarks"
click node_authapi "https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Controllers/AuthController.cs"
click node_bookmarkapi "https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Controllers/BookmarkController.cs"
click node_tagapi "https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Controllers/TagController.cs"
click node_visitapi "https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Controllers/VisitController.cs"
click node_auth "https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Services/AuthService.cs"
click node_bookmarks "https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Services/BookmarkService.cs"
click node_tags "https://github.com/dksifoua/bookmark-manager-app/tree/develop/BookmarkManagerApp/Services"
click node_visits "https://github.com/dksifoua/bookmark-manager-app/tree/develop/BookmarkManagerApp/Services"
click node_usercontext "https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Services/Utils/UserContext.cs"
click node_repositories "https://github.com/dksifoua/bookmark-manager-app/tree/develop/BookmarkManagerApp/Repositories"
click node_dbcontext "https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Persistence/BookmarkDbContext.cs"
click node_entities "https://github.com/dksifoua/bookmark-manager-app/tree/develop/BookmarkManagerApp/Models"
click node_composition "https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Program.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_web,node_discovery,node_user toneBlue
class node_authapi,node_bookmarkapi,node_tagapi,node_visitapi,node_composition toneAmber
class node_auth,node_bookmarks,node_tags,node_visits,node_usercontext toneMint
class node_repositories,node_dbcontext,node_entities,node_database toneRose
```

## Components

### Web interface

- [Bookmark UI](https://github.com/dksifoua/bookmark-manager-app/tree/develop/bookmark-manager-ui/src): `bookmark-manager-ui/src`
- [Browse and organize](https://github.com/dksifoua/bookmark-manager-app/tree/develop/bookmark-manager-ui/src/components/bookmarks): `bookmark-manager-ui/src/components/bookmarks`

### API endpoints

- [Authentication API](https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Controllers/AuthController.cs): `BookmarkManagerApp/Controllers/AuthController.cs`
- [Bookmark API](https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Controllers/BookmarkController.cs): `BookmarkManagerApp/Controllers/BookmarkController.cs`
- [Tag API](https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Controllers/TagController.cs): `BookmarkManagerApp/Controllers/TagController.cs`
- [Visit API](https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Controllers/VisitController.cs): `BookmarkManagerApp/Controllers/VisitController.cs`
- [API composition](https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Program.cs): `BookmarkManagerApp/Program.cs`

### Application services

- [Authentication](https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Services/AuthService.cs): `BookmarkManagerApp/Services/AuthService.cs`
- [Bookmark management](https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Services/BookmarkService.cs): `BookmarkManagerApp/Services/BookmarkService.cs`
- [Tag management](https://github.com/dksifoua/bookmark-manager-app/tree/develop/BookmarkManagerApp/Services): `BookmarkManagerApp/Services`
- [Visit tracking](https://github.com/dksifoua/bookmark-manager-app/tree/develop/BookmarkManagerApp/Services): `BookmarkManagerApp/Services`
- [Current user context](https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Services/Utils/UserContext.cs): `BookmarkManagerApp/Services/Utils/UserContext.cs`

### Persistence

- [Data repositories](https://github.com/dksifoua/bookmark-manager-app/tree/develop/BookmarkManagerApp/Repositories): `BookmarkManagerApp/Repositories`
- [EF data context](https://github.com/dksifoua/bookmark-manager-app/blob/develop/BookmarkManagerApp/Persistence/BookmarkDbContext.cs): `BookmarkManagerApp/Persistence/BookmarkDbContext.cs`
- [Domain records](https://github.com/dksifoua/bookmark-manager-app/tree/develop/BookmarkManagerApp/Models): `BookmarkManagerApp/Models`
- **PostgreSQL**

### Other components

- **User**

## Connections

- User → Bookmark UI: uses
- Bookmark UI → Browse and organize: browses
- Bookmark UI → Authentication API: authenticates
- Bookmark UI → Bookmark API: manages bookmarks
- Bookmark UI → Tag API: filters tags
- Bookmark UI → Visit API: records visits
- Authentication API → Authentication: calls (evidence: `BookmarkManagerApp/Controllers/AuthController.cs`)
- Bookmark API → Bookmark management: calls (evidence: `BookmarkManagerApp/Controllers/BookmarkController.cs`)
- Tag API → Tag management: calls (evidence: `BookmarkManagerApp/Controllers/TagController.cs`)
- Visit API → Visit tracking: calls (evidence: `BookmarkManagerApp/Controllers/VisitController.cs`)
- Bookmark management → Data repositories: uses contracts (evidence: `BookmarkManagerApp/Services/BookmarkService.cs`)
- Bookmark management → Current user context: gets user ID (evidence: `BookmarkManagerApp/Services/BookmarkService.cs`)
- Authentication → Data repositories: uses user repository (evidence: `BookmarkManagerApp/Services/AuthService.cs`)
- Data repositories → EF data context: queries (evidence: `BookmarkManagerApp/Repositories/BookmarkRepository.cs`)
- EF data context → Domain records: maps (evidence: `BookmarkManagerApp/Persistence/BookmarkDbContext.cs`)
- API composition → EF data context: registers (evidence: `BookmarkManagerApp/Program.cs`)
- API composition → Data repositories: registers (evidence: `BookmarkManagerApp/Program.cs`)
- API composition → Authentication: registers (evidence: `BookmarkManagerApp/Program.cs`)
- API composition → Bookmark management: registers (evidence: `BookmarkManagerApp/Program.cs`)
- API composition → PostgreSQL: configures PostgreSQL (evidence: `BookmarkManagerApp/Program.cs`)
