# emadkhanqai/aj-boilerplate-fs architecture

> Architecture diagram of the GitHub repository emadkhanqai/aj-boilerplate-fs, 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/emadkhanqai/aj-boilerplate-fs
- Repository: https://github.com/emadkhanqai/aj-boilerplate-fs

## Overview

This is a .NET 10 and Angular full-stack boilerplate, with an end-to-end sample Items workflow and a persistent “What’s new” feature. A user enters through the web app, authenticates, and uses feature pages that call the API; backend controllers delegate to application services and persistence. The graph also preserves the documented API-envelope and layered-architecture roles. The README documents cloud selection and other capabilities, but sampled source does not establish their full runtime wiring, so uncertain integration edges are omitted.

Main entry points: [`src/frontend/apps/web/src/app/app.routes.ts`](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/frontend/apps/web/src/app/app.routes.ts) (Web app), [`src/backend/src/AjBoilerplate.Api/Program.cs`](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Api/Program.cs) (API host), [`src/backend/src/AjBoilerplate.Api/Controllers/ItemsController.cs`](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Api/Controllers/ItemsController.cs) (Items controller), [`src/backend/src/AjBoilerplate.Api/Controllers/FeaturesController.cs`](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Api/Controllers/FeaturesController.cs) (Features controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Angular web app"]
  node_webapp["Web app<br/>[app.routes.ts]"]
  node_auth["Auth service<br/>[auth.service.ts]"]
  node_authprovider["Auth providers"]
  node_itemsui["Items pages<br/>[item-list-page.ts]"]
  node_featureui["Spotlight modal<br/>[whats-new-modal.ts]"]
  node_apiclient["API client"]
  node_featureclient["Announcements client"]
end

subgraph group_api["API and application"]
  node_api["API host<br/>[Program.cs]"]
  node_itemscontroller["Items controller<br/>[ItemsController.cs]"]
  node_featurescontroller["Features controller"]
  node_envelope["Response envelope"]
  node_itemservice["Item service<br/>[ItemService.cs]"]
  node_featureservice["Announcement service"]
end

subgraph group_data["Domain and persistence"]
  node_itemrepo["Item repository<br/>[ItemRepository.cs]"]
  node_featurerepo["Announcement repository"]
  node_domain["Domain models<br/>[Item.cs]"]
  node_dbcontext["EF Core context<br/>[AppDbContext.cs]"]
end

subgraph group_platform["Identity and integrations"]
  node_identityapi["API identity"]
  node_database[("SQL database")]
  node_oidc["Identity provider"]
end

node_user(("User"))

node_user -->|"uses"| node_webapp
node_webapp -->|"checks session"| node_auth
node_auth -->|"creates provider"| node_authprovider
node_authprovider -.->|"authenticates"| node_oidc
node_webapp -->|"routes to"| node_itemsui
node_itemsui -->|"requests items"| node_apiclient
node_webapp -->|"shows spotlight"| node_featureui
node_featureui -->|"loads and acknowledges"| node_featureclient
node_apiclient -->|"sends requests"| node_api
node_featureclient -->|"sends requests"| node_api
node_api -->|"dispatches requests"| node_itemscontroller
node_api -->|"dispatches requests"| node_featurescontroller
node_itemscontroller -->|"delegates"| node_itemservice
node_featurescontroller -->|"delegates"| node_featureservice
node_itemservice -->|"uses repository"| node_itemrepo
node_featureservice -->|"uses repository"| node_featurerepo
node_itemrepo -->|"queries and saves"| node_dbcontext
node_featurerepo -->|"queries and saves"| node_dbcontext
node_dbcontext -->|"persists data"| node_database
node_identityapi -.->|"validates identity"| node_oidc
node_itemscontroller -->|"formats responses"| node_envelope
node_featurescontroller -->|"formats responses"| node_envelope
node_itemservice -->|"applies item rules"| node_domain

click node_webapp "https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/frontend/apps/web/src/app/app.routes.ts"
click node_auth "https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/frontend/libs/auth/src/lib/auth.service.ts"
click node_authprovider "https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/frontend/libs/auth/src/lib/providers/provider-factory.ts"
click node_itemsui "https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/frontend/libs/feature-items/src/lib/item-list-page/item-list-page.ts"
click node_featureui "https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/frontend/libs/shared/ui/src/lib/whats-new-modal/whats-new-modal.ts"
click node_apiclient "https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/frontend/libs/data-access/api-client/src/lib/items-api.service.ts"
click node_featureclient "https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/frontend/libs/data-access/api-client/src/lib/feature-announcements-api.service.ts"
click node_api "https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Api/Program.cs"
click node_itemscontroller "https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Api/Controllers/ItemsController.cs"
click node_featurescontroller "https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Api/Controllers/FeaturesController.cs"
click node_envelope "https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Api/Infrastructure/EnvelopeResultFilter.cs"
click node_itemservice "https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Application/Items/ItemService.cs"
click node_featureservice "https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Application/Features/FeatureAnnouncementService.cs"
click node_identityapi "https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Api/Identity/AuthenticationSetup.cs"
click node_itemrepo "https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Infrastructure/Persistence/ItemRepository.cs"
click node_featurerepo "https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Infrastructure/Persistence/FeatureAnnouncementRepository.cs"
click node_domain "https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Domain/Items/Item.cs"
click node_dbcontext "https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Infrastructure/Persistence/AppDbContext.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_webapp,node_auth,node_authprovider,node_itemsui,node_featureui,node_apiclient,node_featureclient,node_user toneBlue
class node_api,node_itemscontroller,node_featurescontroller,node_envelope,node_itemservice,node_featureservice toneAmber
class node_itemrepo,node_featurerepo,node_domain,node_dbcontext toneMint
class node_identityapi,node_database,node_oidc toneRose
```

## Components

### Angular web app

- [Web app](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/frontend/apps/web/src/app/app.routes.ts): `src/frontend/apps/web/src/app/app.routes.ts`
- [Auth service](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/frontend/libs/auth/src/lib/auth.service.ts): `src/frontend/libs/auth/src/lib/auth.service.ts`
- [Auth providers](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/frontend/libs/auth/src/lib/providers/provider-factory.ts): `src/frontend/libs/auth/src/lib/providers/provider-factory.ts`
- [Items pages](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/frontend/libs/feature-items/src/lib/item-list-page/item-list-page.ts): `src/frontend/libs/feature-items/src/lib/item-list-page/item-list-page.ts`
- [Spotlight modal](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/frontend/libs/shared/ui/src/lib/whats-new-modal/whats-new-modal.ts): `src/frontend/libs/shared/ui/src/lib/whats-new-modal/whats-new-modal.ts`
- [API client](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/frontend/libs/data-access/api-client/src/lib/items-api.service.ts): `src/frontend/libs/data-access/api-client/src/lib/items-api.service.ts`
- [Announcements client](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/frontend/libs/data-access/api-client/src/lib/feature-announcements-api.service.ts): `src/frontend/libs/data-access/api-client/src/lib/feature-announcements-api.service.ts`

### API and application

- [API host](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Api/Program.cs): `src/backend/src/AjBoilerplate.Api/Program.cs`
- [Items controller](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Api/Controllers/ItemsController.cs): `src/backend/src/AjBoilerplate.Api/Controllers/ItemsController.cs`
- [Features controller](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Api/Controllers/FeaturesController.cs): `src/backend/src/AjBoilerplate.Api/Controllers/FeaturesController.cs`
- [Response envelope](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Api/Infrastructure/EnvelopeResultFilter.cs): `src/backend/src/AjBoilerplate.Api/Infrastructure/EnvelopeResultFilter.cs`
- [Item service](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Application/Items/ItemService.cs): `src/backend/src/AjBoilerplate.Application/Items/ItemService.cs`
- [Announcement service](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Application/Features/FeatureAnnouncementService.cs): `src/backend/src/AjBoilerplate.Application/Features/FeatureAnnouncementService.cs`

### Domain and persistence

- [Item repository](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Infrastructure/Persistence/ItemRepository.cs): `src/backend/src/AjBoilerplate.Infrastructure/Persistence/ItemRepository.cs`
- [Announcement repository](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Infrastructure/Persistence/FeatureAnnouncementRepository.cs): `src/backend/src/AjBoilerplate.Infrastructure/Persistence/FeatureAnnouncementRepository.cs`
- [Domain models](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Domain/Items/Item.cs): `src/backend/src/AjBoilerplate.Domain/Items/Item.cs`
- [EF Core context](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Infrastructure/Persistence/AppDbContext.cs): `src/backend/src/AjBoilerplate.Infrastructure/Persistence/AppDbContext.cs`

### Identity and integrations

- [API identity](https://github.com/emadkhanqai/aj-boilerplate-fs/blob/main/src/backend/src/AjBoilerplate.Api/Identity/AuthenticationSetup.cs): `src/backend/src/AjBoilerplate.Api/Identity/AuthenticationSetup.cs`
- **SQL database**
- **Identity provider**

### Other components

- **User**

## Connections

- User → Web app: uses
- Web app → Auth service: checks session
- Auth service → Auth providers: creates provider
- Auth providers → Identity provider: authenticates
- Web app → Items pages: routes to
- Items pages → API client: requests items
- Web app → Spotlight modal: shows spotlight
- Spotlight modal → Announcements client: loads and acknowledges
- API client → API host: sends requests
- Announcements client → API host: sends requests
- API host → Items controller: dispatches requests
- API host → Features controller: dispatches requests
- Items controller → Item service: delegates
- Features controller → Announcement service: delegates
- Item service → Item repository: uses repository
- Announcement service → Announcement repository: uses repository
- Item repository → EF Core context: queries and saves
- Announcement repository → EF Core context: queries and saves
- EF Core context → SQL database: persists data
- API identity → Identity provider: validates identity
- Items controller → Response envelope: formats responses
- Features controller → Response envelope: formats responses
- Item service → Domain models: applies item rules
