Flutter порт оригинального проекта bitchat — децентрализованного Bluetooth mesh мессенджера
🚀 Быстрый старт • ✨ Особенности • 🏗️ Архитектура • 📱 Скриншоты
TelChat — это Flutter порт оригинального проекта bitchat — инновационного децентрализованного приложения для обмена сообщениями, работающего через Bluetooth mesh-сеть.
Этот проект является полным переписыванием оригинального bitchat с Swift на Flutter, сохраняя всю функциональность и добавляя новые возможности:
- ✅ Кроссплатформенность — одна кодовая база для iOS, Android, Web, Desktop
- ✅ Быстрая разработка — горячая перезагрузка и богатая экосистема пакетов
- ✅ Современный UI — Material Design 3 с адаптивным дизайном
- ✅ Лучшая производительность — оптимизированный рендеринг и управление памятью
| Аспект | 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
-
Клонируйте репозиторий
git clone https://github.com/tellarion/telchat.git cd telchat -
Установите зависимости
flutter pub get
-
Настройте разрешения
Для 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" />
-
Запустите приложение
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