Une marketplace moderne et sécurisée construite pour la République Démocratique du Congo, intégrant la blockchain Cardano pour garantir la sécurité des transactions via un système d'escrow décentralisé.
Fonctionnalités • Installation • Architecture • Contribution
- 🔐 Escrow Blockchain Cardano : Les fonds sont verrouillés dans un smart contract jusqu'à confirmation de réception
- 💰 Paiements en ADA : Transactions sécurisées sur la blockchain Cardano (Preprod Testnet)
- 🎯 Système de Points WZP : Récompenses pour chaque transaction réussie
- 💬 Négociation de Prix : Système de chat intégré avec propositions de prix
- 🌍 Multi-langue : Support Français et Swahili
- 📊 Statistiques en Temps Réel : Données réelles depuis la base de données
- 🎨 Interface Moderne : Design fluide et intuitif optimisé pour mobile
- Framework : React 18 + TypeScript
- Build Tool : Vite
- Styling : TailwindCSS
- Blockchain : Lucid-Cardano (v0.10.11)
- Smart Contracts : Aiken (Plutus V2/V3)
- Routing : React Router v6
- Database : Supabase (PostgreSQL)
- Authentication : Supabase Auth (Email/Password, Google OAuth)
- API : Supabase REST API + Node.js/Express (pour logiques complexes)
- Blockchain Provider : Blockfrost API (Preprod Testnet)
- Node.js (v18+)
- npm ou yarn
- Un compte Supabase (Gratuit)
- Un compte Blockfrost pour Preprod Testnet (Gratuit)
- Un wallet Cardano compatible CIP-30 (Nami, Eternl, Lace, etc.)
- Créez un nouveau projet Supabase
- Allez dans l'éditeur SQL de Supabase
- Exécutez le contenu du fichier
supabase_schema.sql(à la racine du projet)- Cela créera toutes les tables nécessaires :
profiles,products,orders,messages,wzp_balances, etc.
- Cela créera toutes les tables nécessaires :
- Récupérez vos clés API (Settings → API) :
Project URL(VITE_SUPABASE_URL)anon public key(VITE_SUPABASE_ANON_KEY)
- Créez un compte sur Blockfrost
- Créez un nouveau projet pour Preprod Testnet
- Récupérez votre
Project ID(clé API)
-
Clonez le repository :
git clone <repository-url> cd wenze/frontend
-
Installez les dépendances :
npm install
-
Créez le fichier
.env:cp .env.example .env
-
Remplissez
.envavec vos clés :# Supabase VITE_SUPABASE_URL=https://votre-projet.supabase.co VITE_SUPABASE_ANON_KEY=votre-cle-publique-supabase # Blockfrost (Preprod Testnet) VITE_BLOCKFROST_PROJECT_ID=votre-project-id-blockfrost # Adresse du Smart Contract Escrow (Preprod) VITE_ESCROW_ADDRESS_TESTNET=addr_test1...
-
Lancez le serveur de développement :
npm run dev
L'application sera accessible sur http://localhost:5173
Le frontend communique principalement avec Supabase. Le backend Node.js est disponible pour des logiques complexes futures.
cd backend
npm install
# Configurez .env si nécessaire
npm start- Inscription/Connexion avec email et mot de passe
- Authentification Google OAuth
- Gestion automatique des profils utilisateurs
- Création de produits avec images, prix (en ADA ou FC), catégories
- Recherche et filtrage par catégorie
- Affichage des produits avec prix en temps réel
- Types de prix : fixe ou négociable avec plage min-max
- Catégories : Électronique, Mode, Aliments, Beauté, Bricolage, Services, Immobilier, Auto, Autres
- Achat : L'acheteur connecte son wallet et verrouille les fonds dans l'escrow blockchain
- Négociation : Système de chat avec propositions de prix
- Livraison : Le vendeur confirme l'expédition
- Libération : L'acheteur confirme la réception → fonds libérés automatiquement via smart contract
- Suivi : États de commande (pending → escrow_web2 → shipped → completed)
- Distribution automatique de points WZP après chaque transaction complétée
- 50% des points pour l'acheteur, 50% pour le vendeur
- Affichage du solde WZP dans le profil utilisateur
- Système d'administration pour envoyer des récompenses manuelles
- Chat intégré dans chaque commande
- Notifications en temps réel
- Support des négociations de prix
- Statut de lecture (simple = envoyé, double = lu)
- Présence en ligne (indicateur online/offline)
wenze/
├── frontend/
│ ├── src/
│ │ ├── blockchain/ # Intégration Cardano
│ │ │ ├── escrowContract.ts # Logique smart contract escrow
│ │ │ ├── lucidService.ts # Configuration Lucid
│ │ │ ├── prepareAdaPayment.ts # Verrouillage fonds
│ │ │ └── prepareAdaRelease.ts # Libération fonds
│ │ ├── components/ # Composants réutilisables
│ │ │ ├── Navbar.tsx
│ │ │ ├── Footer.tsx
│ │ │ ├── ChatBox.tsx
│ │ │ └── WalletModal.tsx
│ │ ├── context/ # Contextes React
│ │ │ ├── AuthContext.tsx
│ │ │ ├── BlockchainContext.tsx
│ │ │ ├── LanguageContext.tsx
│ │ │ └── ThemeContext.tsx
│ │ ├── pages/ # Pages de l'application
│ │ │ ├── Home.tsx
│ │ │ ├── Products.tsx
│ │ │ ├── ProductDetail.tsx
│ │ │ ├── Orders.tsx
│ │ │ ├── OrderDetail.tsx
│ │ │ └── Dashboard.tsx
│ │ └── utils/ # Utilitaires
│ ├── public/
│ │ └── contracts/ # Smart contracts compilés
│ │ ├── escrow.plutus.json
│ │ └── escrow_v2_test.plutus.json
│ └── contracts/ # Code source Aiken
│ └── escrow/
│ └── validators/
│ └── escrow.ak
├── backend/ # API Express (optionnel)
├── supabase/
│ ├── migrations/ # Migrations SQL
│ └── functions/ # Edge Functions
│ └── send-reward-notification/
└── supabase_schema.sql # Schéma complet de la base
L'application utilise un smart contract Plutus (compilé avec Aiken) pour gérer l'escrow :
- Lock : Verrouillage des fonds ADA dans le contrat
- Release : Libération des fonds vers le vendeur après confirmation
- Cancel : Annulation et retour des fonds à l'acheteur (en développement)
- Nami
- Eternl (Gero)
- Lace
- Flint
- Vespr
- Yoroi
Tous les wallets compatibles CIP-30 sont supportés.
Pour compiler le smart contract escrow :
cd frontend/contracts/escrow
aiken buildLe contrat compilé sera disponible dans frontend/public/contracts/.
- Poussez votre code sur GitHub
- Importez le projet sur Vercel
- Configurez le Root Directory :
frontend - Ajoutez les variables d'environnement :
VITE_SUPABASE_URLVITE_SUPABASE_ANON_KEYVITE_BLOCKFROST_PROJECT_IDVITE_ESCROW_ADDRESS_TESTNET
- Déployez !
Les migrations SQL sont disponibles dans supabase/migrations/. Exécutez-les dans l'ordre dans l'éditeur SQL de Supabase :
01_consolidate_all_product_columns.sql- Colonnes consolidées pour produitsadd_is_admin_to_profiles.sql- Système d'administrationcreate_wzp_rewards_system.sql- Système de récompenses WZPcreate_wzp_leaderboard.sql- Tableau des leaders- Autres migrations selon vos besoins
- Authentification complète (Email/Password, Google OAuth)
- Gestion des produits (publication, édition, suppression)
- Types de prix (fixe ou négociable avec plage min-max)
- Disponibilité des services (disponible/indisponible)
- Transactions avec escrow blockchain Cardano (Preprod Testnet)
- Système de points WZP (distribution automatique)
- Chat intégré avec statut de lecture et présence en ligne
- Négociation de prix
- Multi-langue (Français/Swahili)
- Statistiques en temps réel
- Interface moderne et responsive
- Support complet Plutus V3 (actuellement limitation avec lucid-cardano 0.10.11)
- Annulation automatique après délai
- Optimisations de performance
- Tests automatisés
- Réseau : Actuellement sur Preprod Testnet (Cardano)
- Lucid Version : 0.10.11 (limitations connues avec Plutus V3)
- Smart Contract : Script de test Plutus V2 utilisé en fallback
Le projet inclut une Edge Function pour l'envoi d'emails de notification :
- Fonction :
send-reward-notification - Service : Resend API
- Configuration : Voir
supabase/functions/send-reward-notification/README.md
Pour créer un compte administrateur et gérer les récompenses WZP :
- Exécutez la migration
add_is_admin_to_profiles.sql - Mettez à jour un profil avec
is_admin = truedans Supabase - Accédez à
/admin/rewardspour gérer les récompenses
Les contributions sont les bienvenues ! Voici comment contribuer :
- Fork le projet
- Créez une branche pour votre fonctionnalité (
git checkout -b feature/AmazingFeature) - Committez vos changements (
git commit -m 'Add some AmazingFeature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrez une Pull Request
- Suivez les conventions de code existantes
- Ajoutez des commentaires pour le code complexe
- Testez vos modifications
- Mettez à jour la documentation si nécessaire
Ce projet est propriétaire. Tous droits réservés.
- Cardano - Pour la blockchain
- Supabase - Pour l'infrastructure backend
- Lucid - Pour l'intégration Cardano
- Aiken - Pour les smart contracts
WENZE - L'avenir du commerce sécurisé en RDC