How mrbeliaev/task-market-backend works
TaskMarket Backend is an Express API and WebSocket service for off-chain task metadata, applications, comments, and task/dispute chat; Ethereum contracts retain escrow and state transitions. HTTP requests enter at the server, dispatch through route handlers and controllers to services, which validate signatures or business rules and access PostgreSQL. Admin access checks contract roles on-chain. The README documents WebSocket chat and signed mutations; service internals for chat, disputes, and chain routes were not sampled, so their detailed wiring is limited to documented behavior and visible route/controller declarations.
Main entry points: index.ts Express server · admin.service.ts Admin and chains · validation Request schemas · task.controller.ts Task controller
Components 25
HTTP API
- Express server
src/index.ts - Task routes
src/routes/task.routes.ts - Task controller
src/controllers/task.controller.ts - Admin routes
src/routes/admin.routes.ts - Admin controller
src/controllers/admin.controller.ts - Chat routes
src/routes/chat.routes.ts - Chat controller
src/controllers/chat.controller.ts - Dispute routes
src/routes/dispute.routes.ts - Dispute controller
src/controllers/dispute.controller.ts - Chain routes
src/routes/chain.routes.ts
Marketplace Services
- Task operations
src/services/task.service.ts - Admin and chains
src/services/admin.service.ts - Task chat
src/services/chat.service.ts - Dispute chat
src/services/dispute.service.ts - Signature recovery
src/services/signature.service.ts
Shared Infrastructure
- Request schemas
src/validation - PostgreSQL
src/lib/db.ts - File upload
src/lib/upload.ts
Realtime and Integrations
- WebSocket hub
src/lib/websocket.ts - Telegram alerts
src/services/telegram.service.ts
Other components
- API client
- Admin client
- Ethereum RPC
- WebSocket client
- Telegram
Connections 31
- API client → Express server: sends HTTP
- Admin client → Express server: sends HTTP
- Express server → Task routes: mounts API
- Express server → Admin routes: mounts API
- Express server → Chat routes: mounts API
- Express server → Dispute routes: mounts API
- Express server → Chain routes: mounts API
- Task routes → Task controller: dispatches
- Task controller → Task operations: calls
- Task controller → Request schemas: parses input
- Task operations → PostgreSQL: reads and writes
- Task operations → Signature recovery: verifies signatures
- Admin routes → Admin controller: dispatches
- Admin controller → Admin and chains: calls
- Admin controller → Request schemas: parses input
- Admin routes → Admin and chains: checks admin role
- Admin and chains → PostgreSQL: reads and writes
- Admin and chains → Ethereum RPC: reads contract roles
- Chain routes → Admin and chains: loads public chains
- Chat routes → Chat controller: dispatches
- Chat routes → File upload: accepts attachment
- Chat controller → Task chat: calls
- Chat controller → Request schemas: parses input
- Dispute routes → Dispute controller: dispatches
- Dispute routes → File upload: accepts attachment
- Dispute controller → Dispute chat: calls
- Dispute controller → Request schemas: parses input
- Express server → WebSocket hub: attaches to server
- WebSocket client → WebSocket hub: connects
- Express server → Telegram alerts: sends error alerts
- Telegram alerts → Telegram: notifies