Skip to content

iebb/mithka

Repository files navigation

Mithka

A cross-platform (iOS + Android) Telegram client built with Flutter on top of TDLib via FFI, with a dense, mobile-native messaging interface.

Disclaimer

Mithka is an independent, unofficial project. It is not affiliated with, endorsed by, or connected to Telegram in any way. "Telegram" is a trademark of its respective owner.

The app talks to Telegram's network through TDLib using your own Telegram API credentials. Use it at your own risk and in accordance with Telegram's Terms of Service and API Terms.

TestFlight

iOS beta builds are available on TestFlight: https://testflight.apple.com/join/tVC8WkbW

The name

A play on small units of mass, by way of the penguin:

  • The penguin mascot is a pengram — 🐧 + gram, read as penta-gram5 g.
  • One mithqāl (مثقال), a traditional Islamic unit of mass, is ≈ 4.6875 g.

So Mithka (from mithqāl) is the featherweight just under the (Tele)gram penguin on the scale.

What it is

Mithka connects to real Telegram (your account, your chats) through TDLib and presents it with a custom interface: chat list, conversations with live state, reactions and stickers (including animated .tgs/.webm), voice notes, polls and checklists, location sharing, contacts, profiles, moments-style stories, settings, and a 1:1 call UI.

Architecture

  • Flutter UI (lib/), state via provider + ChangeNotifier.
  • TDLib linked through Dart FFI (lib/tdlib/); the native libtdjson binary is downloaded/built per platform (see below) and is not committed.
  • All theming is adaptive (light / dark); UI components are Cupertino/custom — no Material dialogs, snackbars, or switches.

Building

You need your own Telegram API credentials (api_id / api_hash) from https://my.telegram.org. They are read from a git-ignored lib/config/secrets.dart:

class Secrets {
  static const int apiId = 123456;
  static const String apiHash = 'your_api_hash';
  static bool get isConfigured => apiId != 0 && apiHash.isNotEmpty;
}

The TDLib native library is prepared with helper scripts (output is git-ignored). iOS downloads a prebuilt artifact from iebb/mithka-tdjson; Android still builds per ABI locally.

# Android (per ABI) — produces android/app/src/main/jniLibs/<abi>/libtdjson.so
scripts/build-tdjson-android.sh arm64-v8a

# iOS — downloads ios/tdjson/tdjson.xcframework consumed by the Runner
scripts/build-tdjson-ios.sh

Then run:

flutter pub get
flutter run            # on a connected device / simulator

Release signing (Android)

Release builds are signed with the project's upload key when android/key.properties (and the referenced keystore) are present; otherwise a debug signature is used. Neither the keystore nor key.properties is committed.

CI

GitHub Actions runs format + analyze + tests on the release branch (see .github/workflows/). secrets.dart is generated on the runner from the TELEGRAM_API_ID / TELEGRAM_API_HASH repository secrets.

License & credits

TDLib is © Telegram, used under its own license. This repository contains only original, independently-written code; it ships no third-party app's proprietary assets or trademarks.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors