help@rskworld.in +91 93305 39277
RSK World
  • Home
  • Development
    • Web Development
    • Mobile Apps
    • Software
    • Games
    • Project
  • Technologies
    • Data Science
    • AI Development
    • Cloud Development
    • Blockchain
    • Cyber Security
    • Dev Tools
    • Testing Tools
  • Blog
  • About
  • Contact

Theme Settings

Color Scheme
Display Options
Font Size
100%
Back to Project
RSK World
weather-chatbot
RSK World
weather-chatbot
Weather Chatbot - Python + Flask + OpenWeatherMap + OpenAI + Weather Forecast + Weather Alerts + Natural Language Processing
weather-chatbot
  • __pycache__
  • cache
  • logs
  • scripts
  • sessions
  • static
  • templates
  • tests
  • utils
  • .dockerignore778 B
  • .env.example1.5 KB
  • .gitignore2.4 KB
  • .pre-commit-config.yaml1 KB
  • API.md7.9 KB
  • CHANGELOG.md2.4 KB
  • CHECKLIST.md5.4 KB
  • CONTRIBUTING.md1.9 KB
  • Dockerfile1.4 KB
  • FEATURES.md7.1 KB
  • FINAL_CHECK.md6.7 KB
  • GITHUB_RELEASE_INSTRUCTIONS.md5.4 KB
  • INSTALL.md4 KB
  • LICENSE1.3 KB
  • MANIFEST.in553 B
  • Makefile2 KB
  • PROJECT_SUMMARY.md12.9 KB
  • README.md7.2 KB
  • RELEASE_NOTES_v1.0.0.md8.9 KB
  • VERIFICATION_REPORT.md9.2 KB
  • app.py22.2 KB
  • chatbot.py1.7 KB
  • config.py4.9 KB
  • docker-compose.yml2.2 KB
  • nginx.conf2.3 KB
  • pytest.ini549 B
  • requirements.txt1.9 KB
  • run.py3.1 KB
  • setup.py3.1 KB
  • weather_api.py578 B
README.mdconfig.py
README.md
Raw Download

README.md

# Weather Chatbot ๐ŸŒค๏ธ

**Author:** RSK World (https://rskworld.in)
**Founded by:** Molla Samser
**Designer & Tester:** Rima Khatun
**Contact:** +91 93305 39277, hello@rskworld.in, support@rskworld.in
**Location:** Nutanhat, Mongolkote, Purba Burdwan, West Bengal, India, 713147
**Year:** 2026

A sophisticated weather chatbot providing real-time weather forecasts, alerts, and comprehensive weather information using natural language processing.

## ๐ŸŒŸ Features

- **Real-time Weather Data**: Get current weather conditions for any city worldwide
- **Weather Forecasts**: 5-day weather forecasts with detailed information
- **Weather Alerts**: Real-time weather alerts and warnings for specific locations
- **Natural Language Processing**: Chat interface powered by OpenAI API for intelligent conversations
- **Location-based Services**: Automatic location detection and weather data
- **Web Interface**: Beautiful, responsive web interface
- **API Endpoints**: RESTful API for integration with other services
- **Multiple Query Types**: Support for current weather, forecasts, and alerts
- **Fallback Support**: Works without OpenAI API using keyword matching

## ๐Ÿ› ๏ธ Technologies Used

- **Python 3.8+**: Core programming language
- **Flask**: Web framework for the application
- **OpenWeatherMap API**: Weather data provider
- **OpenAI API**: Natural language processing (optional)
- **HTML/CSS/JavaScript**: Frontend interface
- **Bootstrap**: UI framework for responsive design
- **Requests**: HTTP library for API calls

## ๐Ÿ“‹ Prerequisites

- Python 3.8 or higher
- OpenWeatherMap API key (free at https://openweathermap.org/api)
- OpenAI API key (optional, for enhanced NLP)
- Git for cloning the repository

## ๐Ÿš€ Quick Start

### 1. Clone the Repository

```bash
git clone https://github.com/rskworld/weather-chatbot.git
cd weather-chatbot
```

### 2. Create Virtual Environment

```bash
python -m venv venv

# Windows
venv\Scripts\activate

# macOS/Linux
source venv/bin/activate
```

### 3. Install Dependencies

```bash
pip install -r requirements.txt
```

### 4. Configure Environment Variables

```bash
# Copy the example environment file
cp .env.example .env

# Edit .env file with your API keys
# OPENWEATHER_API_KEY=your_openweathermap_api_key_here
# OPENAI_API_KEY=your_openai_api_key_here
```

### 5. Run the Application

```bash
python app.py
```

The application will be available at `http://localhost:5000`

## ๐Ÿ”ง Configuration

### Required Environment Variables

- `OPENWEATHER_API_KEY`: Your OpenWeatherMap API key (required)
- `OPENAI_API_KEY`: Your OpenAI API key (optional, for enhanced NLP)

### Optional Configuration

- `SECRET_KEY`: Flask secret key for sessions
- `HOST`: Server host (default: 0.0.0.0)
- `PORT`: Server port (default: 5000)
- `WEATHER_UNITS`: Temperature units (metric/imperial/kelvin)
- `DEFAULT_CITY`: Default city for weather queries

## ๐Ÿ“ก API Endpoints

### Chat Interface
- `POST /chat` - Send chat message and get weather response

### Weather Data
- `GET /weather/<city>` - Get current weather for a city
- `GET /forecast/<city>` - Get 5-day forecast for a city
- `GET /alerts/<city>` - Get weather alerts for a city

### System
- `GET /health` - Health check endpoint
- `GET /` - Main web interface

## ๐Ÿ’ฌ Usage Examples

### Basic Weather Queries
- "What's the weather in London?"
- "How's the weather in New York today?"
- "Tell me about the weather in Tokyo"

### Forecast Queries
- "What's the forecast for Paris tomorrow?"
- "Will it rain in Mumbai this week?"
- "Weather forecast for Delhi next 5 days"

### Alert Queries
- "Any weather alerts for Sydney?"
- "Are there warnings for Beijing?"
- "Weather alerts in Dubai"

## ๐ŸŽฏ Supported Features

### Weather Information
- Temperature (current, feels like)
- Humidity and pressure
- Wind speed and direction
- Weather description and conditions
- Visibility
- Sunrise and sunset times

### Forecast Data
- Hourly forecasts (3-hour intervals)
- Daily weather summaries
- Temperature trends
- Precipitation predictions
- Weather condition changes

### Weather Alerts
- Severe weather warnings
- Temperature alerts
- Storm warnings
- Precipitation alerts
- Custom alert thresholds

## ๐ŸŒ Supported Cities

The chatbot supports weather queries for cities worldwide, including:
- Major international cities (London, New York, Paris, Tokyo)
- Indian cities (Delhi, Mumbai, Kolkata, Chennai, Bangalore)
- Regional cities and towns
- Custom location support

## ๐Ÿ”’ Security Features

- Environment variable configuration
- Secure session handling
- Input validation and sanitization
- Rate limiting protection
- CORS configuration
- Error handling and logging

## ๐Ÿ“Š Logging and Monitoring

- Comprehensive logging system
- Error tracking and reporting
- Performance monitoring
- API usage statistics
- Health check endpoints

## ๐Ÿงช Testing

```bash
# Run unit tests
python -m pytest tests/

# Run with coverage
python -m pytest --cov=app tests/

# Run specific test file
python -m pytest tests/test_weather_api.py
```

## ๐Ÿ“ Project Structure

```
weather-chatbot/
โ”œโ”€โ”€ app.py # Main Flask application
โ”œโ”€โ”€ config.py # Configuration settings
โ”œโ”€โ”€ requirements.txt # Python dependencies
โ”œโ”€โ”€ .env.example # Environment variables template
โ”œโ”€โ”€ README.md # Project documentation
โ”œโ”€โ”€ static/ # Static files (CSS, JS, images)
โ”œโ”€โ”€ templates/ # HTML templates
โ”œโ”€โ”€ utils/ # Utility functions
โ”œโ”€โ”€ tests/ # Test files
โ””โ”€โ”€ logs/ # Application logs
```

## ๐Ÿš€ Deployment

### Docker Deployment

```bash
# Build Docker image
docker build -t weather-chatbot .

# Run container
docker run -p 5000:5000 --env-file .env weather-chatbot
```

### Heroku Deployment

```bash
# Install Heroku CLI
heroku create your-app-name

# Set environment variables
heroku config:set OPENWEATHER_API_KEY=your_key
heroku config:set OPENAI_API_KEY=your_key

# Deploy
git push heroku main
```

## ๐Ÿค Contributing

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

## ๐Ÿ“ License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## ๐Ÿ“ž Support

For support and inquiries:

- **Email:** hello@rskworld.in, support@rskworld.in
- **Phone:** +91 93305 39277
- **Website:** https://rskworld.in
- **Location:** Nutanhat, Mongolkote, Purba Burdwan, West Bengal, India, 713147

## ๐Ÿ™ Acknowledgments

- OpenWeatherMap for providing weather data API
- OpenAI for natural language processing capabilities
- Flask framework for web development
- Bootstrap for responsive UI components

---

**ยฉ 2026 RSK World. All rights reserved.**
*Content used for educational purposes only. View Disclaimer: https://rskworld.in/disclaimer.php*
config.py
Raw Download
Find: Go to:
#!/usr/bin/env python3
"""
Weather Chatbot Configuration
============================

Author: RSK World (https://rskworld.in)
Founded by: Molla Samser
Designer & Tester: Rima Khatun
Contact: +91 93305 39277, hello@rskworld.in, support@rskworld.in
Location: Nutanhat, Mongolkote, Purba Burdwan, West Bengal, India, 713147
Year: 2026

Description: Configuration settings for the Weather Chatbot application
"""

import os
from dotenv import load_dotenv

# Load environment variables
load_dotenv()

class Config:
    """Base configuration class for Weather Chatbot"""
    
    # Basic Flask Configuration
    SECRET_KEY = os.getenv('SECRET_KEY', 'weather-chatbot-secret-key-2026')
    DEBUG = os.getenv('FLASK_DEBUG', 'True').lower() == 'true'
    
    # Server Configuration
    HOST = os.getenv('HOST', '0.0.0.0')
    PORT = int(os.getenv('PORT', 5000))
    
    # API Keys
    OPENWEATHER_API_KEY = os.getenv('OPENWEATHER_API_KEY')
    OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
    
    # Weather API Configuration
    WEATHER_UNITS = os.getenv('WEATHER_UNITS', 'metric')
    WEATHER_LANGUAGE = os.getenv('WEATHER_LANGUAGE', 'en')
    DEFAULT_CITY = os.getenv('DEFAULT_CITY', 'London')
    
    # OpenWeatherMap API URLs
    OPENWEATHER_BASE_URL = "https://api.openweathermap.org/data/2.5"
    OPENWEATHER_GEO_URL = "http://api.openweathermap.org/geo/1.0"
    
    # Logging Configuration
    LOG_LEVEL = os.getenv('LOG_LEVEL', 'INFO')
    LOG_FILE = os.getenv('LOG_FILE', 'logs/weather_chatbot.log')
    
    # Rate Limiting
    RATE_LIMIT_ENABLED = os.getenv('RATE_LIMIT_ENABLED', 'True').lower() == 'true'
    RATE_LIMIT_PER_MINUTE = int(os.getenv('RATE_LIMIT_PER_MINUTE', 30))
    
    # Cache Configuration
    CACHE_ENABLED = os.getenv('CACHE_ENABLED', 'False').lower() == 'true'
    CACHE_TTL = int(os.getenv('CACHE_TTL', 300))  # 5 minutes
    
    # Database Configuration (for chat history)
    DATABASE_URL = os.getenv('DATABASE_URL', 'sqlite:///weather_chatbot.db')
    
    # CORS Configuration
    CORS_ORIGINS = os.getenv('CORS_ORIGINS', '*').split(',')
    
    # Security Configuration
    SESSION_COOKIE_SECURE = os.getenv('SESSION_COOKIE_SECURE', 'False').lower() == 'true'
    SESSION_COOKIE_HTTPONLY = os.getenv('SESSION_COOKIE_HTTPONLY', 'True').lower() == 'true'
    SESSION_COOKIE_SAMESITE = os.getenv('SESSION_COOKIE_SAMESITE', 'Lax')
    
    # Application Information
    APP_NAME = "Weather Chatbot"
    APP_VERSION = "1.0.0"
    APP_AUTHOR = "RSK World"
    APP_WEBSITE = "https://rskworld.in"
    APP_YEAR = "2026"
    
    # Supported Cities for Quick Access
    SUPPORTED_CITIES = [
        'London', 'New York', 'Paris', 'Tokyo', 'Delhi', 'Mumbai', 
        'Kolkata', 'Chennai', 'Bangalore', 'Sydney', 'Moscow', 
        'Beijing', 'Dubai', 'Singapore', 'Hong Kong'
    ]
    
    # Weather Alert Thresholds
    ALERT_TEMPERATURE_HIGH = 40.0  # Celsius
    ALERT_TEMPERATURE_LOW = -10.0  # Celsius
    ALERT_WIND_SPEED_HIGH = 20.0   # m/s
    ALERT_HUMIDITY_HIGH = 90.0     # Percentage
    
    @staticmethod
    def validate_config():
        """Validate required configuration settings"""
        errors = []
        
        if not Config.OPENWEATHER_API_KEY:
            errors.append("OPENWEATHER_API_KEY is required")
        
        if errors:
            raise ValueError("Configuration validation failed: " + ", ".join(errors))
        
        return True
    
    @staticmethod
    def get_app_info():
        """Get application information"""
        return {
            'name': Config.APP_NAME,
            'version': Config.APP_VERSION,
            'author': Config.APP_AUTHOR,
            'website': Config.APP_WEBSITE,
            'year': Config.APP_YEAR,
            'contact': {
                'phone': '+91 93305 39277',
                'email': 'hello@rskworld.in',
                'support': 'support@rskworld.in'
            },
            'location': 'Nutanhat, Mongolkote, Purba Burdwan, West Bengal, India, 713147'
        }

class DevelopmentConfig(Config):
    """Development configuration"""
    DEBUG = True
    LOG_LEVEL = 'DEBUG'

class ProductionConfig(Config):
    """Production configuration"""
    DEBUG = False
    SESSION_COOKIE_SECURE = True
    LOG_LEVEL = 'WARNING'

class TestingConfig(Config):
    """Testing configuration"""
    TESTING = True
    DEBUG = True
    OPENWEATHER_API_KEY = 'test_key'
    OPENAI_API_KEY = 'test_key'

# Configuration mapping
config_map = {
    'development': DevelopmentConfig,
    'production': ProductionConfig,
    'testing': TestingConfig,
    'default': DevelopmentConfig
}

def get_config(config_name=None):
    """Get configuration based on environment"""
    if config_name is None:
        config_name = os.getenv('FLASK_ENV', 'default')
    
    return config_map.get(config_name, DevelopmentConfig)
151 linesโ€ข4.9 KB
python

About RSK World

Founded by Molla Samser, with Designer & Tester Rima Khatun, RSK World is your one-stop destination for free programming resources, source code, and development tools.

Founder: Molla Samser
Designer & Tester: Rima Khatun

Development

  • Game Development
  • Web Development
  • Mobile Development
  • AI Development
  • Development Tools

Legal

  • Terms & Conditions
  • Privacy Policy
  • Disclaimer

Contact Info

Nutanhat, Mongolkote
Purba Burdwan, West Bengal
India, 713147

+91 93305 39277

hello@rskworld.in
support@rskworld.in

© 2026 RSK World. All rights reserved.

Content used for educational purposes only. View Disclaimer