A production-quality, command-line Python application that integrates three public APIs into a unified, menu-driven dashboard. Get real-time weather data, cryptocurrency prices, and latest news β all from your terminal.
| Feature | Description |
|---|---|
| π€ Weather | Real-time weather for any city worldwide (temperature, humidity, wind, sunrise/sunset) |
| βΏ Cryptocurrency | Live crypto prices, market cap, 24h changes, rankings (Bitcoin, Ethereum, Solana, etc.) |
| π° News | Search latest news by topic with source filtering |
| π Search History | Persistent history of all searches with timestamps |
| π€ Export | Export results to CSV and JSON formats |
| π¨ Beautiful CLI | ANSI-colored output with ASCII art banner |
| π Auto-Retry | Automatic retry with exponential backoff on failures |
| β‘ Caching | In-memory response caching to reduce API calls |
| π‘ Error Handling | Graceful handling of network, API, and input errors |
- Language: Python 3.8+
- HTTP Client:
requestslibrary - Data Formats: JSON, CSV, XML/RSS
- Logging: Python
loggingwith rotating file handler - APIs Used:
- wttr.in β Weather (no API key required)
- CoinGecko β Cryptocurrency (no API key required)
- NewsData.io β News (free API key) + Google News RSS fallback
- Python 3.8 or higher
- pip (Python package manager)
# 1. Clone the repository
git clone https://github.com/yourusername/MultiAPI-Dashboard.git
cd MultiAPI-Dashboard
# 2. Create a virtual environment (recommended)
python -m venv venv
# 3. Activate the virtual environment
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
# 4. Install dependencies
pip install -r requirements.txtFor the best news experience, get a free API key from NewsData.io (no credit card required):
- Register at newsdata.io
- Copy your API key from the dashboard
- Open
config.pyand paste your key:NEWS_API_KEY = "your_api_key_here"
Note: The app works without a news API key! It automatically falls back to Google News RSS.
python main.pyMultiAPI-Dashboard/
β
βββ main.py # Application entry point & menu system
βββ weather.py # Weather service (wttr.in integration)
βββ crypto.py # Cryptocurrency service (CoinGecko integration)
βββ news.py # News service (NewsData.io + RSS fallback)
βββ history.py # Search history persistence
βββ exporter.py # CSV & JSON export functionality
βββ api_client.py # Centralized HTTP client with retry & caching
βββ config.py # Configuration constants & API URLs
βββ logger.py # Rotating file logger setup
βββ utils.py # UI helpers, banner, spinner, formatting
β
βββ requirements.txt # Python dependencies
βββ README.md # Project documentation
βββ LICENSE # MIT License
βββ .gitignore # Git ignore rules
β
βββ logs/ # Application logs (auto-generated)
β βββ api.log
βββ exports/ # Exported CSV & JSON files
βββ data/ # Persistent data (search history)
β βββ history.json
βββ screenshots/ # Application screenshots
| API | Provider | Auth | Rate Limit | Documentation |
|---|---|---|---|---|
| Weather | wttr.in | None | Generous | wttr.in/:help |
| Crypto | CoinGecko | None | 10-30/min | docs.coingecko.com |
| News | NewsData.io | Free Key | 200/day | newsdata.io/docs |
| News (fallback) | Google News RSS | None | Unlimited | RSS Feed |
- Currency conversion β Display crypto prices in multiple currencies (EUR, INR, GBP)
- Weather forecast β Show 3-day and 7-day weather forecasts
- Watchlist β Save favorite cryptocurrencies and cities
- Rich TUI β Upgrade to a full terminal UI with
textualorrich - Unit tests β Comprehensive pytest test suite with mocked API calls
- Docker β Containerize the application
- Config file β Move settings to a YAML/TOML config file
- API key rotation β Support multiple news API keys
- SQLite history β Upgrade from JSON to SQLite for history storage
- Charts β ASCII price charts for cryptocurrency trends
This project is licensed under the MIT License β see the LICENSE file for details.
- wttr.in β Free weather API by Igor Chubin
- CoinGecko β Free cryptocurrency data API
- NewsData.io β Free news API
- Google News β RSS feed for news fallback
Built with β€οΈ using Python
A project by Ashwani





