A lightweight Rust application that displays real-time cryptocurrency prices on your Dot device
- πͺ Multi-Crypto Support: Bitcoin (BTC), Ethereum (ETH), and Tether (USDT)
- π± Optimized Display: Mini mode designed specifically for Dot device screens
- π Real-time Updates: Live 24-hour price change indicators with trend arrows
- β‘ Configurable: Customizable refresh intervals (default: 10 minutes)
- π Secure: Environment-based configuration for API keys
- π Reliable: Uses Binance API for accurate, real-time data
- π 24/7 Running: Background service support for continuous operation
- Rust 1.70+ installed
- Dot device with Text API content enabled
- Dot API key and device ID
- Clone the repository:
git clone https://github.com/Linus-Shyu/dot-crypto-ticker.git
cd dot-crypto-ticker- Install dependencies:
cargo build --release- Configure your environment:
cp env.example .env- Edit
.envwith your Dot device credentials:
DOT_API_KEY=your_dot_api_key_here
DOT_DEVICE_ID=your_device_serial_number_here
DOT_TITLE=Crypto Prices- Run the application:
cargo runThe application displays cryptocurrency prices in a compact, easy-to-read format:
BTC $111,266.93 β+2.44%
ETH $4,039.08 β+1.23%
USDT $0.9997 β+0.01%
- Price formatting: Includes thousand separators for large numbers
- Change indicators: β for gains, β for losses
- Percentage changes: Shows 24-hour price change percentage
| Variable | Description | Required | Default |
|---|---|---|---|
DOT_API_KEY |
Your Dot API key from the Dot app | β Yes | - |
DOT_DEVICE_ID |
Your Dot device serial number | β Yes | - |
DOT_TITLE |
Display title on Dot device | β No | "Crypto Prices" |
| Option | Description | Default | Example |
|---|---|---|---|
--interval-secs |
Update interval in seconds | 600 (10 min) |
--interval-secs 300 |
# Run with default settings (10-minute updates)
cargo run
# Run with 5-minute updates
cargo run -- --interval-secs 300
# Run with 1-minute updates (for testing)
cargo run -- --interval-secs 60- Open the Dot App on your phone
- Go to Content Studio
- Add "Text API content" to your device
- Note your API Key and Device Serial Number
- Copy
env.exampleto.env - Fill in your actual API credentials
- Optionally customize the display title
cargo runThe application will start fetching prices and displaying them on your Dot device every 10 minutes.
For continuous operation, set up the application to run as a background service on macOS.
- Build the release version:
cargo build --release- Create LaunchAgent configuration:
# Create LaunchAgents directory if it doesn't exist
mkdir -p ~/Library/LaunchAgents
# Copy the provided plist file to LaunchAgents
cp com.username.dot-crypto-ticker.plist ~/Library/LaunchAgents/-
Edit the plist file with your actual username and paths
-
Load and start the service:
# Load the service
launchctl load ~/Library/LaunchAgents/com.username.dot-crypto-ticker.plist
# Start the service
launchctl start com.username.dot-crypto-ticker| Command | Description |
|---|---|
launchctl list | grep dot-crypto |
Check service status |
launchctl start com.username.dot-crypto-ticker |
Start the service |
launchctl stop com.username.dot-crypto-ticker |
Stop the service |
launchctl unload ~/Library/LaunchAgents/com.username.dot-crypto-ticker.plist |
Unload service completely |
- Normal logs:
crypto-ticker.log - Error logs:
crypto-ticker-error.log
# View real-time logs
tail -f crypto-ticker.log
# View error logs
tail -f crypto-ticker-error.log- β Auto-start: Starts automatically on system boot
- β Auto-restart: Automatically restarts if the application crashes
- β Background: Runs in the background without terminal window
- β Logging: Comprehensive logging for monitoring and debugging
- β System Integration: Uses macOS native service management
# Debug build
cargo build
# Release build (optimized)
cargo build --releasecargo testRUST_LOG=debug cargo run- Rust: 1.70 or later
- Internet: Required for API calls
- Dot Device: With Text API content enabled
- Memory: ~8MB RAM usage
- Storage: ~2MB disk space
| Issue | Solution |
|---|---|
Device has no text API content |
Add "Text API content" in Dot App β Content Studio |
API key request too frequent |
Increase --interval-secs (minimum: 60 seconds) |
Failed to fetch from Binance |
Check internet connection and API availability |
Missing DOT_API_KEY |
Ensure .env file exists with correct API key |
- π Check the Issues page
- π Review the Dot API Documentation
- π¬ Open a new issue for bugs or feature requests
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow Rust naming conventions
- Add tests for new features
- Update documentation as needed
- Keep the code clean and readable
This project is licensed under the MIT License - see the LICENSE file for details.
- Dot for the amazing device and API
- Binance for reliable cryptocurrency data
- Rust community for excellent tooling
- π Initial stable release
- β¨ Multi-cryptocurrency support (BTC, ETH, USDT)
- π± Optimized Mini mode for Dot device screens
- π 24/7 background running with LaunchAgent
- π Real-time price change indicators
- π Secure environment-based configuration
- π Comprehensive documentation and setup guides
- Support for more cryptocurrencies
- Custom price alerts
- Historical price charts
- Multiple Dot device support
- Web dashboard for configuration
Made with β€οΈ for the Dot community