Skip to content

Repository files navigation

🌐 MultiAPI Dashboard

Python License API

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.


✨ Features

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

🛠 Technologies

  • Language: Python 3.8+
  • HTTP Client: requests library
  • Data Formats: JSON, CSV, XML/RSS
  • Logging: Python logging with 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

📦 Installation

Prerequisites

  • Python 3.8 or higher
  • pip (Python package manager)

Steps

# 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.txt

Optional: Configure News API Key

For the best news experience, get a free API key from NewsData.io (no credit card required):

  1. Register at newsdata.io
  2. Copy your API key from the dashboard
  3. Open config.py and 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.


🚀 How to Run

python main.py

📁 Project Structure

MultiAPI-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

📸 Screenshots

Main Menu

Main Menu

Weather Result

Weather Result

Cryptocurrency Result

Cryptocurrency Result

News Result

News Result

Search History

Search History

Export to CSV

Export CSV


🔌 API Information

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

🚧 Future Improvements

  • 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 textual or rich
  • 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

📄 License

This project is licensed under the MIT License — see the LICENSE file for details.


🙏 Acknowledgments


Built with ❤️ using Python

A project by Ashwani

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages