# itu-bdsa23-group6/chirp architecture

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

- Interactive diagram: https://gitdiagram.com/itu-bdsa23-group6/chirp
- Repository: https://github.com/itu-bdsa23-group6/chirp

## Overview

Chirp is an ASP.NET Core social-feed application: users register or sign in, browse a public feed or their timeline, and can publish, follow authors, and react to Cheeps. Page handlers invoke repository interfaces; infrastructure repositories implement those operations over an Entity Framework context. The source index supports the handler, dependency-registration, and repository relationships shown here. Some UI rendering and database-provider details are not established by the excerpts, so they are omitted.

Main entry points: [`src/Chirp.Infrastructure/Database/DatabaseContext.cs`](https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Infrastructure/Database/DatabaseContext.cs) (Entity context), [`src/Chirp.Web/Startup.cs`](https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Web/Startup.cs) (Service setup), [`src/Chirp.Infrastructure/LikeDisRepository.cs`](https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Infrastructure/LikeDisRepository.cs) (Opinion repository), [`src/Chirp.Infrastructure/CheepRepository.cs`](https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Infrastructure/CheepRepository.cs) (Cheep repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_account["Account pages<br/>[Account]"]
  node_public["Public feed<br/>[Public.cshtml.cs]"]
  node_timeline["User timeline"]
  node_startup["Service setup<br/>[Startup.cs]"]
  node_program["Web entry<br/>[Program.cs]"]
end

subgraph group_core["Domain contracts"]
  node_contracts["Repository contracts<br/>[Interfaces]"]
  node_dtos["Request DTOs<br/>[DTOs]"]
end

subgraph group_infra["Persistence infrastructure"]
  node_authorrepo["Author repository"]
  node_cheeprepo["Cheep repository<br/>[CheepRepository.cs]"]
  node_opinionrepo["Opinion repository"]
  node_context[("Entity context<br/>[DatabaseContext.cs]")]
  node_initializer["Database initializer"]
end

subgraph group_state["Domain and state"]
  node_models["Domain entities<br/>[Models]"]
  node_opinion["Opinion enum"]
end

node_visitor(("Visitor"))

node_visitor -->|"registers or signs in"| node_account
node_visitor -->|"browses feed"| node_public
node_visitor -->|"views timeline"| node_timeline
node_program -->|"starts"| node_startup
node_startup -->|"configures"| node_context
node_startup -->|"registers"| node_authorrepo
node_startup -->|"registers"| node_cheeprepo
node_startup -->|"registers"| node_opinionrepo
node_account -->|"uses author contract"| node_contracts
node_public -->|"uses repository contracts"| node_contracts
node_timeline -->|"uses repository contracts"| node_contracts
node_contracts -->|"accepts or returns"| node_dtos
node_authorrepo -->|"queries and saves"| node_context
node_cheeprepo -->|"queries and saves"| node_context
node_cheeprepo -->|"looks up authors"| node_authorrepo
node_cheeprepo -->|"loads opinions"| node_opinionrepo
node_opinionrepo -->|"looks up authors"| node_authorrepo
node_opinionrepo -->|"queries opinions"| node_context
node_initializer -->|"initializes"| node_context
node_context -->|"maps entities"| node_models
node_opinionrepo -->|"classifies reactions"| node_opinion

click node_account "https://github.com/itu-bdsa23-group6/chirp/tree/main/src/Chirp.Web/Areas/Identity/Pages/Account"
click node_public "https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Web/Pages/Public.cshtml.cs"
click node_timeline "https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Web/Pages/UserTimeline.cshtml.cs"
click node_startup "https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Web/Startup.cs"
click node_program "https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Web/Program.cs"
click node_contracts "https://github.com/itu-bdsa23-group6/chirp/tree/main/src/Chirp.Core/Interfaces"
click node_dtos "https://github.com/itu-bdsa23-group6/chirp/tree/main/src/Chirp.Core/DTOs"
click node_authorrepo "https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Infrastructure/AuthorRepository.cs"
click node_cheeprepo "https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Infrastructure/CheepRepository.cs"
click node_opinionrepo "https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Infrastructure/LikeDisRepository.cs"
click node_context "https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Infrastructure/Database/DatabaseContext.cs"
click node_initializer "https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Infrastructure/Database/DatabaseInitializer.cs"
click node_models "https://github.com/itu-bdsa23-group6/chirp/tree/main/src/Chirp.Core/Models"
click node_opinion "https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Core/Enums/AuthorCheepOpinion.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_account,node_public,node_timeline,node_startup,node_program toneBlue
class node_contracts,node_dtos toneAmber
class node_authorrepo,node_cheeprepo,node_opinionrepo,node_context,node_initializer toneMint
class node_models,node_opinion toneRose
class node_visitor toneIndigo
```

## Components

### Web application

- [Account pages](https://github.com/itu-bdsa23-group6/chirp/tree/main/src/Chirp.Web/Areas/Identity/Pages/Account): `src/Chirp.Web/Areas/Identity/Pages/Account`
- [Public feed](https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Web/Pages/Public.cshtml.cs): `src/Chirp.Web/Pages/Public.cshtml.cs`
- [User timeline](https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Web/Pages/UserTimeline.cshtml.cs): `src/Chirp.Web/Pages/UserTimeline.cshtml.cs`
- [Service setup](https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Web/Startup.cs): `src/Chirp.Web/Startup.cs`
- [Web entry](https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Web/Program.cs): `src/Chirp.Web/Program.cs`

### Domain contracts

- [Repository contracts](https://github.com/itu-bdsa23-group6/chirp/tree/main/src/Chirp.Core/Interfaces): `src/Chirp.Core/Interfaces`
- [Request DTOs](https://github.com/itu-bdsa23-group6/chirp/tree/main/src/Chirp.Core/DTOs): `src/Chirp.Core/DTOs`

### Persistence infrastructure

- [Author repository](https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Infrastructure/AuthorRepository.cs): `src/Chirp.Infrastructure/AuthorRepository.cs`
- [Cheep repository](https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Infrastructure/CheepRepository.cs): `src/Chirp.Infrastructure/CheepRepository.cs`
- [Opinion repository](https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Infrastructure/LikeDisRepository.cs): `src/Chirp.Infrastructure/LikeDisRepository.cs`
- [Entity context](https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Infrastructure/Database/DatabaseContext.cs): `src/Chirp.Infrastructure/Database/DatabaseContext.cs`
- [Database initializer](https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Infrastructure/Database/DatabaseInitializer.cs): `src/Chirp.Infrastructure/Database/DatabaseInitializer.cs`

### Domain and state

- [Domain entities](https://github.com/itu-bdsa23-group6/chirp/tree/main/src/Chirp.Core/Models): `src/Chirp.Core/Models`
- [Opinion enum](https://github.com/itu-bdsa23-group6/chirp/blob/main/src/Chirp.Core/Enums/AuthorCheepOpinion.cs): `src/Chirp.Core/Enums/AuthorCheepOpinion.cs`

### Other components

- **Visitor**

## Connections

- Visitor → Account pages: registers or signs in
- Visitor → Public feed: browses feed
- Visitor → User timeline: views timeline
- Web entry → Service setup: starts (evidence: `src/Chirp.Web/Program.cs`)
- Service setup → Entity context: configures (evidence: `src/Chirp.Web/Startup.cs`)
- Service setup → Author repository: registers (evidence: `src/Chirp.Web/Startup.cs`)
- Service setup → Cheep repository: registers (evidence: `src/Chirp.Web/Startup.cs`)
- Service setup → Opinion repository: registers (evidence: `src/Chirp.Web/Startup.cs`)
- Account pages → Repository contracts: uses author contract (evidence: `src/Chirp.Web/Areas/Identity/Pages/Account/Register.cshtml.cs`)
- Public feed → Repository contracts: uses repository contracts (evidence: `src/Chirp.Web/Pages/Public.cshtml.cs`)
- User timeline → Repository contracts: uses repository contracts (evidence: `src/Chirp.Web/Pages/UserTimeline.cshtml.cs`)
- Repository contracts → Request DTOs: accepts or returns (evidence: `src/Chirp.Core/Interfaces/ICheepRepository.cs`)
- Author repository → Entity context: queries and saves (evidence: `src/Chirp.Infrastructure/AuthorRepository.cs`)
- Cheep repository → Entity context: queries and saves (evidence: `src/Chirp.Infrastructure/CheepRepository.cs`)
- Cheep repository → Author repository: looks up authors (evidence: `src/Chirp.Infrastructure/CheepRepository.cs`)
- Cheep repository → Opinion repository: loads opinions (evidence: `src/Chirp.Infrastructure/CheepRepository.cs`)
- Opinion repository → Author repository: looks up authors (evidence: `src/Chirp.Infrastructure/LikeDisRepository.cs`)
- Opinion repository → Entity context: queries opinions (evidence: `src/Chirp.Infrastructure/LikeDisRepository.cs`)
- Database initializer → Entity context: initializes (evidence: `src/Chirp.Infrastructure/Database/DatabaseInitializer.cs`)
- Entity context → Domain entities: maps entities (evidence: `src/Chirp.Infrastructure/Database/DatabaseContext.cs`)
- Opinion repository → Opinion enum: classifies reactions (evidence: `src/Chirp.Infrastructure/LikeDisRepository.cs`)
