Prerequisites
Before you begin, ensure you have the following installed:- Docker (v20.10+) and Docker Compose (v2.0+)
- Git for cloning the repository
- Node.js 18+ or Bun (optional, for local development)
- At least 4GB of available RAM for all services
The platform uses Docker to orchestrate multiple services including PostgreSQL, TimeScaleDB, Redis, and MongoDB. All services are configured with health checks and automatic restarts.
Installation
Configure Environment Variables
Copy the example environment file and configure your settings:Edit the
.env file with your configuration:.env
Start the Platform with Docker Compose
Launch all services using Docker Compose:This command will:
- Pull and build all required Docker images
- Start PostgreSQL, TimeScaleDB, Redis, and MongoDB databases
- Run database migrations with Prisma
- Launch all microservices (Backend, Engine, WebSocket Server, Price Poller, DBstorage, Batch Upload)
- Start the web frontend and documentation site
The first startup may take 5-10 minutes as Docker downloads images and builds the services. Subsequent starts will be much faster.
Access the Platform
Once all services are running, you can access:Trading Web Interface
Main trading platform UI at
http://localhost:3001API Backend
REST API endpoints at
http://localhost:8000Documentation
This documentation site at
http://localhost:3000Prisma Studio
Database management UI at
http://localhost:5555First User Authentication
Follow these steps to authenticate your first user:Send Login Request
Make a POST request to the login endpoint:Or use the web interface at
http://localhost:3001 to enter your email.Get Verification Link
In development mode, the verification link is logged to the console instead of being emailed. Check the backend logs:Look for a line like:
Verify and Create User
Visit the verification link in your browser. This will:The system creates a new user with:
- Initial balance: $100,000 USDC (demo account)
- Unique user ID (UUID v4)
- Email address for identification
Understanding the Data Flow
Here’s what happens when you authenticate:Development Workflow
For local development without Docker:The platform uses Turborepo for efficient monorepo management. Changes to shared packages (
@repo/config, @repo/db, etc.) automatically trigger rebuilds in dependent services.Common Issues
Services fail to start: 'port already in use'
Services fail to start: 'port already in use'
Another application is using one of the required ports. Check and stop services on:
- 3000 (docs)
- 3001 (web)
- 5433 (TimeScaleDB)
- 5434 (PostgreSQL)
- 6379 (Redis)
- 7070 (WebSocket)
- 8000 (Backend API)
- 27017 (MongoDB)
Database migration fails
Database migration fails
Ensure PostgreSQL is fully started before migrations run:
No market data appearing
No market data appearing
The Price Poller connects to Binance WebSocket API. Check:
- Internet connectivity
- Price Poller logs:
docker logs exness-price-poller - WebSocket URL in
.envis correct
User creation hangs or times out
User creation hangs or times out
The Engine service may not be processing Redis Streams. Check:
Next Steps
Explore the Architecture
Understand how the microservices communicate
API Reference
Learn about available API endpoints
Service Documentation
Deep dive into each microservice
Deployment Guide
Deploy to production environments