# robertsklv/skillforge architecture

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

- Interactive diagram: https://gitdiagram.com/robertsklv/skillforge
- Repository: https://github.com/robertsklv/skillforge

## Overview

SkillForge is a developer knowledge-sharing platform: users authenticate, discover articles, read and interact with them, and manage profiles and follows; authors can create and update content. The repository contains a .NET backend, two frontend implementations, an admin moderation surface, and scheduled aggregation/SEO jobs. The sampled API controller and React client support the frontend-to-API relationship; the README documents broader capabilities. Many subsystem implementations were not sampled, so their internal call paths are left unasserted.

Main entry points: [`Backend/SkillForge/SkillForge/Controllers/ArticleController.cs`](https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Controllers/ArticleController.cs) (Article API), [`Backend/SkillForge/SkillForge/Data/AppDbContext.cs`](https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Data/AppDbContext.cs) (SQL data store), [`Backend/SkillForge/SkillForge/Controllers/UserController.cs`](https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Controllers/UserController.cs) (User API), [`Frontend/skillforge-react/src/lib/api/client.ts`](https://github.com/robertsklv/skillforge/blob/main/Frontend/skillforge-react/src/lib/api/client.ts) (React API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["User interfaces"]
  node_react["React web app<br/>[page.tsx]"]
  node_svelte["Svelte web app<br/>[+page.svelte]"]
  node_reactapi["React API client<br/>[client.ts]"]
  node_svelteapi["Svelte API client<br/>[client.ts]"]
end

subgraph group_api["Platform API"]
  node_articles["Article API"]
  node_users["User API<br/>[UserController.cs]"]
  node_auth["User authentication<br/>[UserAuthService.cs]"]
  node_feed["Personalized feeds<br/>[UserFeedService.cs]"]
  node_community["Comments, ratings, follows<br/>[ArticleService.cs]"]
  node_discovery["Search and tags"]
  node_runtime["Backend runtime<br/>[Program.cs]"]
end

subgraph group_admin["Administration"]
  node_adminui["Admin controllers"]
  node_adminauth["Admin authentication"]
  node_admincrud["Admin CRUD<br/>[CrudController.cs]"]
  node_moderation["Moderation services<br/>[IArticleService.cs]"]
end

subgraph group_data["Persistence"]
  node_database[("SQL data store<br/>[AppDbContext.cs]")]
  node_entities["Domain entities<br/>[Article.cs]"]
end

subgraph group_jobs["Background operations"]
  node_cron["Aggregation and sitemap jobs"]
end

node_visitor(("Platform user"))

node_visitor -->|"uses"| node_react
node_visitor -->|"uses"| node_svelte
node_react -->|"requests data"| node_reactapi
node_reactapi -->|"calls API"| node_articles
node_reactapi -->|"calls API"| node_users
node_svelte -.->|"requests data"| node_svelteapi
node_svelteapi -.->|"calls API"| node_articles
node_articles -->|"loads feeds"| node_feed
node_users -->|"loads follows"| node_feed
node_users -->|"authenticates"| node_auth
node_articles -->|"handles ratings"| node_community
node_articles -->|"searches articles"| node_discovery
node_adminui -->|"moderates articles"| node_moderation
node_adminui -.->|"authenticates admins"| node_adminauth
node_admincrud -.->|"manages records"| node_database
node_runtime -->|"configures SQL"| node_database
node_runtime -->|"sets up jobs"| node_cron
node_articles -.->|"reads and writes"| node_database
node_users -.->|"reads and writes"| node_database
node_database -.->|"stores"| node_entities

click node_react "https://github.com/robertsklv/skillforge/blob/main/Frontend/skillforge-react/src/app/page.tsx"
click node_svelte "https://github.com/robertsklv/skillforge/blob/main/Frontend/skillforge-svelte/src/routes/%2Bpage.svelte"
click node_reactapi "https://github.com/robertsklv/skillforge/blob/main/Frontend/skillforge-react/src/lib/api/client.ts"
click node_svelteapi "https://github.com/robertsklv/skillforge/blob/main/Frontend/skillforge-svelte/src/lib/api/client.ts"
click node_articles "https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Controllers/ArticleController.cs"
click node_users "https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Controllers/UserController.cs"
click node_auth "https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Services/UserAuthService.cs"
click node_feed "https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Services/UserFeedService.cs"
click node_community "https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Areas/Admin/Services/ArticleService.cs"
click node_discovery "https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Areas/Admin/Services/EntitySearchService.cs"
click node_adminui "https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Areas/Admin/Controllers/ArticleController.cs"
click node_adminauth "https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Areas/Admin/Services/AdminAuthService.cs"
click node_admincrud "https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Areas/Admin/Controllers/CrudController.cs"
click node_moderation "https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Areas/Admin/Services/IArticleService.cs"
click node_database "https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Data/AppDbContext.cs"
click node_entities "https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Models/Database/Article.cs"
click node_runtime "https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Program.cs"
click node_cron "https://github.com/robertsklv/skillforge/tree/main/Backend/SkillForge/SkillForge/Cron"

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_react,node_svelte,node_reactapi,node_svelteapi,node_visitor toneBlue
class node_articles,node_users,node_auth,node_feed,node_community,node_discovery,node_runtime toneAmber
class node_adminui,node_adminauth,node_admincrud,node_moderation toneMint
class node_database,node_entities toneRose
class node_cron toneIndigo
```

## Components

### User interfaces

- [React web app](https://github.com/robertsklv/skillforge/blob/main/Frontend/skillforge-react/src/app/page.tsx): `Frontend/skillforge-react/src/app/page.tsx`
- [Svelte web app](https://github.com/robertsklv/skillforge/blob/main/Frontend/skillforge-svelte/src/routes/%2Bpage.svelte): `Frontend/skillforge-svelte/src/routes/+page.svelte`
- [React API client](https://github.com/robertsklv/skillforge/blob/main/Frontend/skillforge-react/src/lib/api/client.ts): `Frontend/skillforge-react/src/lib/api/client.ts`
- [Svelte API client](https://github.com/robertsklv/skillforge/blob/main/Frontend/skillforge-svelte/src/lib/api/client.ts): `Frontend/skillforge-svelte/src/lib/api/client.ts`

### Platform API

- [Article API](https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Controllers/ArticleController.cs): `Backend/SkillForge/SkillForge/Controllers/ArticleController.cs`
- [User API](https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Controllers/UserController.cs): `Backend/SkillForge/SkillForge/Controllers/UserController.cs`
- [User authentication](https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Services/UserAuthService.cs): `Backend/SkillForge/SkillForge/Services/UserAuthService.cs`
- [Personalized feeds](https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Services/UserFeedService.cs): `Backend/SkillForge/SkillForge/Services/UserFeedService.cs`
- [Comments, ratings, follows](https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Areas/Admin/Services/ArticleService.cs): `Backend/SkillForge/SkillForge/Areas/Admin/Services/ArticleService.cs`
- [Search and tags](https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Areas/Admin/Services/EntitySearchService.cs): `Backend/SkillForge/SkillForge/Areas/Admin/Services/EntitySearchService.cs`
- [Backend runtime](https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Program.cs): `Backend/SkillForge/SkillForge/Program.cs`

### Administration

- [Admin controllers](https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Areas/Admin/Controllers/ArticleController.cs): `Backend/SkillForge/SkillForge/Areas/Admin/Controllers/ArticleController.cs`
- [Admin authentication](https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Areas/Admin/Services/AdminAuthService.cs): `Backend/SkillForge/SkillForge/Areas/Admin/Services/AdminAuthService.cs`
- [Admin CRUD](https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Areas/Admin/Controllers/CrudController.cs): `Backend/SkillForge/SkillForge/Areas/Admin/Controllers/CrudController.cs`
- [Moderation services](https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Areas/Admin/Services/IArticleService.cs): `Backend/SkillForge/SkillForge/Areas/Admin/Services/IArticleService.cs`

### Persistence

- [SQL data store](https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Data/AppDbContext.cs): `Backend/SkillForge/SkillForge/Data/AppDbContext.cs`
- [Domain entities](https://github.com/robertsklv/skillforge/blob/main/Backend/SkillForge/SkillForge/Models/Database/Article.cs): `Backend/SkillForge/SkillForge/Models/Database/Article.cs`

### Background operations

- [Aggregation and sitemap jobs](https://github.com/robertsklv/skillforge/tree/main/Backend/SkillForge/SkillForge/Cron): `Backend/SkillForge/SkillForge/Cron`

### Other components

- **Platform user**

## Connections

- Platform user → React web app: uses (evidence: `README.md`)
- Platform user → Svelte web app: uses (evidence: `README.md`)
- React web app → React API client: requests data (evidence: `Frontend/skillforge-react/src/app/page.tsx`)
- React API client → Article API: calls API (evidence: `Frontend/skillforge-react/src/lib/api/client.ts`)
- React API client → User API: calls API (evidence: `Frontend/skillforge-react/src/lib/api/client.ts`)
- Svelte web app → Svelte API client: requests data
- Svelte API client → Article API: calls API
- Article API → Personalized feeds: loads feeds (evidence: `Backend/SkillForge/SkillForge/Controllers/ArticleController.cs`)
- User API → Personalized feeds: loads follows (evidence: `Backend/SkillForge/SkillForge/Controllers/UserController.cs`)
- User API → User authentication: authenticates (evidence: `Backend/SkillForge/SkillForge/Controllers/UserController.cs`)
- Article API → Comments, ratings, follows: handles ratings (evidence: `Backend/SkillForge/SkillForge/Controllers/ArticleController.cs`)
- Article API → Search and tags: searches articles (evidence: `Backend/SkillForge/SkillForge/Controllers/ArticleController.cs`)
- Admin controllers → Moderation services: moderates articles (evidence: `Backend/SkillForge/SkillForge/Areas/Admin/Controllers/ArticleController.cs`)
- Admin controllers → Admin authentication: authenticates admins
- Admin CRUD → SQL data store: manages records
- Backend runtime → SQL data store: configures SQL (evidence: `Backend/SkillForge/SkillForge/Program.cs`)
- Backend runtime → Aggregation and sitemap jobs: sets up jobs (evidence: `Backend/SkillForge/SkillForge/Program.cs`)
- Article API → SQL data store: reads and writes
- User API → SQL data store: reads and writes
- SQL data store → Domain entities: stores
