{"id":48621287,"url":"https://github.com/citadel-tech/taker-app","last_synced_at":"2026-04-09T03:36:29.571Z","repository":{"id":320008493,"uuid":"1071504488","full_name":"citadel-tech/taker-app","owner":"citadel-tech","description":"Staging area for the demo taker-app","archived":false,"fork":false,"pushed_at":"2026-03-27T08:50:33.000Z","size":3108,"stargazers_count":2,"open_issues_count":4,"forks_count":6,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-27T19:51:59.625Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/citadel-tech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-07T12:46:20.000Z","updated_at":"2026-03-27T08:50:38.000Z","dependencies_parsed_at":"2025-10-21T13:26:19.817Z","dependency_job_id":null,"html_url":"https://github.com/citadel-tech/taker-app","commit_stats":null,"previous_names":["citadel-tech/taker-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/citadel-tech/taker-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/citadel-tech%2Ftaker-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/citadel-tech%2Ftaker-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/citadel-tech%2Ftaker-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/citadel-tech%2Ftaker-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/citadel-tech","download_url":"https://codeload.github.com/citadel-tech/taker-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/citadel-tech%2Ftaker-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31584809,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"online","status_checked_at":"2026-04-09T02:00:06.848Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":"2026-04-09T03:36:29.418Z","updated_at":"2026-04-09T03:36:29.558Z","avatar_url":"https://github.com/citadel-tech.png","language":"JavaScript","readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"assets/coinswap.png\" alt=\"Coinswap Maker Dashboard Logo\" width=\"300\" /\u003e \n\n\u003ch1 align='center'\u003eCoinswap Taker App\u003c/h1\u003e \n\n\u003c/div\u003e\n\n\nA desktop application for performing private Bitcoin swaps using the [Coinswap Protocol](https://github.com/citadel-tech/coinswap).\n\n## What is a Taker?\n\nIn the Coinswap protocol, a **Taker** is a Bitcoin user who initiates atomic swaps to enhance their transaction privacy. The Taker app acts as a Bitcoin wallet with coinswap capabilities, allowing you to:\n\n- Swap your Bitcoin UTXOs with multiple makers simultaneously\n- Break transaction graph analysis through multi-hop routing\n- Maintain complete custody of your funds throughout the swap\n- Earn privacy without trusting any third party\n\nUnlike traditional Bitcoin transactions that create an on-chain trail, coinswaps mix your coins through multiple makers, making it significantly harder to trace the origin and destination of funds.\n\n## Screenshots\n\n### Wallet\n\n![Wallet Screenshot](/screenshot/wallet.png)\n\n### Swap Page\n\n![Swap Screenshot](/screenshot/swap.png)\n\n### Ongoing Swap\n\n![Ongoing Swap Screenshot](/screenshot/swap1.png)\n\n### Swap Report\n\n![Swap Report Screenshot](/screenshot/report1.png)\n\n\n\n## Prerequisites\n\n### Required\n\nThe Taker app requires the following components to operate:\n\n1. **Bitcoin Core (Mutinynet)** - A fully synced Mutinynet node with proper RPC, REST, and ZMQ configuration\n   - See the [Bitcoin Core setup guide](https://github.com/citadel-tech/coinswap/blob/master/docs/bitcoind.md) for detailed instructions\n\n2. **Tor** - Required for anonymous maker discovery and privacy\n   - See the [Tor setup guide](https://github.com/citadel-tech/coinswap/blob/master/docs/tor.md) for configuration instructions\n\n3. **Node.js** (v18 or higher) - Only required for building from source\n\n4. **Rust toolchain** - Only required for building from source\n   - Install from [rustup.rs](https://rustup.rs/)\n\n### Alternative: Docker Setup\n\nIf you prefer a pre-configured environment, you can use Docker Compose to spin up Tor, Bitcoin Core (Mutinynet), and maker services automatically.\n\nSee the [Docker setup guide](https://github.com/citadel-tech/coinswap/blob/master/docs/docker.md) for instructions.\n\n### Build from Source\n```bash\n# Clone the repository\ngit clone https://github.com/citadel-tech/taker-app.git\ncd taker-app\n\n# Install dependencies and setup native modules\n# Note: First-time setup compiles Rust code and may take 2-3 minutes\nnpm install\n\n# Start development mode\nnpm run dev\n```\n\n## Architecture\n\nBuilt with Electron, Vanilla JavaScript, and Tailwind CSS. The app communicates with the Coinswap protocol through [coinswap-ffi](https://github.com/citadel-tech/coinswap-ffi), which provides native Rust performance for cryptographic operations and protocol handling.\n\n### Native Module Setup\n\nThe app uses `coinswap-napi`, a Node.js native addon that wraps the Rust coinswap implementation. This is automatically built and linked during installation:\n\n1. `npm install` triggers the `prepare` script\n2. `setup-coinswap.js` clones [coinswap-ffi](https://github.com/citadel-tech/coinswap-ffi)\n3. The native module is compiled and symlinked to `node_modules/coinswap-napi`\n\nIf you encounter issues with the native module, manually run:\n```bash\nnpm run setup:coinswap\n```\n\n## Usage\n\nSee the [Usage Guide](docs/usage.md) for detailed instructions on:\n\n- Wallet management and setup\n- Browsing the maker marketplace\n- Executing coinswaps\n- Sending and receiving Bitcoin\n- Recovery procedures\n\n## Building for Production\n\n### Prerequisites\n\nBefore creating a production build, ensure you have installed all dependencies:\n```bash\nnpm install\n```\n\nThis will automatically:\n- Install Node.js dependencies\n- Clone and build the coinswap native module (first build may take 2-3 minutes)\n- Build production CSS\n\n### Create Distribution Build\n```bash\nnpm run dist\n```\n\nThis creates production-ready packages in the `dist/` directory:\n- `CoinswapTaker-0.2.1.AppImage` - Portable executable for Linux distributions\n- `coinswaptaker_0.2.1_amd64.snap` - Optional snap package\n\n### Using the AppImage\n```bash\n# Make executable (one-time)\nchmod +x dist/CoinswapTaker-0.2.1.AppImage\n\n# Run directly\n./dist/CoinswapTaker-0.2.1.AppImage\n```\n\n**Optional desktop integration:**\n```bash\n# Integrate with application menu\n./dist/CoinswapTaker-0.2.1.AppImage --appimage-integrate\n\n# Remove integration\n./dist/CoinswapTaker-0.2.1.AppImage --appimage-unintegrate\n```\n\n**Extract and inspect:**\n```bash\n./dist/CoinswapTaker-0.2.1.AppImage --appimage-extract\ncd squashfs-root\n./TakerApp\n```\n\n### Build Optimization\n\n- **Native Module**: Production builds use release-optimized Rust binaries (`--release` flag) for better performance and reduced memory usage\n- **ASAR**: Currently disabled to ensure native module compatibility\n- **CSS**: Tailwind processes only the classes used in your app for minimal bundle size\n\n## Development\n\n### Development Mode\n\nFor development with hot-reload:\n```bash\nnpm run dev\n```\n\nThis runs:\n- Tailwind CSS in watch mode\n- Electron in development mode with live reloading\n\n### Development Scripts\n\n| Command                  | Description                                       |\n| ------------------------ | ------------------------------------------------- |\n| `npm install`            | Install dependencies and setup native modules     |\n| `npm run dev`            | Start app in development mode with hot-reload     |\n| `npm run setup:coinswap` | Clone/update and build the coinswap native module |\n| `npm run build:css`      | Build Tailwind CSS for production                 |\n| `npm run dist`           | Create production build (AppImage + Snap)         |\n| `npm start`              | Start Electron without hot-reload                 |\n\n### Troubleshooting\n\n**AppImage won't run**\n```bash\n# Check if FUSE is available\nwhich fusermount\n\n# If missing, install FUSE2\nsudo apt install fuse libfuse2\n\n# Or extract and run directly\n./CoinswapTaker-0.2.1.AppImage --appimage-extract\n./squashfs-root/coinswap-taker\n```\n\n**Error: Cannot find module 'coinswap-napi'**\n```bash\nnpm install\n```\n\n**Native module fails to load**\n```bash\n# Rebuild the native module\ncd coinswap-ffi/coinswap-js\nnpm run build\ncd ../..\nnpm run setup:coinswap\n```\n\n## Contributing\n\nContributions are welcome! To contribute:\n\n- **Report Bugs** - Open an issue with reproduction steps\n- **Suggest Features** - Propose improvements via issues\n- **Submit Code** - Fork, create a feature branch, and submit a PR\n\n### Development Guidelines\n\n- Test changes on both Signet and Regtest before submitting\n- Ensure `npm run dist` succeeds before submitting PRs\n- For protocol-level changes, contribute to the [core Coinswap library](https://github.com/citadel-tech/coinswap)\n\n**Questions?** Join our [Discord server](https://discord.gg/Wz42hVmrrK).\n\n## Security\n\nReport security issues on our [Discord](https://discord.gg/Wz42hVmrrK) or email security@citadel.tech.\n\n**⚠️ Important**: This software is experimental. Do not use on mainnet with real funds.\n\n## License\n\nLicensed under Apache 2.0. See [LICENSE](LICENSE).\n\n## Community\n\n- **Discord** - [Join our server](https://discord.gg/Wz42hVmrrK)\n- **GitHub Issues** - Report bugs and request features\n- **Core Library** - [Coinswap protocol implementation](https://github.com/citadel-tech/coinswap)\n\n---\n\n**⚠️ Warning**: Experimental software under active development. Mainnet use is **NOT recommended**.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcitadel-tech%2Ftaker-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcitadel-tech%2Ftaker-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcitadel-tech%2Ftaker-app/lists"}