Fluxa est une application de paiement peer-to-peer (P2P) fonctionnant entièrement hors-ligne, permettant aux utilisateurs d'échanger de l'argent sans connexion internet via NFC et Bluetooth Low Energy (BLE).
#RustAfricaHackathon
Dans de nombreuses régions, notamment en Afrique de l'Ouest, l'accès à internet est limité, intermittent ou coûteux. Les solutions de paiement mobile existantes nécessitent une connexion internet constante pour valider les transactions, ce qui exclut une grande partie de la population.
Problèmes spécifiques :
- Dépendance à une connexion internet stable pour les transactions
- Coûts élevés des données mobiles
- Zones blanches sans couverture réseau
- Latence élevée lors des transactions en ligne
- Risques de sécurité liés aux serveurs centralisés
Solution Fluxa :
- Transactions P2P fonctionnant 100% hors-ligne
- Communication directe entre appareils via NFC et Bluetooth
- Synchronisation différée avec le cloud lorsque la connexion est disponible
- Architecture hybride : solde en ligne (cloud) + solde hors-ligne (vault local)
- Cryptographie Ed25519 pour la sécurité des transactions
Fluxa utilise une architecture hybride offline-first avec synchronisation différée :
-
Backend Rust (Tauri) : Moteur bancaire sécurisé gérant :
- Portefeuille avec balances en ligne et hors-ligne
- Génération de clés cryptographiques (Ed25519)
- Signatures et vérification de transactions
- Gestion des transactions P2P
-
Frontend React + TypeScript : Interface utilisateur moderne avec :
- Détection automatique du statut réseau
- Service Worker pour le mode offline
- Interface adaptative mobile-first
- Animations fluides avec Tailwind CSS
-
Communication P2P :
- NFC : Pour les paiements en contact (Android/iOS)
- Bluetooth Low Energy (BLE) : Pour les paiements à distance (jusqu'à 10m)
1. Utilisateur A initie un paiement
↓
2. Création de transaction offline dans le backend Rust
↓
3. Signature cryptographique (SHA256 + Ed25519)
↓
4. Transmission via NFC ou Bluetooth
↓
5. Utilisateur B reçoit et valide la transaction
↓
6. Mise à jour des balances locales
↓
7. Synchronisation avec le cloud (quand disponible)
- Cryptographie : SHA256 pour le hachage, Ed25519 pour les signatures
- Validation locale : Vérification des signatures sans serveur
- Isolation : Solde hors-ligne isolé du solde en ligne
- Transactions signées : Chaque transaction est signée cryptographiquement
- Node.js : >= 18.0.0
- pnpm : >= 8.0.0 (gestionnaire de paquets)
- Rust : >= 1.70.0
- Tauri CLI : >= 2.0.0
{
"react": "^19.1.0",
"react-dom": "^19.1.0",
"@tauri-apps/api": "^2",
"@tauri-apps/plugin-opener": "^2",
"@tauri-apps/plugin-nfc": "^2",
"tailwindcss": "^3.4.19",
"typescript": "~5.8.3",
"vite": "^7.0.4"
}tauri = "2"
serde = "1"
sha2 = "0.10"
ed25519-dalek = "1.0"
uuid = "1.0"
chrono = "0.4"
tokio = "1"git clone https://github.com/votre-username/fluxa.git
cd fluxaFrontend (pnpm) :
pnpm installBackend (Rust) :
# Les dépendances Rust sont gérées automatiquement par Cargo
# Assurez-vous d'avoir Rust installé : https://rustup.rs/Aucune configuration supplémentaire n'est requise. L'application fonctionne immédiatement après l'installation.
# Démarrer le serveur de développement
pnpm tauri devCette commande :
- Lance Vite pour le frontend React
- Compile le backend Rust
- Ouvre l'application Tauri en mode développement
Desktop (Windows/macOS/Linux) :
pnpm tauri buildLes binaires seront générés dans src-tauri/target/release/
Android :
pnpm tauri android buildiOS :
pnpm tauri ios build# Build pour une plateforme spécifique
pnpm tauri build --target x86_64-pc-windows-msvc # Windows
pnpm tauri build --target x86_64-apple-darwin # macOS
pnpm tauri build --target x86_64-unknown-linux-gnu # Linuxpnpm tauri devWindows :
.\src-tauri\target\release\fluxa.exemacOS/Linux :
./src-tauri/target/release/fluxaAndroid :
# Installer l'APK généré
adb install src-tauri/target/android/apk/release/app-release.apk-
Initialisation du Portefeuille :
- L'application crée automatiquement un portefeuille au premier lancement
- Génération automatique des clés cryptographiques
-
Gestion des Soldes :
- Solde en ligne : Synchronisé avec le cloud
- Solde hors-ligne (Vault) : Stocké localement pour les paiements P2P
-
Transfert vers le Vault :
- Accéder à l'écran "Vault"
- Transférer des fonds du solde en ligne vers le vault hors-ligne
Via NFC :
- Activer NFC sur les deux appareils
- Sélectionner "NFC" dans l'écran P2P
- Approcher les appareils (contact)
- Confirmer le montant et le destinataire
Via Bluetooth :
- Activer Bluetooth sur les deux appareils
- Sélectionner "Bluetooth" dans l'écran P2P
- Scanner les appareils à proximité
- Sélectionner le destinataire
- Confirmer le montant et envoyer
- L'appareil détecte automatiquement les transactions entrantes
- Afficher les détails de la transaction
- Accepter ou rejeter le paiement
- Le solde est mis à jour automatiquement
fluxa/
├── src/ # Frontend React
│ ├── components/ # Composants réutilisables
│ ├── screens/ # Écrans principaux
│ ├── hooks/ # Hooks React personnalisés
│ ├── contexts/ # Contextes React
│ ├── utils/ # Utilitaires
│ └── config/ # Configuration
│
├── src-tauri/ # Backend Rust (Tauri)
│ ├── src/
│ │ ├── lib.rs # Moteur bancaire principal
│ │ └── main.rs # Point d'entrée Tauri
│ └── Cargo.toml # Dépendances Rust
│
└── public/ # Assets statiques
The use of Rust is strategic to guarantee financial reliability on mobile devices:
- Memory Safety: Indispensable for avoiding crashes and critical security flaws when handling money.
- Robust Cryptography: Use of the
ed25519-dalekcrate to sign transactions. It is impossible to forge a digital check. - Performance & Size: Thanks to Rust and Tauri, the application is extremely lightweight (~10 MB) and fast, even on entry-level smartphones, unlike Electron-based solutions.
| Layer | Technology | Role |
|---|---|---|
| Mobile Backend | Rust | Business Logic, Cryptography, BLE Management |
| Mobile Bridge | Tauri v2 | Native Android/iOS Communication |
| Frontend | React / TypeScript | User Interface (Radar, Wallet) |
| Storage | SQLite | Encrypted Local Database |
| Protocol | BLE (Bluetooth) | P2P Data Transfer |
- Rust (latest stable version)
- Node.js & pnpm
- Android Studio (for mobile deployment)
-
Clone the repository:
git clone [https://github.com/Strong-Ari/Fluxa.git](https://github.com/Strong-Ari/Fluxa.git) cd Fluxa -
Install dependencies:
pnpm install
-
Run in development mode (Android):
- Plug in your Android phone and enable developer mode.
- Run:
pnpm tauri android dev
Project developed for the Rust Africa Hackathon 2026.
Note importante : Le code métier principal, la logique applicative, et les fonctionnalités spécifiques au domaine ont été développés manuellement. Seuls les fichiers de configuration standard, le code boilerplate initial, et la structure de base du backend Rust ont bénéficié de l'assistance LLM.
- NFC nécessite un appareil physique compatible (Android/iOS)
- Bluetooth nécessite des permissions système
- La synchronisation cloud nécessite une connexion internet (fonctionnalité future)
- Synchronisation automatique avec serveur cloud
- Support multi-devices
- Historique de transactions amélioré
- Support de plusieurs devises
- Intégration avec systèmes de paiement existants
Pour toute question ou problème, veuillez ouvrir une issue sur GitHub.
Date de soumission : 31 janvier 2026 Version : 0.1.0