A decentralized peer-to-peer messaging app with dual transport architecture: local Bluetooth mesh networks for offline communication and internet-based Nostr protocol for global reach. No accounts, no phone numbers, no central servers. It's the side-groupchat.
To run on a device there're a few steps to prepare the code:
Clone the local configs: cp Configs/Local.xcconfig.example Configs/Local.xcconfig
Add your Developer Team ID into the newly created Configs/Local.xcconfig
Bundle ID would be set to chat.bitchat.<team_id> (unless you set to something else)
Entitlements need to be updated manually (TODO: Automate):
Search and replace group.chat.bitchat with group.<your_bundle_id> (e.g. group.chat.bitchat.ABC123)
Option 2: Using just
brew install just
Want to try this on macos: just run will set it up and run from source.
Run just clean afterwards to restore things to original state for mobile app building and development.
Localization
Base app resources live under bitchat/Localization/Base.lproj/. Add new copy to Localizable.strings and plural rules to Localizable.stringsdict.
Share extension strings are separate in bitchatShareExtension/Localization/Base.lproj/Localizable.strings.
Prefer keys that describe intent (app_info.features.offline.title) and reuse existing ones where possible.
Run xcodebuild -project bitchat.xcodeproj -scheme "bitchat (macOS)" -configuration Debug CODE_SIGNING_ALLOWED=NO build to compile-check any localization updates.