# david-torosyan/bittrade architecture

> Architecture diagram of the GitHub repository david-torosyan/bittrade, 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/david-torosyan/bittrade
- Repository: https://github.com/david-torosyan/bittrade

## Overview

BitTrade is an ASP.NET MVC cryptocurrency-trading demo centered on account access, social messaging, user discovery, wallets, and live currency prices. The main web controller delegates account, user, messaging, and wallet operations to business services; API controllers expose user and message operations. Services use a unit-of-work abstraction for persistence. README documents live cryptocurrency prices, but sampled source does not establish the market-data provider or its exact wiring.

Main entry points: [`BitTrade.DAL/Repositories/UnitOfWorkcs.cs`](https://github.com/david-torosyan/bittrade/blob/master/BitTrade.DAL/Repositories/UnitOfWorkcs.cs) (Unit of work), [`BitTrade/Controllers/HomeController.cs`](https://github.com/david-torosyan/bittrade/blob/master/BitTrade/Controllers/HomeController.cs) (MVC actions), [`BitTrade.DAL/Repositories/Repository.cs`](https://github.com/david-torosyan/bittrade/blob/master/BitTrade.DAL/Repositories/Repository.cs) (Generic repository), [`BitTrade.BLL/Services/AccountService.cs`](https://github.com/david-torosyan/bittrade/blob/master/BitTrade.BLL/Services/AccountService.cs) (Account service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web interface"]
  node_home["MVC actions<br/>[HomeController.cs]"]
  node_user_api["User API<br/>[UserController.cs]"]
  node_message_api["Message API"]
  node_price_ui["Live prices<br/>[Exchange.js]"]
  node_models["Domain models<br/>[Models]"]
end

subgraph group_identity["Accounts and profiles"]
  node_account_service["Account service<br/>[AccountService.cs]"]
  node_user_service["User service<br/>[UserService.cs]"]
  node_security_service["Security service<br/>[SecurityService.cs]"]
  node_wallet_service["Wallet service<br/>[WalletService.cs]"]
end

subgraph group_social["Social messaging"]
  node_message_service["Message service<br/>[MessageService.cs]"]
  node_friend_service["Friend service<br/>[FriendService.cs]"]
end

subgraph group_data["Persistence"]
  node_unit_of_work["Unit of work<br/>[UnitOfWorkcs.cs]"]
  node_user_repo["User repository<br/>[UserRepository.cs]"]
  node_wallet_repo["Wallet repository"]
  node_message_repo["Message repository"]
  node_friend_repo["Friend repository"]
  node_repository["Generic repository<br/>[Repository.cs]"]
  node_database[("Trade database")]
end

node_visitor(("Visitor"))

node_visitor -->|"uses"| node_home
node_visitor -->|"calls"| node_user_api
node_visitor -->|"calls"| node_message_api
node_visitor -->|"views"| node_price_ui
node_home -->|"authenticates"| node_account_service
node_home -->|"loads profiles"| node_user_service
node_home -->|"loads conversations"| node_message_service
node_home -->|"loads wallet"| node_wallet_service
node_user_api -->|"searches, updates"| node_user_service
node_message_api -->|"sends, checks"| node_message_service
node_account_service -->|"validates passwords"| node_security_service
node_account_service -->|"reads, writes"| node_unit_of_work
node_user_service -->|"reads, updates"| node_unit_of_work
node_message_service -->|"reads, writes"| node_unit_of_work
node_wallet_service -->|"accesses wallet"| node_unit_of_work
node_friend_service -->|"accesses friendships"| node_unit_of_work
node_unit_of_work -->|"provides"| node_user_repo
node_unit_of_work -->|"provides"| node_wallet_repo
node_unit_of_work -->|"provides"| node_message_repo
node_unit_of_work -->|"provides"| node_friend_repo
node_user_repo -->|"inherits"| node_repository
node_wallet_repo -->|"inherits"| node_repository
node_message_repo -->|"inherits"| node_repository
node_friend_repo -->|"inherits"| node_repository
node_repository -->|"queries, persists"| node_database

click node_home "https://github.com/david-torosyan/bittrade/blob/master/BitTrade/Controllers/HomeController.cs"
click node_user_api "https://github.com/david-torosyan/bittrade/blob/master/BitTrade/Controllers/ApiControllers/UserController.cs"
click node_message_api "https://github.com/david-torosyan/bittrade/blob/master/BitTrade/Controllers/ApiControllers/MessageController.cs"
click node_price_ui "https://github.com/david-torosyan/bittrade/blob/master/BitTrade/Scripts/Exchange.js"
click node_account_service "https://github.com/david-torosyan/bittrade/blob/master/BitTrade.BLL/Services/AccountService.cs"
click node_user_service "https://github.com/david-torosyan/bittrade/blob/master/BitTrade.BLL/Services/UserService.cs"
click node_security_service "https://github.com/david-torosyan/bittrade/blob/master/BitTrade.BLL/Services/SecurityService.cs"
click node_wallet_service "https://github.com/david-torosyan/bittrade/blob/master/BitTrade.BLL/Services/WalletService.cs"
click node_message_service "https://github.com/david-torosyan/bittrade/blob/master/BitTrade.BLL/Services/MessageService.cs"
click node_friend_service "https://github.com/david-torosyan/bittrade/blob/master/BitTrade.BLL/Services/FriendService.cs"
click node_models "https://github.com/david-torosyan/bittrade/tree/master/BitTrade.Common/Models"
click node_unit_of_work "https://github.com/david-torosyan/bittrade/blob/master/BitTrade.DAL/Repositories/UnitOfWorkcs.cs"
click node_user_repo "https://github.com/david-torosyan/bittrade/blob/master/BitTrade.DAL/Repositories/UserRepository.cs"
click node_wallet_repo "https://github.com/david-torosyan/bittrade/blob/master/BitTrade.DAL/Repositories/WalletRepository.cs"
click node_message_repo "https://github.com/david-torosyan/bittrade/blob/master/BitTrade.DAL/Repositories/MessageRepository.cs"
click node_friend_repo "https://github.com/david-torosyan/bittrade/blob/master/BitTrade.DAL/Repositories/FriendRepository.cs"
click node_repository "https://github.com/david-torosyan/bittrade/blob/master/BitTrade.DAL/Repositories/Repository.cs"
click node_database "https://github.com/david-torosyan/bittrade/blob/master/BitTrade.DAL/TradeModel.Context.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_home,node_user_api,node_message_api,node_price_ui,node_models toneBlue
class node_account_service,node_user_service,node_security_service,node_wallet_service toneAmber
class node_message_service,node_friend_service toneMint
class node_unit_of_work,node_user_repo,node_wallet_repo,node_message_repo,node_friend_repo,node_repository,node_database toneRose
class node_visitor toneIndigo
```

## Components

### Web interface

- [MVC actions](https://github.com/david-torosyan/bittrade/blob/master/BitTrade/Controllers/HomeController.cs): `BitTrade/Controllers/HomeController.cs`
- [User API](https://github.com/david-torosyan/bittrade/blob/master/BitTrade/Controllers/ApiControllers/UserController.cs): `BitTrade/Controllers/ApiControllers/UserController.cs`
- [Message API](https://github.com/david-torosyan/bittrade/blob/master/BitTrade/Controllers/ApiControllers/MessageController.cs): `BitTrade/Controllers/ApiControllers/MessageController.cs`
- [Live prices](https://github.com/david-torosyan/bittrade/blob/master/BitTrade/Scripts/Exchange.js): `BitTrade/Scripts/Exchange.js`
- [Domain models](https://github.com/david-torosyan/bittrade/tree/master/BitTrade.Common/Models): `BitTrade.Common/Models`

### Accounts and profiles

- [Account service](https://github.com/david-torosyan/bittrade/blob/master/BitTrade.BLL/Services/AccountService.cs): `BitTrade.BLL/Services/AccountService.cs`
- [User service](https://github.com/david-torosyan/bittrade/blob/master/BitTrade.BLL/Services/UserService.cs): `BitTrade.BLL/Services/UserService.cs`
- [Security service](https://github.com/david-torosyan/bittrade/blob/master/BitTrade.BLL/Services/SecurityService.cs): `BitTrade.BLL/Services/SecurityService.cs`
- [Wallet service](https://github.com/david-torosyan/bittrade/blob/master/BitTrade.BLL/Services/WalletService.cs): `BitTrade.BLL/Services/WalletService.cs`

### Social messaging

- [Message service](https://github.com/david-torosyan/bittrade/blob/master/BitTrade.BLL/Services/MessageService.cs): `BitTrade.BLL/Services/MessageService.cs`
- [Friend service](https://github.com/david-torosyan/bittrade/blob/master/BitTrade.BLL/Services/FriendService.cs): `BitTrade.BLL/Services/FriendService.cs`

### Persistence

- [Unit of work](https://github.com/david-torosyan/bittrade/blob/master/BitTrade.DAL/Repositories/UnitOfWorkcs.cs): `BitTrade.DAL/Repositories/UnitOfWorkcs.cs`
- [User repository](https://github.com/david-torosyan/bittrade/blob/master/BitTrade.DAL/Repositories/UserRepository.cs): `BitTrade.DAL/Repositories/UserRepository.cs`
- [Wallet repository](https://github.com/david-torosyan/bittrade/blob/master/BitTrade.DAL/Repositories/WalletRepository.cs): `BitTrade.DAL/Repositories/WalletRepository.cs`
- [Message repository](https://github.com/david-torosyan/bittrade/blob/master/BitTrade.DAL/Repositories/MessageRepository.cs): `BitTrade.DAL/Repositories/MessageRepository.cs`
- [Friend repository](https://github.com/david-torosyan/bittrade/blob/master/BitTrade.DAL/Repositories/FriendRepository.cs): `BitTrade.DAL/Repositories/FriendRepository.cs`
- [Generic repository](https://github.com/david-torosyan/bittrade/blob/master/BitTrade.DAL/Repositories/Repository.cs): `BitTrade.DAL/Repositories/Repository.cs`
- [Trade database](https://github.com/david-torosyan/bittrade/blob/master/BitTrade.DAL/TradeModel.Context.cs): `BitTrade.DAL/TradeModel.Context.cs`

### Other components

- **Visitor**

## Connections

- Visitor → MVC actions: uses
- Visitor → User API: calls
- Visitor → Message API: calls
- Visitor → Live prices: views
- MVC actions → Account service: authenticates
- MVC actions → User service: loads profiles
- MVC actions → Message service: loads conversations
- MVC actions → Wallet service: loads wallet
- User API → User service: searches, updates
- Message API → Message service: sends, checks
- Account service → Security service: validates passwords
- Account service → Unit of work: reads, writes
- User service → Unit of work: reads, updates
- Message service → Unit of work: reads, writes
- Wallet service → Unit of work: accesses wallet
- Friend service → Unit of work: accesses friendships
- Unit of work → User repository: provides
- Unit of work → Wallet repository: provides
- Unit of work → Message repository: provides
- Unit of work → Friend repository: provides
- User repository → Generic repository: inherits
- Wallet repository → Generic repository: inherits
- Message repository → Generic repository: inherits
- Friend repository → Generic repository: inherits
- Generic repository → Trade database: queries, persists
