# rcanoa-ucb/socialmediastudent architecture

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

- Interactive diagram: https://gitdiagram.com/rcanoa-ucb/socialmediastudent
- Repository: https://github.com/rcanoa-ucb/socialmediastudent

## Overview

This is a small ASP.NET Core social-media API whose implemented product workflow is post CRUD: an HTTP client calls the post controller, which delegates through a repository contract to Entity Framework and MySQL. Core entities represent users, posts, and comments; the context exposes all three sets and loads entity configurations. The tree also includes a standalone weather endpoint. The README is empty and only selected source was sampled, so wiring beyond these evidenced paths is omitted.

Main entry points: [`SocialMedia.Infrastructure/Data/SocialMediaContext.cs`](https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Infrastructure/Data/SocialMediaContext.cs) (Social media context), [`SocialMedia.Api/Controllers/PostController.cs`](https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Api/Controllers/PostController.cs) (Post controller), [`SocialMedia.Api/Controllers/WeatherForecastController.cs`](https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Api/Controllers/WeatherForecastController.cs) (Weather controller), [`SocialMedia.Infrastructure/Repositories/PostRepository.cs`](https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Infrastructure/Repositories/PostRepository.cs) (Post repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_post_controller["Post controller<br/>[PostController.cs]"]
  node_weather_controller["Weather controller"]
  node_program["Application setup<br/>[Program.cs]"]
  node_weather_model["Weather forecast model<br/>[WeatherForecast.cs]"]
end

subgraph group_core["Domain Core"]
  node_repository_contract["Post repository contract<br/>[IPostRepository.cs]"]
  node_post["Post entity<br/>[Post.cs]"]
  node_user["User entity<br/>[User.cs]"]
  node_comment["Comment entity<br/>[Comment.cs]"]
end

subgraph group_infra["Persistence"]
  node_repository["Post repository<br/>[PostRepository.cs]"]
  node_context["Social media context"]
  node_entity_configs["Entity configurations<br/>[Configurations]"]
end

node_client(("HTTP client"))
node_mysql[("MySQL database")]

node_client -->|"HTTP requests"| node_post_controller
node_post_controller -->|"calls CRUD"| node_repository_contract
node_repository_contract -->|"implemented by"| node_repository
node_post_controller -->|"HTTP responses"| node_client
node_program -->|"registers service"| node_repository
node_program -->|"configures MySQL"| node_context
node_repository -->|"queries and saves"| node_context
node_context -->|"reads and writes"| node_mysql
node_context -->|"applies mappings"| node_entity_configs
node_context -->|"exposes set"| node_post
node_context -->|"exposes set"| node_user
node_context -->|"exposes set"| node_comment
node_client -->|"HTTP request"| node_weather_controller
node_weather_controller -->|"creates forecasts"| node_weather_model
node_weather_controller -->|"returns forecast"| node_client

click node_post_controller "https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Api/Controllers/PostController.cs"
click node_weather_controller "https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Api/Controllers/WeatherForecastController.cs"
click node_program "https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Api/Program.cs"
click node_repository_contract "https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Core/Interfaces/IPostRepository.cs"
click node_post "https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Core/Entities/Post.cs"
click node_user "https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Core/Entities/User.cs"
click node_comment "https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Core/Entities/Comment.cs"
click node_repository "https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Infrastructure/Repositories/PostRepository.cs"
click node_context "https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Infrastructure/Data/SocialMediaContext.cs"
click node_entity_configs "https://github.com/rcanoa-ucb/socialmediastudent/tree/main/SocialMedia.Infrastructure/Data/Configurations"
click node_weather_model "https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Api/WeatherForecast.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_post_controller,node_weather_controller,node_program,node_weather_model,node_client toneBlue
class node_repository_contract,node_post,node_user,node_comment,node_mysql toneAmber
class node_repository,node_context,node_entity_configs toneMint
```

## Components

### HTTP API

- [Post controller](https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Api/Controllers/PostController.cs): `SocialMedia.Api/Controllers/PostController.cs`
- [Weather controller](https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Api/Controllers/WeatherForecastController.cs): `SocialMedia.Api/Controllers/WeatherForecastController.cs`
- [Application setup](https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Api/Program.cs): `SocialMedia.Api/Program.cs`
- [Weather forecast model](https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Api/WeatherForecast.cs): `SocialMedia.Api/WeatherForecast.cs`

### Domain Core

- [Post repository contract](https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Core/Interfaces/IPostRepository.cs): `SocialMedia.Core/Interfaces/IPostRepository.cs`
- [Post entity](https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Core/Entities/Post.cs): `SocialMedia.Core/Entities/Post.cs`
- [User entity](https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Core/Entities/User.cs): `SocialMedia.Core/Entities/User.cs`
- [Comment entity](https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Core/Entities/Comment.cs): `SocialMedia.Core/Entities/Comment.cs`

### Persistence

- [Post repository](https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Infrastructure/Repositories/PostRepository.cs): `SocialMedia.Infrastructure/Repositories/PostRepository.cs`
- [Social media context](https://github.com/rcanoa-ucb/socialmediastudent/blob/main/SocialMedia.Infrastructure/Data/SocialMediaContext.cs): `SocialMedia.Infrastructure/Data/SocialMediaContext.cs`
- [Entity configurations](https://github.com/rcanoa-ucb/socialmediastudent/tree/main/SocialMedia.Infrastructure/Data/Configurations): `SocialMedia.Infrastructure/Data/Configurations`

### Other components

- **HTTP client**
- **MySQL database**

## Connections

- HTTP client → Post controller: HTTP requests
- Post controller → Post repository contract: calls CRUD
- Post repository contract → Post repository: implemented by
- Post controller → HTTP client: HTTP responses
- Application setup → Post repository: registers service
- Application setup → Social media context: configures MySQL
- Post repository → Social media context: queries and saves
- Social media context → MySQL database: reads and writes
- Social media context → Entity configurations: applies mappings
- Social media context → Post entity: exposes set
- Social media context → User entity: exposes set
- Social media context → Comment entity: exposes set
- HTTP client → Weather controller: HTTP request
- Weather controller → Weather forecast model: creates forecasts
- Weather controller → HTTP client: returns forecast
