
A modern Tesla data visualization dashboard that connects to TeslaMate database with cyberpunk-style design.
🌟 Online Demo
- Frontend Access: https://tsl.deaglepc.cn/
- Backend API: https://tsldemo.deaglepc.cn (Auto-filled,backend with mock data for demonstration purposes)
| 🏠 Home | 🛣️ Drives | ⚡ Charges |
|---|---|---|
![]() |
![]() |
![]() |
| 🛣️ Drive Detail | ⚡ Charge Detail | ⚙️ Settings |
![]() |
![]() |
![]() |
This dashboard fully supports PWA, providing an immersive experience comparable to native apps: - Instant Loading - Supports local offline caching of core resources - Install to Desktop/Home Screen - One-click "Install to device" on desktop (Chrome/Edge) or mobile (iOS/Android) - Native Immersion - Hides browser status bar and navigation bar, presenting a full-screen borderless cyberpunk experience on iOS
💡 Best Practices: We recommend not using it directly within a browser frequently. Please click "Share" -> "Add to Home Screen" at the bottom of your mobile browser (like Safari), or click the "Install App" icon on the right side of the address bar in your desktop browser. Run it as a standalone App for the perfect experience.
graph TD
A[Tesla API] --> B[TeslaMate] --> C[PostgreSQL]
C -- Read-only --> D[CyberUI Backend]
D -- API --> E[CyberUI Frontend]
TeslaMate CyberUI is an independent visualization dashboard that: - 🔗 Read-only access to TeslaMate's PostgreSQL database - 📊 Does not modify any TeslaMate data - 🚀 Independent deployment, does not affect TeslaMate operation - 🔄 Real-time reading of data recorded by TeslaMate
TeslaMate comes with Grafana dashboards, but: - Grafana is more focused on data analysis, less intuitive - CyberUI provides a more modern mobile-friendly interface - Independent deployment, can serve as a supplementary view for TeslaMate
CyberUI needs to access TeslaMate's PostgreSQL database. You need to ensure:
If your TeslaMate is deployed with Docker, ensure database port is accessible:
# TeslaMate's docker-compose.yml example
services:
database:
image: postgres:15
# Expose port or use external network
ports:
- "5432:5432" # Optional: expose for host access
Add CyberUI to TeslaMate's network:
# CyberUI's docker-compose.yml
services:
backend:
networks:
- teslamate_default # TeslaMate's network
networks:
teslamate_default:
external: true
The simplest way is to connect via environment variables:
# Create .env file
TESLAMATE_DB_HOST=your-teslamate-db-host
TESLAMATE_DB_PORT=5432
TESLAMATE_DB_USER=teslamate
TESLAMATE_DB_PASSWORD=your-password
TESLAMATE_DB_NAME=teslamate
# 1. Clone the project
git clone https://github.com/DeaglePC/TeslamateCyberUI.git
cd TeslamateCyberUI
# 2. Create configuration file (edit as needed)
cp .env.example .env
# Edit .env with your TeslaMate database connection info
# vi .env
# 3. Start services
docker compose up -d
# 4. View logs
docker compose logs -f
# 5. Access the application
# http://localhost:8080
If you don't have a TeslaMate database locally, you can enable Mock data mode for frontend development and UI preview:
# Backend
cd backend
go mod download
# Temporarily enable the mock data environment variable
export CYBERUI_MOCK_DATA=true
go run cmd/server/main.go
# Frontend (in a new terminal window)
cd frontend
npm install
npm run dev
# Backend
cd backend
go mod download
# Configure real database connection via .env / environment variables / configs/config.yaml
go run cmd/server/main.go
# Frontend (in a new terminal window)
cd frontend
npm install
npm run dev
| Variable | Description | Default | Required |
|---|---|---|---|
TESLAMATE_DB_HOST |
TeslaMate database host | - | ✅ |
TESLAMATE_DB_PORT |
Database port | 5432 |
|
TESLAMATE_DB_USER |
Database username | - | ✅ |
TESLAMATE_DB_PASSWORD |
Database password | - | ✅ |
TESLAMATE_DB_NAME |
Database name | teslamate |
|
TESLAMATE_DB_SSLMODE |
SSL mode | disable |
| Variable | Description | Default |
|---|---|---|
CYBERUI_PORT |
Frontend web access port | 8080 |
CYBERUI_API_PORT |
Backend API port (for debugging) | 8899 |
CYBERUI_SERVER_MODE |
Run mode (debug / release) |
release |
LOG_LEVEL |
Log level (debug / info / warn / error) |
info |
TZ |
Timezone | Asia/Shanghai |
| Variable | Description | Default |
|---|---|---|
VITE_API_BASE_URL |
Frontend default API address (build-time only) | empty |
CYBERUI_API_KEY |
API authentication key (empty to disable auth) | empty |
💡 You can pass the backend address and API Key via URL parameters, e.g.:
https://tsl.deaglepc.cn/?backend=https://tsldemo.deaglepc.cn/&apikey=xxx
| Variable | Description | Default |
|---|---|---|
UMAMI_WEBSITE_ID |
Umami Website ID (empty to disable) | empty |
UMAMI_SCRIPT_URL |
Umami script URL | https://cloud.umami.is/script.js |
| Variable | Description | Default |
|---|---|---|
CYBERUI_MOCK_DATA |
Enable mock data mode (true / false) |
false |
⚠️ Important: Must select "Web端 (JS API)" type, cannot use "Web服务" type.
| Feature | Description |
|---|---|
| Vehicle Image | Auto-match Tesla official image based on model and color |
| Battery Display | Battery icon + percentage, turns red below 20% |
| Status Info | Current state (driving/charging/online/offline/asleep) |
| Location Map | Current vehicle location with address |
| Stats Cards | Range, mileage, software version, temperature |
| SOC Chart | Battery level change curve |
| Timeline | State change timeline visualization |
| Feature | Description |
|---|---|
| List Filter | Filter charging records by time range |
| Charging Details | Level curve, power curve |
| Charging Stats | Duration, energy, cost |
| Location Map | Charging location display |
| Feature | Description |
|---|---|
| List Filter | Filter driving records by time range |
| Driving Details | Speed curve, power curve, elevation changes |
| Route Map | Amap/OpenStreetMap dual map sources |
| Driving Stats | Distance, duration, averag |
$ claude mcp add TeslamateCyberUI \
-- python -m otcore.mcp_server <graph>