# nemanja-budi/work-through architecture

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

- Interactive diagram: https://gitdiagram.com/nemanja-budi/work-through
- Repository: https://github.com/nemanja-budi/work-through

## Overview

This repository pairs an Angular asset-management interface with a .NET application/domain backend. The user-facing areas cover devices, users, preparation checklists and lifecycle, and equipment handover/return records (reversi); authentication guards the main application shell. Backend query handlers use an application data-context abstraction and domain entities. The excerpts establish frontend route dispatch and several backend data reads, but do not show HTTP wiring between the projects or the concrete database implementation, so those links are omitted.

Main entry points: [`Angular 21/asset_managment/src/app/app.routes.ts`](https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/app.routes.ts) (App routes), [`clean-architecture10/src/Application/Reversi/Get2/GetReversiQueryHandler2.cs`](https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Application/Reversi/Get2/GetReversiQueryHandler2.cs) (Reversi queries), [`clean-architecture10/src/Application/Abstractions/Data/IApplicationDbContext.cs`](https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Application/Abstractions/Data/IApplicationDbContext.cs) (Data context), [`clean-architecture10/src/Application/Priprema/Get/GetPripremeQueryHandler.cs`](https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Application/Priprema/Get/GetPripremeQueryHandler.cs) (Preparation queries)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Angular application"]
  node_routes["App routes<br/>[app.routes.ts]"]
  node_shell["Main layout<br/>[main-layout.ts]"]
end

subgraph group_identity["Identity and access"]
  node_login["Login view<br/>[login.ts]"]
  node_auth["Authentication<br/>[auth.service.ts]"]
  node_guards["Route guards<br/>[auth.guard.ts]"]
end

subgraph group_workflow["Asset workflows"]
  node_devices["Device inventory<br/>[uredjaji.routes.ts]"]
  node_users["User management"]
  node_prep["Preparation workflow<br/>[priprema.routes.ts]"]
  node_reversi["Handover records<br/>[reversi-router.ts]"]
end

subgraph group_backend["Application and domain"]
  node_ctx["Data context"]
  node_queryhandler["Query contract<br/>[IQueryHandler.cs]"]
  node_reversiquery["Reversi queries"]
  node_prepquery["Preparation queries"]
  node_prepaggregate["Preparation aggregate"]
  node_checklist["Checklist entities"]
  node_reversiaggregate["Reversi records<br/>[Revers.cs]"]
  node_userquery["User queries"]
  node_useraggregate["User entity<br/>[Korisnik.cs]"]
  node_devicequery["Device queries"]
  node_deviceentity["Device model<br/>[Uredjaj.cs]"]
end

node_user(("User"))

node_user -->|"navigates"| node_routes
node_routes -->|"routes to"| node_login
node_routes -->|"renders"| node_shell
node_routes -->|"guards shell"| node_guards
node_login -.->|"authenticates"| node_auth
node_routes -->|"loads routes"| node_devices
node_routes -->|"loads routes"| node_users
node_routes -->|"loads routes"| node_prep
node_routes -->|"loads routes"| node_reversi
node_reversiquery -->|"reads data"| node_ctx
node_reversiquery -->|"projects records"| node_reversiaggregate
node_reversiquery -->|"loads users"| node_useraggregate
node_reversiquery -->|"loads devices"| node_deviceentity
node_prepquery -->|"reads data"| node_ctx
node_prepquery -->|"queries"| node_prepaggregate
node_prepquery -->|"reads checklist"| node_checklist
node_userquery -->|"reads data"| node_ctx
node_userquery -->|"queries"| node_useraggregate
node_devicequery -->|"reads data"| node_ctx
node_devicequery -->|"queries"| node_deviceentity

click node_routes "https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/app.routes.ts"
click node_shell "https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/layout/main-layout/main-layout.ts"
click node_login "https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/features/auth/login/login.ts"
click node_auth "https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/core/auth/auth.service.ts"
click node_guards "https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/core/auth/auth.guard.ts"
click node_devices "https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/features/uredjaji/uredjaji.routes.ts"
click node_users "https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/features/korisnici/korisnici.routes.ts"
click node_prep "https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/features/priprema/priprema.routes.ts"
click node_reversi "https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/features/reversi/reversi-router.ts"
click node_ctx "https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Application/Abstractions/Data/IApplicationDbContext.cs"
click node_queryhandler "https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Application/Abstractions/Messaging/IQueryHandler.cs"
click node_reversiquery "https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Application/Reversi/Get2/GetReversiQueryHandler2.cs"
click node_prepquery "https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Application/Priprema/Get/GetPripremeQueryHandler.cs"
click node_prepaggregate "https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Domain/Priprema/PripremaUredjaja.cs"
click node_checklist "https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Domain/Priprema/Entities/CheckListaZaduzenja.cs"
click node_reversiaggregate "https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Domain/Reversi/Revers.cs"
click node_userquery "https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Application/Korisnici/Get2/GetKorisnik2QueryHandler.cs"
click node_useraggregate "https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Domain/Korisnici/Korisnik.cs"
click node_devicequery "https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Application/Uredjaji/Get2/GetUredjajiQueryHandler2.cs"
click node_deviceentity "https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/SharedKernel/Uredjaj.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_routes,node_shell,node_user toneBlue
class node_login,node_auth,node_guards toneAmber
class node_devices,node_users,node_prep,node_reversi toneMint
class node_ctx,node_queryhandler,node_reversiquery,node_prepquery,node_prepaggregate,node_checklist,node_reversiaggregate,node_userquery,node_useraggregate,node_devicequery,node_deviceentity toneRose
```

## Components

### Angular application

- [App routes](https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/app.routes.ts): `Angular 21/asset_managment/src/app/app.routes.ts`
- [Main layout](https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/layout/main-layout/main-layout.ts): `Angular 21/asset_managment/src/app/layout/main-layout/main-layout.ts`

### Identity and access

- [Login view](https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/features/auth/login/login.ts): `Angular 21/asset_managment/src/app/features/auth/login/login.ts`
- [Authentication](https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/core/auth/auth.service.ts): `Angular 21/asset_managment/src/app/core/auth/auth.service.ts`
- [Route guards](https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/core/auth/auth.guard.ts): `Angular 21/asset_managment/src/app/core/auth/auth.guard.ts`

### Asset workflows

- [Device inventory](https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/features/uredjaji/uredjaji.routes.ts): `Angular 21/asset_managment/src/app/features/uredjaji/uredjaji.routes.ts`
- [User management](https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/features/korisnici/korisnici.routes.ts): `Angular 21/asset_managment/src/app/features/korisnici/korisnici.routes.ts`
- [Preparation workflow](https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/features/priprema/priprema.routes.ts): `Angular 21/asset_managment/src/app/features/priprema/priprema.routes.ts`
- [Handover records](https://github.com/nemanja-budi/work-through/blob/main/Angular%2021/asset_managment/src/app/features/reversi/reversi-router.ts): `Angular 21/asset_managment/src/app/features/reversi/reversi-router.ts`

### Application and domain

- [Data context](https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Application/Abstractions/Data/IApplicationDbContext.cs): `clean-architecture10/src/Application/Abstractions/Data/IApplicationDbContext.cs`
- [Query contract](https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Application/Abstractions/Messaging/IQueryHandler.cs): `clean-architecture10/src/Application/Abstractions/Messaging/IQueryHandler.cs`
- [Reversi queries](https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Application/Reversi/Get2/GetReversiQueryHandler2.cs): `clean-architecture10/src/Application/Reversi/Get2/GetReversiQueryHandler2.cs`
- [Preparation queries](https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Application/Priprema/Get/GetPripremeQueryHandler.cs): `clean-architecture10/src/Application/Priprema/Get/GetPripremeQueryHandler.cs`
- [Preparation aggregate](https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Domain/Priprema/PripremaUredjaja.cs): `clean-architecture10/src/Domain/Priprema/PripremaUredjaja.cs`
- [Checklist entities](https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Domain/Priprema/Entities/CheckListaZaduzenja.cs): `clean-architecture10/src/Domain/Priprema/Entities/CheckListaZaduzenja.cs`
- [Reversi records](https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Domain/Reversi/Revers.cs): `clean-architecture10/src/Domain/Reversi/Revers.cs`
- [User queries](https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Application/Korisnici/Get2/GetKorisnik2QueryHandler.cs): `clean-architecture10/src/Application/Korisnici/Get2/GetKorisnik2QueryHandler.cs`
- [User entity](https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Domain/Korisnici/Korisnik.cs): `clean-architecture10/src/Domain/Korisnici/Korisnik.cs`
- [Device queries](https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/Application/Uredjaji/Get2/GetUredjajiQueryHandler2.cs): `clean-architecture10/src/Application/Uredjaji/Get2/GetUredjajiQueryHandler2.cs`
- [Device model](https://github.com/nemanja-budi/work-through/blob/main/clean-architecture10/src/SharedKernel/Uredjaj.cs): `clean-architecture10/src/SharedKernel/Uredjaj.cs`

### Other components

- **User**

## Connections

- User → App routes: navigates (evidence: `Angular 21/asset_managment/src/app/app.routes.ts`)
- App routes → Login view: routes to (evidence: `Angular 21/asset_managment/src/app/app.routes.ts`)
- App routes → Main layout: renders (evidence: `Angular 21/asset_managment/src/app/app.routes.ts`)
- App routes → Route guards: guards shell (evidence: `Angular 21/asset_managment/src/app/app.routes.ts`)
- Login view → Authentication: authenticates
- App routes → Device inventory: loads routes (evidence: `Angular 21/asset_managment/src/app/app.routes.ts`)
- App routes → User management: loads routes (evidence: `Angular 21/asset_managment/src/app/app.routes.ts`)
- App routes → Preparation workflow: loads routes (evidence: `Angular 21/asset_managment/src/app/app.routes.ts`)
- App routes → Handover records: loads routes (evidence: `Angular 21/asset_managment/src/app/app.routes.ts`)
- Reversi queries → Data context: reads data (evidence: `clean-architecture10/src/Application/Reversi/Get2/GetReversiQueryHandler2.cs`)
- Reversi queries → Reversi records: projects records (evidence: `clean-architecture10/src/Application/Reversi/Get2/GetReversiQueryHandler2.cs`)
- Reversi queries → User entity: loads users (evidence: `clean-architecture10/src/Application/Reversi/Get2/GetReversiQueryHandler2.cs`)
- Reversi queries → Device model: loads devices (evidence: `clean-architecture10/src/Application/Reversi/Get2/GetReversiQueryHandler2.cs`)
- Preparation queries → Data context: reads data (evidence: `clean-architecture10/src/Application/Priprema/Get/GetPripremeQueryHandler.cs`)
- Preparation queries → Preparation aggregate: queries (evidence: `clean-architecture10/src/Application/Priprema/Get/GetPripremeQueryHandler.cs`)
- Preparation queries → Checklist entities: reads checklist (evidence: `clean-architecture10/src/Application/Priprema/Get/GetPripremeQueryHandler.cs`)
- User queries → Data context: reads data (evidence: `clean-architecture10/src/Application/Korisnici/Get2/GetKorisnik2QueryHandler.cs`)
- User queries → User entity: queries (evidence: `clean-architecture10/src/Application/Korisnici/Get2/GetKorisnik2QueryHandler.cs`)
- Device queries → Data context: reads data (evidence: `clean-architecture10/src/Application/Uredjaji/Get2/GetUredjajiQueryHandler2.cs`)
- Device queries → Device model: queries (evidence: `clean-architecture10/src/Application/Uredjaji/Get2/GetUredjajiQueryHandler2.cs`)
