{"id":22646361,"url":"https://github.com/fireblocks/android-ncw-demo","last_synced_at":"2025-08-21T11:21:51.920Z","repository":{"id":197030553,"uuid":"690587303","full_name":"fireblocks/android-ncw-demo","owner":"fireblocks","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-01T11:27:49.000Z","size":5827,"stargazers_count":1,"open_issues_count":1,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-01T12:29:31.318Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fireblocks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-12T13:34:38.000Z","updated_at":"2024-11-17T14:22:11.000Z","dependencies_parsed_at":"2024-05-02T06:51:37.599Z","dependency_job_id":"19a79c84-16be-4182-a93c-d9abd2008114","html_url":"https://github.com/fireblocks/android-ncw-demo","commit_stats":null,"previous_names":["fireblocks/android-ncw-demo"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireblocks%2Fandroid-ncw-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireblocks%2Fandroid-ncw-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireblocks%2Fandroid-ncw-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fireblocks%2Fandroid-ncw-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fireblocks","download_url":"https://codeload.github.com/fireblocks/android-ncw-demo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248501700,"owners_count":21114676,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-09T06:10:07.912Z","updated_at":"2025-08-21T11:21:51.914Z","avatar_url":"https://github.com/fireblocks.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fireblocks Android Demo\n\nThis demo application showcases both **Embedded Wallet (EW)** and **Non-Custodial Wallet (NCW)** SDKs from Fireblocks, demonstrating wallet creation, key management, transaction handling, and Web3 capabilities.\n\n## SDK Overview\n\n### Embedded Wallet (EW) SDK\nThe **Embedded Wallet SDK** is Fireblocks' latest offering that simplifies wallet integration by handling all wallet management logic internally. It uses the NCW SDK as its core library for cryptographic operations while eliminating the need for a custom backend infrastructure.\n\n### Non-Custodial Wallet (NCW) SDK  \nThe **NCW SDK** provides the core cryptographic functionality for key generation and transaction signing. It serves as the foundation that powers the Embedded Wallet SDK.\n\n### How They Work Together\n- **EW SDK** is the primary SDK that uses **NCW SDK** as its core library\n- **NCW SDK** handles key generation and transaction signing operations\n- **EW SDK** manages all wallet operations, user flows, and backend communication\n- This architecture eliminates the need for developers to build custom backend services\n\n## Getting Started\n\n### Recommended Setup (Default Configuration)\nFor the best developer experience and to understand the demo code examples, use the **`sandboxEmbeddedWalletDebug`** build variant:\n\n```bash\n./gradlew assembleSandboxEmbeddedWalletDebug\n```\n\n### Firebase Setup (Required)\n1. **Create a Firebase Project**:\n   - Go to the [Firebase Console](https://console.firebase.google.com/)\n   - Create a new project or use an existing one\n\n2. **Add Android App**:\n   - Add an Android app to your Firebase project\n   - Use package name: `com.fireblocks.ewdemo` (recommended for Embedded Wallet)\n\n3. **Configure Authentication**:\n   - Enable Google and Apple sign-in providers in Firebase Authentication\n   - Configure OAuth settings for both providers\n\n4. **Download Configuration**:\n   - Download the `google-services.json` file\n   - Place it in the `app/` folder of this project\n\n### Transaction Updates Configuration (Embedded Wallet)\n\nThe Embedded Wallet implementation supports two methods for receiving transaction status updates:\n\n#### Push Notifications (Default - Recommended)\n- **Configuration**: `useTransactionPolling = false` in `FireblocksManager` (default)\n- **Requirements**: \n  - Set up the Fireblocks minimal backend server (use our [EW Backend Demo](https://github.com/fireblocks/ew-backend-demo))\n  - Create a webhook in the Fireblocks Console\n  - Configure Firebase Cloud Messaging (FCM) for push notifications\n- **Benefits**: Real-time updates, reduced battery usage, better user experience\n\n#### Polling Mechanism (Fallback Option)\n- **Configuration**: Set `useTransactionPolling = true` in `FireblocksManager`\n- **Requirements**: No additional backend setup needed\n- **Benefits**: Simpler setup, no external dependencies, works out of the box\n\n**Note**: The demo uses push notifications (`useTransactionPolling = false`) by default for optimal performance. You can switch to polling (`useTransactionPolling = true`) if you prefer a simpler setup without backend requirements.\n\n### Build Variants\n\nThe project uses a multi-dimensional flavor structure:\n\n#### Server Environments:\n- **`sandbox`** - Recommended for development and testing\n- **`production`** - For production deployments  \n- **`dev`** - Internal development (Fireblocks team only)\n\n#### Wallet Types:\n- **`embeddedWallet`** - Uses the EW SDK (recommended)\n- **`ncw`** - Uses the NCW SDK directly\n\n#### Example Build Variants:\n- `sandboxEmbeddedWalletDebug` (recommended)\n- `sandboxNcwDebug`\n- `productionEmbeddedWalletRelease`\n- `productionNcwRelease`\n\n### Build and Run\n\n1. **Clone the repository**\n2. **Set up Firebase** (see Firebase Setup section above)\n3. **Build the project**:\n   ```bash\n   ./gradlew assembleSandboxEmbeddedWalletDebug\n   ```\n4. **Install and run** on your device or emulator\n\n## Documentation\n\nFor comprehensive documentation, setup guides, and API references:\n\n📖 **[Fireblocks NCW Developer Guide](https://ncw-developers.fireblocks.com/docs/getting-started)**\n\nThe developer guide includes:\n- Detailed setup instructions\n- API documentation (Javadoc JAR files available)\n- Integration examples\n- Best practices\n- Troubleshooting guides\n\n## Project Structure\n\n```\napp/src/\n├── main/                    # Shared code\n├── embeddedWallet/         # EW SDK specific implementations\n├── ncw/                    # NCW SDK specific implementations\n├── sandbox*/              # Sandbox environment configs\n├── production*/           # Production environment configs\n└── dev*/                 # Development environment configs\n```\n\n## Key Features Demonstrated\n\n- 🔐 **Wallet Creation \u0026 Recovery** - Generate new wallets or recover existing ones\n- 🔑 **Key Management** - Secure key generation, backup, and recovery\n- 💸 **Transactions** - Send, receive, and track cryptocurrency transactions with real-time updates\n- 🖼️ **NFT Support** - View, manage, and transfer NFTs across supported networks\n- 🌐 **Web3 Integration** - Connect to dApps and sign Web3 transactions\n- 📱 **Multi-Device** - Add and manage multiple devices per wallet\n- 🔒 **Biometric Security** - Fingerprint and face unlock integration\n- 🔔 **Push Notifications** - Real-time transaction status updates (EW implementation)\n- 🎨 **Modern UI** - Built with Jetpack Compose\n\n## Support\n\nFor technical support and questions:\n- Review the [Developer Documentation](https://ncw-developers.fireblocks.com/docs/getting-started)\n- Check the code examples in this demo app\n- Contact Fireblocks support for additional assistance","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffireblocks%2Fandroid-ncw-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffireblocks%2Fandroid-ncw-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffireblocks%2Fandroid-ncw-demo/lists"}