A professional-grade Telegram bot for weather monitoring, environmental alerts, and enterprise integrations.
- Real-time Weather Data: Current conditions with comprehensive metrics
- 5-Day Forecasts: Detailed weather predictions
- Air Quality Monitoring: AQI and pollutant tracking
- Location Management: Multiple saved locations with GPS support
- Multi-language Support: Ukrainian, English, German, French, Spanish
- Advanced Alert System: Custom thresholds and conditions
- Slack/Teams Integration: Automated notifications
- Role-Based Access Control: Admin, moderator, and user roles
- Monitoring & Analytics: Prometheus metrics and Grafana dashboards
- High Availability: Redis caching and PostgreSQL clustering
- Scalable Architecture: Microservices-ready design
- Comprehensive Testing: Unit, integration, and E2E tests
- Production Ready: Docker containerization and CI/CD
- Enterprise Security: Rate limiting, input validation, audit logs
- Go 1.21+
- Docker & Docker Compose
- Telegram Bot Token (from @BotFather)
- OpenWeatherMap API Key
# 1. Clone and initialize
git clone https://github.com/valpere/shopogoda.git
cd shopogoda
make init
# 2. Configure environment
cp .env.example .env
# Edit .env with your API keys
# 3. Start development environment
make dev
# 4. Run the bot
make run
Edit .env
file with your credentials:
TELEGRAM_BOT_TOKEN=your_telegram_bot_token
OPENWEATHER_API_KEY=your_openweather_api_key
SLACK_WEBHOOK_URL=your_slack_webhook_url
Access the monitoring stack:
- Grafana: http://localhost:3000 (admin/admin123)
- Prometheus: http://localhost:9090
- Jaeger Tracing: http://localhost:16686
- Bot Health: http://localhost:8080/health
- Metrics: http://localhost:8080/metrics
shopogoda/
├── cmd/bot/ # Application entrypoints
├── internal/ # Private application code
│ ├── bot/ # Bot initialization and setup
│ ├── config/ # Configuration management
│ ├── database/ # Database connections
│ ├── handlers/ # Telegram command handlers
│ ├── middleware/ # Bot middleware (auth, logging)
│ ├── models/ # Data models and structs
│ └── services/ # Business logic services
├── pkg/ # Public libraries
│ ├── weather/ # Weather API clients
│ ├── alerts/ # Alert engine
│ └── metrics/ # Prometheus metrics
└── deployments/ # Docker, K8s configurations
make help # Show all available commands
make deps # Install dependencies
make build # Build the application
make test # Run tests
make test-coverage # Run tests with coverage
make lint # Run linter
make docker-build # Build Docker image
make migrate # Run database migrations
# Build and run with Docker
docker build -t shopogoda .
docker run -p 8080:8080 --env-file .env shopogoda
The bot is ready for deployment on:
- Google Cloud Platform (GKE)
- AWS (EKS)
- Azure (AKS)
- Railway, Render, Fly.io (free tiers)
- Response Time: < 200ms average
- Throughput: 1000+ requests/minute
- Uptime: 99.9% SLA
- Cache Hit Rate: > 85%
- Input validation and sanitization
- Rate limiting (10 requests/minute per user)
- SQL injection prevention (GORM ORM)
- Secure credential management
- Audit logging for compliance
- Native Ukrainian language support
- Local weather patterns and seasonal considerations
- Integration potential with Ukrainian emergency services
- Time zone support for Ukrainian regions
This project is licensed under the MIT License - see the LICENSE file for details.
For enterprise support and custom development:
- Email: valentyn.solomko@gmail.com
- LinkedIn: valentynsolomko
- GitHub: valpere
Built with ❤️ by Valentyn Solomko - Senior Backend Engineering Leader