Skip to the content.

notifine

Bots for Telegram. Get notifications on new events like new commits, pipelines, etc.

Notifine helps with events in your work tools like Gitlab, Github, and Trello. Just send a message to notifine or add it to your telegram group. It will provide you with a webhook link right away. Copy this link and paste it to your favorite tool (only GitLab now).


Mar 18, 2023: Github bot has started working!

Dec 04, 2022: Gitlab bot has started working!


Available Notifications

Github and GitLab

βœ… Commit push
βœ… Tag push
βœ… Pipeline
βœ… Pull request (via Job events)
βœ… Job events
βœ… Issue
βœ… Comment
βœ… Deployment notifications

Tesla Bot

βœ… OAuth authentication with Tesla account
βœ… Real-time order status tracking
βœ… Automatic status change notifications (checks every 5 minutes)
βœ… Detailed order information (VIN, delivery dates, etc.)
βœ… Secure token storage with AES-256 encryption
βœ… Smart change detection - only notifies when something changes

✨ Features

😎 100% open source and free

Backend (Rust) and infrastructure codes (AWS CDK) are open sources.

πŸš€ Uptime guarantee

There are some telegram bots available already. But they are not able to provide a continuous experience because of long downtimes. This is the main reason for the existence of notifine.

Check the uptime status of the bots: https://stats.uptimerobot.com/5zQqxuMGNY

uptime robot screenshot

πŸŽ“ Educational purposes

I am planning to prepare a tutorial based on this project. And help new Rustaceans with an up-to-date Rust implementation.

⚑️ Built on Rust

Benefit Rust features of speed, type safety, async.

πŸ”Œ On premise available

If you want to host the bot on your private server.

Notes

Gitlab sends a job event for each PR event. So, to avoid duplicate notifications, we use job events instead of PR events. If you want to test PR events, you should select Job event and click test on Gitlab

Telegram threads (topics) are now supported: After adding the bot to the group, simply execute the /start command in the thread where you want to receive notifications.

Branch Filtering

Both GitHub and GitLab webhooks support branch filtering to reduce notification noise from development branches. Add query parameters to your webhook URL to filter events by branch patterns.

Usage Examples

# Only receive notifications for main branch
https://webhook.notifine.com/github/webhook123?branch=main
https://webhook.notifine.com/gitlab/webhook123?branch=main

# Multiple branches
https://webhook.notifine.com/github/webhook123?branch=main,develop

# Wildcard patterns
https://webhook.notifine.com/github/webhook123?branch=release/*

# Exclude development branches
https://webhook.notifine.com/github/webhook123?exclude_branch=feature/*,dependabot/*

# Combine include and exclude (exclude takes precedence)
https://webhook.notifine.com/github/webhook123?branch=main,release/*&exclude_branch=*-wip,*-temp

Supported Events

GitHub: Push events, Pull Request events, Workflow Run events, Create/Delete events GitLab: Push events, Merge Request events

Filter Rules

Backward Compatibility

Configuration

Environment Variables

The following environment variables are required for running Notifine:

# Database
DATABASE_URL=postgresql://user:password@localhost/notifine

# Webhook base URL
WEBHOOK_BASE_URL=https://webhook.notifine.com

# Telegram Bot Tokens
GITLAB_TELOXIDE_TOKEN=your_gitlab_bot_token
GITHUB_TELOXIDE_TOKEN=your_github_bot_token
BEEP_TELOXIDE_TOKEN=your_beep_bot_token
TRELLO_TELOXIDE_TOKEN=your_trello_bot_token
UPTIME_TELOXIDE_TOKEN=your_uptime_bot_token
TESLA_TELOXIDE_TOKEN=your_tesla_bot_token

# Security - Token Encryption
TESLA_ENCRYPTION_KEY=  # 64 hex characters for AES-256 encryption

# Admin Configuration
ADMIN_LOGS=NOT_ACTIVE  # ACTIVE or NOT_ACTIVE
ADMIN_LOG_LEVEL=0
TELEGRAM_ADMIN_CHAT_ID=your_admin_chat_id

Security

Token Encryption

Notifine uses AES-256-GCM encryption to protect sensitive OAuth tokens stored in the database. This ensures that even if the database is compromised, tokens remain secure.

Generating an Encryption Key:

# Generate a secure 256-bit key (64 hex characters)
openssl rand -hex 32

Important Security Notes:

Database Setup

Run migrations to set up the database schema:

# Install diesel CLI
cargo install diesel_cli --no-default-features --features postgres

# Run migrations
diesel migration run

# Or using Docker Compose
docker-compose up -d

Ways to help

Regardless of your experience level, there are ways that you can help: