Đây là một ứng dụng Web Application được xây dựng dựa trên Laravel 11 và Vue 3 (Inertia.js), cung cấp khả năng kết nối tự động với sàn giao dịch Binance thông qua API để theo dõi tài sản, tự động đồng bộ hóa giao dịch và phân tích hiệu quả đầu tư (PnL) một cách chính xác nhất.
- Quản lý Đa Tài khoản (Multi-Account): Liên kết và quản lý song song nhiều tài khoản Binance thông qua API Keys (Read-only).
- Đồng bộ Dữ liệu Toàn diện (Data Sync Engine):
- Tự động lấy số dư ví Spot và các khoản Staking trên nền tảng Simple Earn (Flexible & Locked).
- Quét và đối soát toàn bộ lịch sử Mua/Bán (Spot Trades).
- Quét lịch sử dòng tiền pháp định P2P (Fiat Inflows/Outflows).
- Quét lịch sử Nạp/Rút Crypto (Crypto Transfers).
- Earn Rewards Tracking: Tính toán chính xác lượng lãi nhận được hàng ngày từ Staking bằng thuật toán bù trừ lịch sử 6 tháng.
- Truy vết Nguồn gốc Coin: Ghi nhận toàn bộ các phát sinh số dư không đến từ Trade như: Cổ tức (Airdrop/Launchpool/Commission), Swap nhanh (Convert Trade Flow), và Dọn dẹp ví (Dust to BNB).
- Thuật toán PnL Thời gian thực:
- Tính toán Trung bình giá (Average Cost) theo thuật toán tài chính chuyên sâu.
- Hiển thị Lợi nhuận chưa chốt (Unrealized PnL) và Lợi nhuận đã chốt (Realized PnL) riêng biệt.
- Hệ thống Cập nhật Giá Siêu tốc (Batch Pricing): Chống quá tải API thông qua cơ chế gom các đồng coin (Batching 50-symbols) thành 1 Job ngầm (Cron Job) giúp cập nhật giá cực nhanh mà không gây tắc nghẽn server.
- PHP 8.2 trở lên
- Composer
- Node.js (v18+) & NPM
- MySQL 8.0 / MariaDB
- Supervisor (để chạy Background Jobs)
- Web Server: Nginx hoặc Apache
1. Clone mã nguồn và cài đặt thư viện
# Clone source code
git clone <repository_url> binance-portfolio
cd binance-portfolio
# Cài đặt PHP Dependencies
composer install --optimize-autoloader --no-dev
# Cài đặt Node.js Dependencies
npm install2. Cấu hình môi trường (Environment)
# Sao chép file cấu hình
cp .env.example .env
# Tạo Application Key
php artisan key:generateMở file .env và thiết lập các thông số kết nối Database:
APP_NAME="Binance Portfolio Manager"
APP_ENV=production
APP_DEBUG=false
APP_URL=https://your-domain.com
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=your_database_user
DB_PASSWORD=your_database_password3. Khởi tạo Cơ sở dữ liệu và Frontend
# Chạy Migrations để tạo các bảng trong Database
php artisan migrate --force
# Build giao diện Vue.js cho môi trường Production
npm run build4. Thiết lập Cron Jobs & Supervisor (RẤT QUAN TRỌNG) Hệ thống sử dụng rất nhiều Background Jobs (Tiến trình ngầm) để đồng bộ hàng nghìn giao dịch mà không làm đơ trang web. Bạn BẮT BUỘC phải thiết lập Queue worker và Scheduler.
Thiết lập Cron Job (Cron Schedule):
Mở crontab trên server (crontab -e) và thêm dòng sau để Laravel tự động kích hoạt các lệnh đồng bộ định kỳ:
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1Thiết lập Supervisor (Queue Worker):
Tạo file cấu hình cho Supervisor /etc/supervisor/conf.d/binance-worker.conf:
[program:binance-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /path-to-your-project/artisan queue:work --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
user=www-data
numprocs=4
stdout_logfile=/path-to-your-project/storage/logs/worker.log
stopwaitsecs=3600Sau đó khởi động Worker:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start binance-worker:*5. Hoàn tất & Phân quyền File
sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cacheGiờ đây, bạn có thể truy cập vào domain của mình, đăng ký tài khoản mới và thêm API Key (Lưu ý: API Key của Binance chỉ cần quyền Enable Reading, tuyệt đối KHÔNG cấp quyền Spot Trading hay Withdraw).
- Mỗi 5 phút: Gọi Binance API để cập nhật Giá (Prices) cho tất cả các đồng coin trong hệ thống bằng thuật toán Batching.
- Mỗi 1 giờ: Quét toàn bộ các sự thay đổi trong Ví, Đồng bộ Số lượng Coin (Holdings), Lịch sử Trade, P2P, Crypto Transfers, và Asset Transactions (Dust/Swap/Airdrop).
- Lúc 23:55 Hàng ngày: Chụp ảnh (Snapshot) tổng PnL và số dư trong ngày để vẽ Biểu đồ Lịch sử.
(Được cập nhật lần cuối: Tháng 06/2026)