The Xcode project is generated using Tuist.
After installing Tuist, run:
tuist generateThen open the generated workspace and select the Nuri scheme.
All project documentation is organized in the Documentation folder:
- Setup Instructions - Development environment and Fastlane configuration
- Deployment Guide - Automated TestFlight deployment
- Architecture - Design patterns and guidelines
- Implementation Details - Feature specifications and integration docs
- Development Guides - Testing, debugging, and best practices
-
Install Fastlane if you haven't already:
brew install fastlane
-
Make sure you have the correct signing certificates and provisioning profiles installed.
Deploy directly to TestFlight with one command:
fastlane deployThis automatically:
- Generates the project with Tuist
- Retrieves the latest build number
- Increments the build number
- Builds and signs the app
- Uploads to TestFlight
For detailed instructions, see Deployment Documentation.
To build an archive that you can manually distribute through Xcode Organizer:
fastlane archiveThis will create an archive at ./builds/Nuri.xcarchive. After the build completes:
- Open Xcode
- Go to Window → Organizer (or press ⌘⇧2)
- Select the "Archives" tab
- Find your archive in the list
- Click "Distribute App"
- Choose "App Store Connect"
- Follow the wizard to upload to TestFlight
If you prefer to build manually without Fastlane:
- Open
Nuri.xcworkspacein Xcode - Select the "Nuri" scheme
- Choose "Any iOS Device" as the destination
- Go to Product → Archive
- Once the archive is complete, the Organizer will open
- Click "Distribute App"
- Choose "App Store Connect"
- Follow the upload wizard
If you encounter signing issues:
- Ensure you have the correct Apple Distribution certificate installed
- Check that the provisioning profiles are up to date
- Verify the team ID and bundle identifier match your App Store Connect configuration
- Run
tuist cleanandtuist generateto regenerate the project - Clean the build folder in Xcode (⇧⌘K)
- Delete DerivedData if necessary
The project ships with an ICloudBackupService that encrypts the wallet seed
using a symmetric key stored in the user's iCloud Keychain. The key is generated
automatically and synced across devices, so no extra passphrase is required. Use
this service to create or restore a backup of the seed phrase in iCloud Drive.