ce4ef201779610b3e45b0d1e94025e606d9d4e3e
ElCaju 🥜
Your private ecash wallet on Bitcoin
elcaju.me • Installation • Features • Technologies
📱 About ElCaju
ElCaju is a Cashu wallet (ecash on Bitcoin) with Cuban identity, sister of LaChispa (Lightning). Designed to offer privacy, offline transactions, and a warm tropical experience.
What is Cashu?
Cashu is an ecash protocol that enables Bitcoin transactions with maximum privacy. Cashu tokens are:
- Private: Fungible and untraceable
- Offline: Store and send tokens without internet connection
- Instant: No waiting for blockchain confirmations
✨ Features
| Feature | Description |
|---|---|
| 🔐 Total Privacy | Fungible ecash tokens, no traceable history |
| 📴 Works Offline | Store and share tokens without internet |
| ⚡ Lightning Bridge | Deposit and withdraw sats via Lightning Network |
| 🏦 Multi-Mint | Connect to multiple Cashu mints simultaneously |
| 💱 Multi-Unit | Support for sat, USD, EUR and more |
| 🔑 Your Seed, Your Money | Backup with 12 words (BIP39) |
| 🔒 Optional PIN | Protect access to your wallet |
| 🌐 Bilingual | Spanish and English |
| 🎉 Friendly UX | Visual effects and confetti when receiving funds |
🚀 Screenshots
🔧 Technologies
Frontend
- Flutter 3.3+: Cross-platform framework
- Dart: Programming language
- Provider: State management
- QR Flutter: QR code generation
Backend & Core
- cdk-flutter: Cashu Development Kit (Rust FFI)
- SQLite: Local persistence via cdk-sqlite
- Flutter Secure Storage: Secure storage for seed and PIN
Protocols
- Cashu: NUT-00 to NUT-13 (ecash protocol)
- Lightning Network: Deposits and withdrawals via BOLT11
- BIP39: Seed phrase generation
📦 Installation
Prerequisites
- Flutter SDK (>=3.3.0)
- Dart SDK
- Android Studio / Xcode (for native builds)
- Rust toolchain (to compile cdk-flutter)
Clone the Repository
git clone https://github.com/Forte11Cuba/elcaju.git
cd elcaju/elcaju
Install Dependencies
flutter pub get
Configure Rust (Ubuntu/Linux)
# Install Android targets
rustup target add armv7-linux-androideabi
rustup target add aarch64-linux-android
rustup target add i686-linux-android
rustup target add x86_64-linux-android
# Create ~/.cargo/config.toml
[target.x86_64-unknown-linux-gnu]
linker = "gcc"
rustflags = ["-C", "link-arg=-fuse-ld=bfd"]
Run in Development
flutter run
Build for Production
# Android APK
flutter build apk --release
# Android App Bundle
flutter build appbundle --release
🏗️ Architecture
┌─────────────────────────────────────────┐
│ Flutter UI (Dart) │
│ Provider + Streams + Intl │
├─────────────────────────────────────────┤
│ WalletProvider / SettingsProvider │
│ (Multi-unit: Map<mintUrl:unit>) │
├─────────────────────────────────────────┤
│ cdk-flutter (FFI) │
│ flutter_rust_bridge v2.11.1 │
├─────────────────────────────────────────┤
│ Rust Core (CDK) │
│ Cashu 0.13.4 + SQLite + Bitcoin │
└─────────────────────────────────────────┘
Project Structure
elcaju/
├── lib/
│ ├── main.dart # Entry point
│ ├── core/
│ │ ├── constants/ # Colors, dimensions
│ │ ├── theme/ # App theme
│ │ └── utils/ # Formatters, validators
│ ├── providers/
│ │ ├── wallet_provider.dart # Wallet logic
│ │ └── settings_provider.dart# Preferences and PIN
│ ├── screens/
│ │ ├── 1_splash/ # Loading screen
│ │ ├── 2_onboarding/ # Create/restore wallet
│ │ ├── 3_home/ # Main screen
│ │ ├── 4_receive/ # Receive tokens
│ │ ├── 5_send/ # Send tokens
│ │ ├── 6_mint/ # Deposit via Lightning
│ │ ├── 7_melt/ # Withdraw to Lightning
│ │ └── 8_settings/ # Settings
│ ├── widgets/
│ │ ├── common/ # Buttons, cards, etc.
│ │ └── effects/ # Confetti and animations
│ └── l10n/ # Translations ES/EN
└── assets/
└── img/ # Logo and assets
🔐 Security
| Feature | Implementation |
|---|---|
| Seed Phrase | Stored with Flutter Secure Storage (native encryption) |
| PIN | Secure hash, local verification |
| Local Data | SQLite with proofs encrypted by Cashu protocol |
| No Tracking | We don't collect user data |
| Open Source | 100% auditable |
Important
⚠️ Backup your seed phrase (12 words). Without it, you won't be able to recover your funds if you lose your device.
📱 Compatibility
| Platform | Status | Minimum Version |
|---|---|---|
| ✅ Android | Supported | API 24 (Android 7.0) |
| 🚧 iOS | Coming soon | iOS 12.0+ |
| 🚧 Web | Coming soon | - |
🌐 Default Mint
ElCaju comes preconfigured with the Cuba Bitcoin mint:
https://mint.cubabitcoin.org
You can add other Cashu mints from the settings.
🤝 Contributing
Contributions are welcome!
- Fork the repository
- Create a branch for your feature (
git checkout -b feature/new-feature) - Commit your changes (
git commit -m 'Add new feature') - Push to the branch (
git push origin feature/new-feature) - Open a Pull Request
Report Bugs
Open an issue with:
- Problem description
- Steps to reproduce
- Android version/device
- Relevant logs
📄 License
This project is under the MIT License - see the LICENSE file for more details.
🙏 Credits
- Cashu - Ecash protocol
- cdk-flutter - Cashu Development Kit
- Cashu4Community - Global Cashu community
- Cuba Bitcoin - Cuban Bitcoin community
Made with 🧡 by Forte11
Languages
Dart
78.9%
Rust
17.6%
C++
1.2%
CMake
1.2%
Kotlin
0.4%
Other
0.6%





