ShoPogoda v0.1.0-demo
Enterprise Telegram Weather Bot with Comprehensive Demo Mode
This is the first major release of ShoPogoda (Що Погода), a production-ready Telegram bot for enterprise weather monitoring, environmental alerts, and safety compliance.
🎯 What's New in This Release
🌟 Demo Mode
Perfect for testing, presentations, and development:
- Auto-Seed Data: Enable with
DEMO_MODE=trueenvironment variable - Demo User: Pre-configured user (ID: 999999999) in Kyiv, Ukraine
- Realistic Data: 24 hours of weather data with natural temperature patterns
- Pre-configured Alerts: 3 alert configurations for temperature, humidity, and AQI
- Active Subscriptions: 3 notification subscriptions (daily, weekly, alerts)
- Admin Commands:
/demoreset- Clear and re-seed fresh demo data/democlear- Remove all demo data
- Documentation: Complete guide in docs/DEMO_MODE.md
☁️ Core Weather Services
- Real-time weather data via OpenWeatherMap API
- 5-day forecasts with 3-hour intervals
- Air quality monitoring (AQI + pollutant tracking)
- Location management (GPS and text-based)
- Timezone-aware displays
🚨 Enterprise Features
- Custom Alert System: User-defined thresholds with severity levels
- Scheduled Notifications: Dual-platform delivery (Telegram + Slack)
- Role-Based Access: Admin, Moderator, User roles
- Monitoring Stack: Prometheus + Grafana + Jaeger
- Data Export: JSON, CSV, TXT formats
🌍 Multi-Language Support
Complete localization in 5 languages:
- English (en)
- Ukrainian (uk)
- German (de)
- French (fr)
- Spanish (es)
📊 Data Management
- Data Export System: Weather data (30 days), alerts (90 days), subscriptions
- Location Simplification: Single location per user
- Timezone Independence: Separate location and timezone management
🤖 Bot Commands
User Commands
/start- Welcome and introduction/help- Command list/weather [location]- Current weather/forecast [location]- 5-day forecast/air [location]- Air quality/setlocation- Set location (GPS or text)/subscribe- Manage notifications/addalert- Create alerts/settings- User preferences
Admin Commands
/stats- System statistics/broadcast- Message all users/users- User management/demoreset- Reset demo data/democlear- Clear demo data
🏗️ Technical Stack
- Language: Go 1.24
- Bot Framework: gotgbot v2
- Database: PostgreSQL (GORM ORM)
- Cache: Redis
- Containerization: Docker
- CI/CD: Automated testing and deployment
- Monitoring: Prometheus, Grafana, Jaeger
- Test Coverage: 27.4%
🚀 Quick Start
With Demo Mode
# Clone repository
git clone https://github.com/valpere/shopogoda.git
cd shopogoda
# Copy environment file
cp .env.example .env
# Configure .env
TELEGRAM_BOT_TOKEN=your_bot_token
OPENWEATHER_API_KEY=your_api_key
DEMO_MODE=true
# Start services
make docker-up
# Run bot
make runDemo data will be automatically seeded on startup!
Production Deployment
# Set DEMO_MODE=false for production
DEMO_MODE=false
# Use docker-compose
docker-compose up -dSee DEPLOYMENT.md for complete deployment guide.
📝 Documentation
- Demo Mode Guide - Complete demo mode documentation
- Deployment Guide - Production deployment
- Configuration Reference - All configuration options
- API Documentation - API reference
- CHANGELOG - Detailed changelog
🔧 Infrastructure
Monitoring URLs (Local Development)
- Bot Health: http://localhost:8080/health
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3000 (admin/admin123)
- Jaeger: http://localhost:16686
Database
- PostgreSQL with GORM ORM
- Migrations handled automatically
- Connection pooling (25 connections)
Caching
- Redis with TTL:
- Weather: 10 minutes
- Forecasts: 1 hour
- Geocoding: 24 hours
🧪 Testing
# Run tests
make test
# Coverage report
make test-coverage
# Integration tests
make test-integrationTest Coverage: 27.4%
- Version package: 100%
- Services: 71.3%
- Config: 98.2%
- Models: 99.0%
🙏 Credits
Built with:
- gotgbot - Telegram Bot API
- GORM - ORM
- Redis - Caching
- Viper - Configuration
- Zerolog - Logging
- Prometheus - Monitoring
📧 Support
- GitHub Issues: https://github.com/valpere/shopogoda/issues
- Email: [email protected]
📄 License
This project is licensed under the MIT License.
🤖 Generated with Claude Code