Live ISS Urine Tank Telemetry Visualization
🌐 Live Demo: https://piss.h4ks.com
pISSgraph is a real-time monitoring system that tracks and visualizes the ISS urine tank levels using NASA's live telemetry data. The system consists of a FastAPI backend that polls telemetry data and a React frontend that displays interactive charts.
- Real-time ISS urine tank level monitoring
- Interactive time-series charts with multiple zoom levels
- Data persistence with change-only logging
- Docker containerized deployment
- Responsive web interface
- RESTful API with OpenAPI documentation
-
Clone the repository
-
Copy environment files:
cp .env.example .env cp backend/.env.example backend/.env cp frontend/.env.example frontend/.env
-
Start with Docker Compose:
docker compose up --build
-
Access the application:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- API Documentation: http://localhost:8000/docs
-
If no data appears initially, you can seed the database with sample data:
curl -X POST http://localhost:8000/telemetry/seed
-
To clear all telemetry data from the database:
curl -X DELETE http://localhost:8000/telemetry/clear
Note: Both seed and clear endpoints can be disabled by setting
ENABLE_SEED_ENDPOINT=false
- Telemetry Service: Connects to NASA's Lightstreamer feed
- Database: SQLite with SQLAlchemy ORM
- API: FastAPI with automatic OpenAPI generation
- Polling: Configurable interval data collection
- Charts: Recharts library for data visualization
- Styling: Tailwind CSS
- Build: Vite with TypeScript
- Deployment: Nginx container
cd backend
uv sync
uv run python -m pissgraph.maincd frontend
pnpm install
pnpm devBACKEND_PORT: Backend port (default: 8000)FRONTEND_PORT: Frontend port (default: 3000)POLLING_INTERVAL: Data polling interval in seconds (default: 60)ENABLE_SEED_ENDPOINT: Enable/disable sample data seeding endpoint (default: true)
PORT: Server portDATABASE_PATH: SQLite database file pathPOLLING_INTERVAL: Telemetry polling intervalCORS_ORIGINS: Allowed CORS originsENABLE_SEED_ENDPOINT: Enable/disable sample data seeding endpoint (default: true)
VITE_API_BASE_URL: Backend API URL
Data is sourced from NASA's live ISS telemetry stream via the ISS Mimic project, specifically monitoring the urine tank level sensor (NODE3000005).
MIT License