Parlez librement. Même sans Internet.
Talk freely. Even without Internet.
PEROQUET is a premium peer-to-peer messaging application that enables secure, encrypted communication between nearby devices without requiring an Internet connection, SMS, or mobile data plan.
- Direct Messaging: Send text messages to contacts within ~50 meters
- Voice Messages: Push-to-talk voice messages (5-15 seconds)
- End-to-End Encryption: All messages are encrypted for maximum privacy
- No Account Required: No phone number or email needed - just generate a local identity
- QR Code Pairing: Easy and secure contact addition via QR code scanning
- Offline First: Works completely without Internet using BLE and Wi-Fi Direct
- Premium Design: Beautiful, modern UI with Material 3 design system
- Multi-language: Supports French and English
- Dark/Light Themes: Automatic or manual theme selection
- Framework: Flutter 3.x
- State Management: Riverpod
- Navigation: go_router
- Database: sqflite
- Localization: intl + ARB files
- Cryptography: encrypt (AES-GCM)
- Connectivity: BLE + Wi-Fi Direct (simplified demo version)
- Permissions: permission_handler
- Flutter SDK >= 3.4.0
- Dart SDK >= 3.4.0
- Android SDK (for Android builds)
- Git
./build.sh# Clean and get dependencies
flutter clean
flutter pub get
# Generate localization files
flutter gen-l10n
# Generate launcher icons
flutter pub run flutter_launcher_icons:main
# Generate splash screen
flutter pub run flutter_native_splash:create
# Build release APK
flutter build apk --release
# Build release AAB (for Play Store)
flutter build appbundle --release-
Clone the repository
git clone https://github.com/yourusername/peroquet.git cd peroquet -
Install dependencies
flutter pub get
-
Generate localization files
flutter gen-l10n
-
Generate launcher icons
flutter pub run flutter_launcher_icons:main
-
Run the app
flutter run
Debug APK:
flutter build apk --debugRelease APK:
flutter build apk --releaseRelease AAB (for Play Store):
flutter build appbundle --releaseThe output files will be in:
- APK:
build/app/outputs/flutter-apk/ - AAB:
build/app/outputs/bundle/release/
The app is pre-configured with a debug keystore for testing. For production release:
-
Create a new keystore:
keytool -genkey -v -keystore peroquet-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias peroquet
-
Update
android/key.propertieswith your keystore details -
Build the release APK/AAB
The app requires the following permissions:
| Permission | Purpose |
|---|---|
BLUETOOTH |
Discover and connect to nearby devices |
BLUETOOTH_SCAN |
Scan for BLE devices (Android 12+) |
BLUETOOTH_CONNECT |
Connect to BLE devices (Android 12+) |
ACCESS_FINE_LOCATION |
Required for BLE scanning |
ACCESS_WIFI_STATE |
Wi-Fi Direct connectivity |
CHANGE_WIFI_STATE |
Enable/disable Wi-Fi |
RECORD_AUDIO |
Voice message recording |
READ_EXTERNAL_STORAGE |
Access audio files |
WRITE_EXTERNAL_STORAGE |
Save audio files |
lib/
├── core/
│ ├── app/ # App configuration
│ ├── l10n/ # Localization
│ ├── router/ # Navigation (go_router)
│ └── theme/ # Design system & themes
├── data/
│ ├── database/ # sqflite database
│ └── services/ # Business logic services
├── domain/
│ ├── enums/ # Enumerations
│ └── models/ # Data models
├── presentation/
│ ├── providers/ # Riverpod providers
│ ├── screens/ # UI screens
│ └── widgets/ # Reusable widgets
└── main.dart # Entry point
Run all tests:
flutter testRun unit tests:
flutter test test/unitRun widget tests:
flutter test test/widget- End-to-End Encryption: All messages are encrypted using AES-GCM
- Local Storage: Private keys are encrypted at rest
- No Server: No backend server required - pure P2P communication
- Anti-Replay: Messages include timestamps and nonces
The app supports:
- French (fr)
- English (en)
To add a new language:
- Create
assets/l10n/app_<locale>.arb - Add translations
- Run
flutter gen-l10n
- Ensure Location permission is granted
- Enable Bluetooth and Location services
- Check if device supports BLE
flutter clean
flutter pub get
flutter pub run flutter_launcher_icons:mainThis project is licensed under the MIT License - see the LICENSE file for details.
- Flutter Team for the amazing framework
- Riverpod for state management
- All open-source contributors
PEROQUET - Talk freely. Even without Internet.