A modern, mobile-friendly GraphQL query builder for the DIMO Telemetry API. This full-stack application allows you to easily explore vehicle telemetry data with a beautiful, responsive interface.
- 📱 Mobile-First Design - Optimized for mobile devices with responsive layouts
- 🔐 Full Authentication Flow - Automatic Vehicle JWT generation using DIMO Python SDK
- 📊 Dual Query Support - Both
signalsLatestand historicalsignalsqueries - 🎯 Smart Aggregations - Automatic Float vs String aggregation detection
- ✨ Modern UI - Beautiful gradients, animations, and visual feedback
- 🔧 Developer Friendly - Built-in query generation and copying
This is a full-stack application with:
- Frontend: React + Vite + Tailwind CSS
- Backend: FastAPI + DIMO Python SDK
- API Proxying: Vite dev server handles CORS and routing
- Node.js 18+ and npm
- Python 3.8+ and pip
- DIMO Developer License - Get one at DIMO Developer Console
git clone <your-repo-url>
cd dimo-mobile-telemetry
npm installpip install -r requirements.txtYou need to run both the frontend and backend servers:
# Option 1: Using the startup script
python start-backend.py
# Option 2: Direct uvicorn command
python -m uvicorn backend.main:app --host 0.0.0.0 --port 8000 --reloadnpm run devThe application will be available at:
- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
- API Documentation: http://localhost:8000/docs
-
Get DIMO Developer Credentials:
- Visit DIMO Developer Console
- Create a Developer License
- Note your Client ID, Redirect URI, and API Key
-
Find a Vehicle Token ID:
- Use the DIMO Identity API to find available vehicles
- Or ask a DIMO vehicle owner to share their token ID
-
Use the App:
- Open the app and go to the "Auth" tab
- Fill in your Developer License details
- Click "Get Vehicle JWT" - it will automatically authenticate!
- Switch to "Query" tab to build and execute queries
- Enter your Client ID (from Developer License)
- Enter your Redirect URI (your domain)
- Enter your API Key (private key)
- Enter the Vehicle Token ID you want to query
- Click "Get Vehicle JWT" - the backend will handle all authentication steps!
-
Choose Query Type:
- Latest Signals: Current values only
- Historical Signals: Time series data with date ranges
-
Select Date Range (for historical queries):
- Pick start and end dates
- Choose aggregation interval (1h, 6h, 12h, 24h, 1 week)
-
Pick Signals:
- Browse categorized signals (Location, Engine, Battery, etc.)
- Click to select/deselect signals
- For historical queries, choose aggregation methods per signal
-
Execute Query:
- Review the generated GraphQL query
- Click "Execute Query" to run it
- View results in the Results tab
- View raw JSON responses
- See parsed signal values in a user-friendly format
- Different layouts for latest vs historical data
- 📍 Location: GPS coordinates, altitude
- 🚗 Vehicle Status: Speed, ignition, odometer, powertrain type
- 🔋 Battery & Fuel: Charge levels, fuel levels, charging status
- ⚙️ Engine: RPM, temperature, oil level, throttle position
- 🛞 Tire Pressure: All four wheel pressures
- 🌡️ Environment: Temperature, barometric pressure
- 📶 Device/Network: WiFi status, connection state
- 🔧 Diagnostics: Error codes, runtime
The backend provides:
POST /api/auth/vehicle-jwt- Generate Vehicle JWT from credentialsGET /health- Health check endpointGET /- API status and information
# Install dependencies
pip install -r requirements.txt
# Check Python version
python --version # Should be 3.8+
# Run with verbose logging
python -m uvicorn backend.main:app --host 0.0.0.0 --port 8000 --reload --log-level debug# Clear node modules and reinstall
rm -rf node_modules package-lock.json
npm install
# Check Node version
node --version # Should be 18+- ✅ Check your Client ID is correct (should start with
0x) - ✅ Verify your API Key is the private key, not public
- ✅ Ensure Redirect URI matches your Developer License configuration
- ✅ Confirm the Vehicle Token ID exists and you have permissions
The Vite development server handles CORS automatically. If you encounter CORS issues:
- Ensure both servers are running on correct ports
- Check the
vite.config.jsproxy configuration - Verify backend CORS middleware is configured properly
MIT License - feel free to use this for your own DIMO projects!
Built with ❤️ for the DIMO ecosystem