Instant GitHub release notifications via Telegram π¦ β π±
Get notified the moment your favorite repositories release new versions. Built on Cloudflare Workers for global scale and reliability.
- π Real-time notifications for GitHub releases
- π€ Telegram bot interface - chat to manage subscriptions
- ποΈ Smart filters - exclude prereleases, regex patterns
- π Global edge deployment via Cloudflare Workers
- π Free tier friendly - works on Cloudflare's free plan
- β‘ ETag caching for efficient GitHub API usage
- π‘οΈ Secure - no hardcoded secrets, encrypted storage
- Cloudflare account (free tier works)
- GitHub personal access token (
public_reposcope) - Telegram bot (created via @BotFather)
-
Clone and install:
git clone <your-repo> cd gitping npm install
-
Create Cloudflare resources:
wrangler d1 create gitping wrangler kv namespace create POLL_STATE
-
Configure environment:
cp .env.example .env # Edit .env with your database and KV IDs from step 2 -
Generate config files:
npm run setup
-
Initialize database:
npm run db:migrate
-
Set API secrets:
wrangler secret put GITHUB_TOKEN --config wrangler-api.toml wrangler secret put TELEGRAM_BOT_TOKEN --config wrangler-api.toml wrangler secret put GITHUB_TOKEN --config wrangler-poller.toml wrangler secret put TELEGRAM_BOT_TOKEN --config wrangler-poller.toml
-
Deploy:
npm run deploy
-
Set up Telegram webhook:
export TELEGRAM_BOT_TOKEN=your_bot_token npm run telegram:setup
- Find your bot in Telegram (search for its @username)
- Send
/startto begin - Use the interactive buttons or commands below
/subscribe owner/repo- Subscribe to repository releases/list- View your active subscriptions/unsubscribe <id>- Remove a subscription/status- Check account info/help- Show available commands
You: /subscribe microsoft/vscode
Bot: β
Successfully subscribed! You'll get notifications when
Microsoft VS Code publishes new releases.
You: /list
Bot: π Your Subscriptions (1)
1. microsoft/vscode β’ ID: 123
You: /unsubscribe 123
Bot: β
Subscription removed successfully!
- API Worker: REST endpoints + Telegram bot handler
- Poller Worker: Cron-based GitHub polling (every minute)
- Database: Cloudflare D1 (SQLite) for persistence
- Cache: Cloudflare KV for polling state & ETags
- Queue: Inline processing (queue-based on paid plans)
npm run dev:api # Start API worker locally
npm run dev:poller # Start poller worker locallynpm run deploy # Deploy both workers
npm run deploy:prod # Deploy to production- Framework preset:
Next.js (Static HTML Export) - Build command:
cd web && npm run build - Build output directory:
web/out - Node.js version:
18or20
Add in Cloudflare Pages settings:
- NEXT_PUBLIC_API_URL:
your_api_url
Update your GitHub OAuth app with:
- Homepage URL:
your_url - Authorization callback URL:
your_api_url
npm run logs:api # Tail API worker logs
npm run logs:poller # Tail poller worker logsnpm run db:migrate # Run migrations on remote database
npm run db:migrate:local # Run migrations locallyFor advanced users and integrations:
# Health check
GET /health
# Subscription management
POST /subscriptions
GET /subscriptions?user_id=<id>
DELETE /subscriptions/<id>?user_id=<id>
# Event history
GET /events?repo=owner/name&limit=10
# Telegram integration
POST /webhook/telegram
POST /connect/telegramGitPing uses a template-based configuration system:
wrangler-api.template.toml- API worker templatewrangler-poller.template.toml- Poller worker template.env.example- Environment template
wrangler-api.toml- Generated with your IDswrangler-poller.toml- Generated with your IDs.env- Your actual environment variables
# Required
D1_DATABASE_ID=your_database_id
KV_NAMESPACE_ID=your_kv_namespace_id
# Optional (for multiple environments)
D1_DATABASE_ID_PROD=your_prod_database_id
KV_NAMESPACE_ID_PROD=your_prod_kv_idβ
Template-based config - No hardcoded IDs in version control
β
Encrypted secrets - API tokens stored as Worker secrets
β
Environment isolation - Separate resources for dev/staging/prod
β
Input validation - Repository and user data validation
β
Rate limiting - GitHub API usage monitoring
- Deploy GitPing (follow Quick Start above)
- Start your bot in Telegram and send
/start - Subscribe:
/subscribe vercel/next.js - Wait: When Next.js releases a new version, you'll get:
π¦ vercel/next.js β new release v14.1.0
β’ Next.js 14.1.0
β’ Bug fixes and performance improvements...
https://github.com/vercel/next.js/releases/tag/v14.1.0
- Check webhook setup:
npm run telegram:setup - Verify API worker is deployed and healthy
- Ensure repository name is correct:
owner/repo - Repository must be public
- Check GitHub token has
public_reposcope
- Check poller logs:
npm run logs:poller - Verify GitHub token is set as Worker secret
- Ensure subscription was created successfully
- Regenerate config files:
npm run setup - Check your
.envfile has the correct IDs - Verify resources exist:
wrangler d1 listandwrangler kv namespace list
βββ src/
β βββ workers/ # Worker entry points
β β βββ api.ts # API + Telegram bot handler
β β βββ simple-poller.ts # GitHub polling worker
β βββ lib/ # Core business logic
β β βββ github.ts # GitHub API client
β β βββ telegram.ts # Telegram API client
β β βββ telegram-bot.ts # Bot command handler
β β βββ db.ts # Database operations
β βββ utils/ # Utilities
βββ scripts/ # Setup and deployment scripts
βββ wrangler-*.template.toml # Configuration templates
βββ .env.example # Environment template
{
"filters": {
"include_prereleases": false,
"tag_regex": "^v\\d+\\.\\d+\\.\\d+$"
}
}Create separate resources for production:
wrangler d1 create gitping-prod
wrangler kv namespace create POLL_STATE_PROD
# Add IDs to .env as D1_DATABASE_ID_PROD, etc.
npm run deploy:prodGitPing is perfect for:
- Developers tracking framework updates
- DevOps teams monitoring tool releases
- Security teams watching vulnerability patches
- Open source maintainers staying updated on dependencies
MIT License - see LICENSE for details.
GitPing - Never miss a release again π―
Built with β€οΈ using Cloudflare Workers, TypeScript, and Telegram Bot API.