A comprehensive tire monitoring system with real-time sensor data visualization, mobile and web dashboards.
- Live sensor data streaming via WebSocket
- 4-8 tire sensors simulation
- Real-time charts and visualizations
- Auto-reconnection on disconnection
- Tire Pressure (PSI)
- Temperature (Β°C)
- Tread Depth (mm)
- Status Indicators (Normal/Warning/Critical)
- Web Dashboard: Desktop-optimized with advanced charts
- Mobile Dashboard: Mobile-optimized responsive UI
- Landing Page: Marketing/information page
βββββββββββββββββββ
β Frontend Apps β
β - Landing β
β - Web Dash β
β - Mobile Dash β
ββββββββββ¬βββββββββ
β WebSocket
β
ββββββββββΌβββββββββ
β Backend API β
β Node.js + β
β WebSocket β
ββββββββββ¬βββββββββ
β
ββββββββββΌβββββββββ
β Sensor Simulatorβ
β (4-8 sensors) β
βββββββββββββββββββ
-
Backend (
itire-backend) - Node.js + Express + WebSocket- Port: 3001
- WebSocket:
ws://localhost:3001 - REST API:
http://localhost:3001/api
-
Landing Page (
itire-landing-page) - React + Vite- Port: 25000
- URL: http://localhost:25000
-
Mobile Dashboard (
itire-mobile-dashboard) - React + Vite- Port: 25001
- URL: http://localhost:25001
-
Web Dashboard (
itire-web-dashboard) - React + Vite- Port: 25002
- URL: http://localhost:25002
- Docker & Docker Compose
- Node.js 18+ (for local development)
- Build and start all services:
docker-compose build
docker-compose up- Access the applications:
- Landing Page: http://localhost:25000
- Mobile Dashboard: http://localhost:25001
- Web Dashboard: http://localhost:25002
- Backend API: http://localhost:3001/api/sensors
- Start Backend:
cd itire-backend
npm install
npm run dev- Start Web Dashboard:
cd itire-web-dashboard
npm install
npm run dev- Start Mobile Dashboard:
cd itire-mobile-dashboard
npm install
npm run devCreate .env files based on .env.example:
Frontend Apps (web-dashboard, mobile-dashboard):
REACT_APP_WS_URL=ws://localhost:3001Backend:
PORT=3001
NODE_ENV=productionThe backend simulates realistic tire sensor data:
- Update Frequency: Every 2 seconds
- Number of Sensors: 4-8 (configurable)
- Data Points: Pressure, Temperature, Tread Depth
- Status Logic: Automatic warning/critical detection
| Status | Pressure (PSI) | Temperature (Β°C) | Tread Depth (mm) |
|---|---|---|---|
| Normal | 28-38 | < 40 | > 3 |
| Warning | 25-28 or 38-40 | > 40 | 1.6-3 |
| Critical | < 25 or > 40 | - | < 1.6 |
- React 18
- TypeScript
- Vite
- TailwindCSS
- shadcn/ui components
- Recharts (data visualization)
- WebSocket client
- Node.js
- Express.js
- WebSocket (ws library)
- Docker
- β Real-time line charts
- β Multiple sensor monitoring
- β Historical data tracking
- β Status alerts and notifications
- β Connection status indicator
- β Summary statistics
- β Mobile-optimized layout
- β Touch-friendly interface
- β Live sensor cards
- β Quick status overview
- β Minimal data usage
- β Connection management
# Health check
GET /api/health
# Get all sensors
GET /api/sensors
# Get specific sensor
GET /api/sensors/:idClient β Server: Connection only (no messages required)
Server β Client:
{
"type": "initial" | "update",
"data": [...sensors],
"timestamp": "ISO-8601"
}- Ensure backend is running on port 3001
- Check CORS settings if accessing from different origin
- Verify
REACT_APP_WS_URLenvironment variable
# Rebuild containers
docker-compose down
docker-compose build --no-cache
docker-compose up
# View logs
docker-compose logs -f backend
docker-compose logs -f web-dashboardIf ports are already in use, update docker-compose.yml:
ports:
- "YOUR_PORT:80" # Change YOUR_PORT- Update
TireSensorclass initire-backend/server.js - Add new data fields
- Update TypeScript interfaces in dashboard contexts
- Add UI components for new data
In itire-backend/server.js:
const UPDATE_INTERVAL = 2000; // Change to your desired interval (ms)- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request
MIT License - see LICENSE file for details
- Built with React, Node.js, and WebSocket
- UI components from shadcn/ui
- Charts powered by Recharts