Skip to content

Ofceab-Studio/issues_tracker

Repository files navigation

Issue Tracker

A self-hosted GitHub webhook server that sends repository events to messaging platforms. Built with Dart. Currently supports Telegram, with potential for Slack, Discord, or custom endpoints through the loggme package. This tool sends events to where your team communicates. You control which events to track and where they go.

Demo

demo_issue_tracked.mov

Features

  • Commit and push notifications
  • Issue assignments and comments
  • Tag creation events
  • Multi-organization support
  • Custom topic routing per repository

How it works

GitHub webhook → issue_tracker server → Telegram bot → Your channel

The server receives webhook events from GitHub, processes them, and routes messages to the correct Telegram channel and topic based on your configuration.

Requirements

  • Dart SDK (for local testing)
  • Docker (for deployment)
  • Telegram bot token
  • GitHub personal access token

Setup

1. Create Telegram Bot

Talk to @BotFather on Telegram and create a new bot. Save the bot token. Add the bot as admin to your channel.

2. Get IDs

Channel ID: Forward a message from your channel to @userinfobot and copy the ID.

Topic ID: If using topics, check the topic URL to find the ID number.

3. GitHub Token

Generate a personal access token from GitHub with repo scope.

4. Configure Environment

Create a .env file:

BOT_TOKEN=your_telegram_bot_token
CHANNEL_ID=your_telegram_channel_id
TOPIC_ID=your_telegram_topic_ic
TOKEN=github_pat_11AP...
GITHUB_ACCESS_TOKEN=ghp_QE...
SERVER_URL=https://your-deployed-server.com
TELEGRAM_CHANNELS=base64_encoded_json

5. Multi-Organization Setup

The TELEGRAM_CHANNELS variable is a base64-encoded JSON array:

[
  {
    "organisation": "YourOrg",
    "channelID": "-100....9",
    "accessToken": "ghp_yourToken"
  }
]

Encode this JSON to base64 and set it as TELEGRAM_CHANNELS.

6. Topic Routing

Add topic ID to your repository description to route events to specific topics:

Repository description: My project #5

The #5 routes events to topic 5. Without this, events go to the default channel.

7. Deploy

Build the Docker image:

docker build -t issue_tracker .

Deploy to any Docker host (Render, Railway, Fly.io, etc).

8. Configure GitHub Webhook

In your repository settings:

  1. Go to Webhooks and add a new webhook
  2. Payload URL: https://your-server.com
  3. Content type: application/json
  4. Select events: Pushes, Issues, Issue comments, Create
  5. Add webhook

Configuration Variables

Variable Description
BOT_TOKEN Telegram bot token
CHANNEL_ID Default Telegram channel ID
TOPIC_ID Default topic ID
TOKEN GitHub personal access token
GITHUB_ACCESS_TOKEN GitHub personal access token
SERVER_URL Deployed server URL
TELEGRAM_CHANNELS Base64-encoded org-to-channel mapping

Local Development

Enable // env = DotEnv()..load(); in bin/dart

dart pub get
dart run bin/main.dart

Message Format

You will see

Contributing

Fork the repository, make your changes, and submit a pull request.


Made with ❤️ by the Ofceab Studio

About

This simple server is designed to help us track issues and redirect messages.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •