# dimo0-n/skillswap architecture

> Architecture diagram of the GitHub repository dimo0-n/skillswap, 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/dimo0-n/skillswap
- Repository: https://github.com/dimo0-n/skillswap

## Overview

SkillSwap is a skill-exchange platform. Its documented main journey is exploring announcements, registering or signing in, completing a profile, publishing an announcement, and communicating with other users through chat or an optional video meeting. The tree identifies separate modules for proposals, reviews, notifications, contact, and administration. Backend implementation excerpts were not provided, so internal call and persistence wiring is left out; the Jitsi meeting integration is explicitly documented.

Main entry points: [`src/main/java/com/example/skillswap/controller/ChatController.java`](https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/ChatController.java) (Chat), [`src/main/java/com/example/skillswap/controller/ConversationVideoRoomController.java`](https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/ConversationVideoRoomController.java) (Video meeting), [`src/main/java/com/example/skillswap/controller/AnnounceController.java`](https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/AnnounceController.java) (Browse announcements), [`src/main/java/com/example/skillswap/controller/HomeController.java`](https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/HomeController.java) (Explore platform)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_discovery["Discovery"]
  node_home["Explore platform"]
  node_announcements["Browse announcements"]
end

subgraph group_accounts["Accounts and exchange"]
  node_auth["Account access"]
  node_profile["Manage profile"]
  node_swap["Propose exchange"]
  node_reviews["Review exchange"]
end

subgraph group_collaboration["Communication"]
  node_chat["Chat"]
  node_chatws["Live chat"]
  node_notifications["Notifications"]
  node_video["Video meeting"]
  node_contact["Contact form"]
end

subgraph group_operations["Administration"]
  node_adminpanel["Admin panel"]
  node_moderation["Moderation reports"]
  node_adminservices["Admin dashboard"]
end

node_visitor(("Visitor"))
node_user(("User"))
node_admin(("Administrator"))
node_jitsi["Jitsi"]

node_visitor -->|"opens"| node_home
node_visitor -->|"browses"| node_announcements
node_visitor -->|"registers or signs in"| node_auth
node_visitor -->|"sends message"| node_contact
node_user -->|"manages"| node_profile
node_user -->|"publishes announcement"| node_announcements
node_user -->|"proposes exchange"| node_swap
node_user -->|"uses"| node_chat
node_user -->|"joins meeting"| node_video
node_chat -->|"supports live messaging"| node_chatws
node_video -.->|"joins meeting"| node_jitsi
node_admin -->|"opens"| node_adminpanel
node_admin -->|"monitors content"| node_moderation
node_admin -->|"views dashboard"| node_adminservices

click node_home "https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/HomeController.java"
click node_announcements "https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/AnnounceController.java"
click node_auth "https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/AuthController.java"
click node_profile "https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/ProfileController.java"
click node_swap "https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/SkillSwapProposalController.java"
click node_reviews "https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/SwapReviewController.java"
click node_chat "https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/ChatController.java"
click node_chatws "https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/ChatWebSocketController.java"
click node_notifications "https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/NotificationController.java"
click node_video "https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/ConversationVideoRoomController.java"
click node_contact "https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/ContactController.java"
click node_adminpanel "https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/AdminController.java"
click node_moderation "https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/admin/entity/ModerationReport.java"
click node_adminservices "https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/admin/service/impl/AdminDashboardServiceImpl.java"

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_home,node_announcements,node_user toneBlue
class node_auth,node_profile,node_swap,node_reviews toneAmber
class node_chat,node_chatws,node_notifications,node_video,node_contact toneMint
class node_adminpanel,node_moderation,node_adminservices toneRose
class node_visitor,node_admin,node_jitsi toneIndigo
```

## Components

### Discovery

- [Explore platform](https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/HomeController.java): `src/main/java/com/example/skillswap/controller/HomeController.java`
- [Browse announcements](https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/AnnounceController.java): `src/main/java/com/example/skillswap/controller/AnnounceController.java`

### Accounts and exchange

- [Account access](https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/AuthController.java): `src/main/java/com/example/skillswap/controller/AuthController.java`
- [Manage profile](https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/ProfileController.java): `src/main/java/com/example/skillswap/controller/ProfileController.java`
- [Propose exchange](https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/SkillSwapProposalController.java): `src/main/java/com/example/skillswap/controller/SkillSwapProposalController.java`
- [Review exchange](https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/SwapReviewController.java): `src/main/java/com/example/skillswap/controller/SwapReviewController.java`

### Communication

- [Chat](https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/ChatController.java): `src/main/java/com/example/skillswap/controller/ChatController.java`
- [Live chat](https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/ChatWebSocketController.java): `src/main/java/com/example/skillswap/controller/ChatWebSocketController.java`
- [Notifications](https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/NotificationController.java): `src/main/java/com/example/skillswap/controller/NotificationController.java`
- [Video meeting](https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/ConversationVideoRoomController.java): `src/main/java/com/example/skillswap/controller/ConversationVideoRoomController.java`
- [Contact form](https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/ContactController.java): `src/main/java/com/example/skillswap/controller/ContactController.java`

### Administration

- [Admin panel](https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/controller/AdminController.java): `src/main/java/com/example/skillswap/controller/AdminController.java`
- [Moderation reports](https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/admin/entity/ModerationReport.java): `src/main/java/com/example/skillswap/admin/entity/ModerationReport.java`
- [Admin dashboard](https://github.com/dimo0-n/skillswap/blob/main/src/main/java/com/example/skillswap/admin/service/impl/AdminDashboardServiceImpl.java): `src/main/java/com/example/skillswap/admin/service/impl/AdminDashboardServiceImpl.java`

### Other components

- **Visitor**
- **User**
- **Administrator**
- **Jitsi**

## Connections

- Visitor → Explore platform: opens
- Visitor → Browse announcements: browses
- Visitor → Account access: registers or signs in
- Visitor → Contact form: sends message
- User → Manage profile: manages
- User → Browse announcements: publishes announcement
- User → Propose exchange: proposes exchange
- User → Chat: uses
- User → Video meeting: joins meeting
- Chat → Live chat: supports live messaging
- Video meeting → Jitsi: joins meeting
- Administrator → Admin panel: opens
- Administrator → Moderation reports: monitors content
- Administrator → Admin dashboard: views dashboard
