Skip to content

Tellarion/telchat

Repository files navigation

📱 TelChat - Децентрализованный Bluetooth Mesh Чат

Flutter Dart Bluetooth

Flutter порт оригинального проекта bitchat — децентрализованного Bluetooth mesh мессенджера

🚀 Быстрый старт✨ Особенности🏗️ Архитектура📱 Скриншоты


🎯 О проекте

TelChat — это Flutter порт оригинального проекта bitchat — инновационного децентрализованного приложения для обмена сообщениями, работающего через Bluetooth mesh-сеть.

🔗 Оригинальный проект

Этот проект является полным переписыванием оригинального bitchat с Swift на Flutter, сохраняя всю функциональность и добавляя новые возможности:

  • Кроссплатформенность — одна кодовая база для iOS, Android, Web, Desktop
  • Быстрая разработка — горячая перезагрузка и богатая экосистема пакетов
  • Современный UI — Material Design 3 с адаптивным дизайном
  • Лучшая производительность — оптимизированный рендеринг и управление памятью

🔄 Миграция с Swift

Аспект Swift версия Flutter версия
UI Framework SwiftUI Material Design 3
State Management Combine Provider
Bluetooth CoreBluetooth flutter_blue_plus
Local Storage UserDefaults shared_preferences
Notifications UNUserNotificationCenter flutter_local_notifications
Platform Support iOS only iOS, Android, Web, Desktop

📋 Сохраненная функциональность

Все ключевые особенности оригинального bitchat полностью реализованы:

  • 🔐 End-to-end шифрование — X25519 + AES-256-GCM
  • 🌐 Децентрализованная mesh-сеть — без серверов и интернета
  • 💬 IRC-стиль команд/join, /msg, /who, /rooms
  • 🏠 Комнаты с паролями — защищенные групповые чаты
  • 📱 Приватные сообщения — личная переписка
  • 🔄 Store & Forward — доставка сообщений офлайн пользователям
  • 🚨 Emergency Wipe — тройное нажатие для очистки данных
  • Оптимизация производительности — сжатие LZ4, адаптивные режимы питания

✨ Особенности

🔐 Безопасность

  • End-to-end шифрование всех сообщений
  • Приватные чаты с защищенными каналами
  • Пароли для комнат — дополнительный уровень защиты
  • Анонимность — никаких личных данных не передается

🌐 Децентрализованная сеть

  • Mesh-топология — сообщения передаются через соседние устройства
  • Автоматическое обнаружение — поиск других пользователей поблизости
  • Отказоустойчивость — сеть работает даже при отключении отдельных узлов
  • Без интернета — полная автономность

💬 Типы сообщений

  • 📢 Broadcast — сообщения для всех в сети
  • 👤 Private — личные сообщения конкретному пользователю
  • 🏠 Room — групповые чаты с паролями
  • 📢 Announce — системные уведомления

🎨 Современный интерфейс

  • Material Design 3 — красивый и интуитивный UI
  • Темная/светлая тема — автоматическое переключение
  • Автодополнение — быстрый ввод никнеймов с @
  • Push-уведомления — мгновенные оповещения о новых сообщениях

🏗️ Архитектура

📁 lib/
├── 🎯 main.dart                    # Точка входа приложения
├── 📊 models/
│   └── message.dart                # Модель сообщения с типами
├── ⚙️ services/
│   ├── encryption_service.dart     # Шифрование сообщений
│   └── notification_service.dart   # Управление уведомлениями
├── 🧠 viewmodels/
│   └── chat_view_model.dart       # Бизнес-логика с Provider
├── 📱 screens/
│   └── chat_screen.dart           # Основной экран чата
└── 🧩 widgets/
    ├── message_bubble.dart         # Отображение сообщений
    ├── sidebar.dart               # Боковая панель настроек
    └── autocomplete_overlay.dart  # Автодополнение никнеймов

🔧 Технологический стек

Компонент Технология Назначение
UI Framework Flutter Кроссплатформенный UI
State Management Provider Управление состоянием
Bluetooth flutter_blue_plus Mesh-сеть
Encryption crypto Шифрование сообщений
Storage shared_preferences Локальные настройки
Notifications flutter_local_notifications Push-уведомления
Permissions permission_handler Управление разрешениями

🚀 Быстрый старт

Предварительные требования

  • Flutter SDK 3.8.1+
  • Dart 3.0+
  • Android Studio / VS Code
  • Физическое устройство для тестирования Bluetooth

Установка

  1. Клонируйте репозиторий

    git clone https://github.com/tellarion/telchat.git
    cd telchat
  2. Установите зависимости

    flutter pub get
  3. Настройте разрешения

    Для Android добавьте в android/app/src/main/AndroidManifest.xml:

    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  4. Запустите приложение

    flutter run

🔧 Разработка

# Запуск в режиме разработки
flutter run

# Сборка для релиза
flutter build apk --release
flutter build ios --release

# Запуск тестов
flutter test

# Анализ кода
flutter analyze

🔐 Разрешения

Приложение запрашивает следующие разрешения:

Разрешение Назначение
Bluetooth Сканирование и подключение к другим устройствам
Bluetooth Admin Управление Bluetooth соединениями
Location Требуется для Bluetooth сканирования на Android
Notifications Push-уведомления о новых сообщениях
Internet Дополнительные функции (опционально)

🛠️ Основные функции

💬 Отправка сообщений

  • Broadcast — отправка всем пользователям в сети
  • Private — личные сообщения конкретному пользователю
  • Room — сообщения в защищенные групповые чаты

🏠 Управление комнатами

  • Создание новых комнат с паролями
  • Присоединение к существующим комнатам
  • Просмотр участников и истории сообщений

⚙️ Настройки

  • Изменение никнейма
  • Просмотр подключенных пиров
  • Управление приватными чатами
  • Настройка уведомлений

📄 Лицензия

Этот проект, как и оригинальный bitchat, распространяется под лицензией Unlicense — свободное программное обеспечение в общественном достоянии.

Оригинальный проект: bitchat от jackjackbits

Для получения дополнительной информации см. LICENSE


🙏 Благодарности

  • jackjackbits — за оригинальный проект bitchat
  • Flutter Team — за отличный фреймворк
  • flutter_blue_plus — за Bluetooth функциональность
  • Provider — за простое управление состоянием
  • Material Design — за красивые компоненты

Сделано с ❤️ на Flutter

About

telchat (flutter, dart) by bitchat

Resources

Stars

Watchers

Forks

Packages

No packages published