BindSync is a powerful cross-platform messaging application built with Flutter that bridges the gap between Discord and Telegram. It allows users to view, send, and synchronize messages across both platforms in a unified, WhatsApp-like interface with a modern dark theme.
- π Cross-Platform Sync: Seamlessly synchronize messages between Discord and Telegram
- π± Multi-Platform Support: Works on Android, iOS, Web, Windows, Linux, and macOS
- π Secure Authentication: Google Sign-In integration via Firebase Authentication
- π¬ Unified Chat Interface: View messages from both platforms in one place
- β©οΈ Reply Support: Reply to messages across platforms
- π Message Filtering: Filter messages by source (Discord/Telegram)
- π¨ Modern UI: WhatsApp-inspired dark theme with smooth animations
- π Auto-Refresh: Automatic message updates in real-time
- π€ Customizable: Set your own username and API endpoint
- βοΈ Message Actions: Copy, delete, and reply to messages with swipe gestures
Before you begin, ensure you have the following installed:
- Flutter SDK (3.8.0 or higher) - Install Flutter
- Dart SDK (comes with Flutter)
- Firebase CLI (optional, for Firebase configuration) - Install Firebase CLI
- Android Studio or Xcode (for mobile development)
- Visual Studio (for Windows development)
- A code editor (VS Code or Android Studio recommended)
-
Clone the repository
git clone https://github.com/CodemHax/BindSyncApp.git cd BindSyncApp -
Install dependencies
flutter pub get
-
Configure Firebase
The project includes Firebase configuration files. However, if you want to use your own Firebase project:
- Create a new Firebase project at Firebase Console
- Enable Google Sign-In in Authentication settings
- Download and replace configuration files:
android/app/google-services.json(Android)ios/Runner/GoogleService-Info.plist(iOS)
- Run Firebase CLI to generate
lib/firebase_options.dart:flutterfire configure
-
Generate launcher icons (optional)
flutter pub run flutter_launcher_icons
-
Run the app
flutter run
BindSync requires a backend API server to synchronize messages between Discord and Telegram.
- First Launch: When you first open the app, navigate to Settings (gear icon)
- Configure API URL: Enter your backend API base URL (e.g.,
http://your-api-server.com:8000) - Set Username: Choose a display name for your messages
- Test Connection: Use the "Test Connection" button to verify your API server is accessible
Your backend API should implement the following endpoints:
GET /messages?limit=100&offset=0- Retrieve messagesPOST /messages- Send a new messageDELETE /messages/{id}- Delete a messageGET /health- Health check endpoint
Expected message format:
{
"id": "unique-id",
"source": "telegram" | "discord" | "api",
"text": "message content",
"username": "sender name",
"timestamp": 1234567890.123,
"tg_msg_id": 123,
"dc_msg_id": 456,
"reply_to_id": "parent-message-id",
"reply_to_tg_id": 123,
"reply_to_dc_id": 456
}- Minimum SDK version: 21 (Android 5.0)
- Ensure
android/app/google-services.jsonis properly configured - Build APK:
flutter build apk --release
- Minimum iOS version: 12.0
- Ensure
ios/Runner/GoogleService-Info.plistis properly configured - Open the iOS project in Xcode and configure signing
- Build IPA:
flutter build ios --release
- Firebase configuration is included in the project
- Build for web:
flutter build web --release
- Ensure Visual Studio 2022 or later is installed
- Build Windows app:
flutter build windows --release
- Install required dependencies:
sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev
- Build Linux app:
flutter build linux --release
- Minimum macOS version: 10.14
- Build macOS app:
flutter build macos --release
- Login: Sign in with your Google account
- Chat Selection: Choose between viewing all messages, Telegram only, or Discord only
- Send Messages: Type your message and send it to both platforms simultaneously
- Reply to Messages: Swipe right on any message to reply
- Delete Messages: Swipe left on any message to delete it
- Copy Messages: Long-press to copy message content
- Settings: Configure your username and API server URL
- Home: View all synchronized messages
- Telegram Chat: View only Telegram messages
- Discord Chat: View only Discord messages
- Settings: Configure app settings
- Logout: Sign out of your account
lib/
βββ main.dart # App entry point
βββ firebase_options.dart # Firebase configuration
βββ models/
β βββ message.dart # Message data model
βββ routes/
β βββ RouteGenrator.dart # Route management
βββ screens/
β βββ login.dart # Login screen
β βββ chat_selection.dart # Chat selection screen
β βββ home_page.dart # All messages view
β βββ telegram_chat.dart # Telegram messages view
β βββ discord_chat.dart # Discord messages view
β βββ settings.dart # Settings screen
βββ services/
βββ auth_wrapper.dart # Authentication wrapper
βββ api_service.dart # API communication
βββ user_preferences_service.dart # Local storage
Run the test suite:
flutter testRun tests with coverage:
flutter test --coverageThis project follows the official Flutter style guide.
Run the linter:
flutter analyzeFormat code:
flutter format .Enable debug mode:
flutter run --debugView logs:
flutter logs- flutter: Flutter SDK
- firebase_core: Firebase core functionality
- firebase_auth: Firebase authentication
- google_sign_in: Google Sign-In integration
- http: HTTP client for API calls
- shared_preferences: Local storage for user preferences
- intl: Internationalization and date formatting
- flutter_slidable: Swipeable list items
- flutter_launcher_icons: Launcher icon generation
- flutter_test: Testing framework
- flutter_lints: Linting rules
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Flutter team for the amazing framework
- Firebase for authentication and backend services
- The open-source community for the various packages used
If you encounter any issues or have questions:
- Open an issue on GitHub
- Check the Flutter documentation
- Review Firebase documentation
- Push notifications
- End-to-end encryption
- Media file support (images, videos)
- Message search functionality
- Dark/Light theme toggle
- Multiple language support
