README.md 2,58 ko
Newer Older
Ammari Abdelmounaim's avatar
Ammari Abdelmounaim a validé
# Projet Next.js avec Smart Contract Ethereum
> Une application décentralisée (dApp) utilisant Next.js, Hardhat et Wagmi
Ammari Abdelmounaim's avatar
Ammari Abdelmounaim a validé
## 🌟 Fonctionnalités
Ammari Abdelmounaim's avatar
Ammari Abdelmounaim a validé
- Interface utilisateur moderne avec Next.js
- Smart Contract Ethereum pour le stockage de données
- Intégration avec MetaMask
- Tests automatisés pour le Smart Contract
- Configuration Hardhat pour le développement local
Ammari Abdelmounaim's avatar
Ammari Abdelmounaim a validé
## 🛠 Technologies Utilisées

- **Frontend**:
  - Next.js 15.1
  - React 19.0
  - TailwindCSS
  - Wagmi/Viem pour l'interaction blockchain

- **Backend/Blockchain**:
  - Hardhat
  - Solidity 0.8.19
  - Ethers.js

## 📋 Prérequis

- Node.js (version récente)
- MetaMask installé dans votre navigateur
- Git

## 🚀 Installation

1. Clonez le dépôt :

2. Installez les dépendances :
```bash
npm install
```

3. Lancez la blockchain locale Hardhat :
```bash
npx hardhat node
```

4. Dans un nouveau terminal, déployez le smart contract :
```bash
cd blockchain
npx hardhat ignition deploy modules/IncredibleStorage.ts --network localhost
```

5. Lancez l'application :
```bash
npm run dev
```

Ammari Abdelmounaim's avatar
Ammari Abdelmounaim a validé
## 📝 Structure du Projet

```
.
├── app/                    # Application Next.js
├── blockchain/            # Smart Contracts et configuration Hardhat
│   ├── contracts/        # Smart Contracts Solidity
│   ├── test/            # Tests des Smart Contracts
│   └── ignition/        # Modules de déploiement
├── components/           # Composants React
└── config/              # Configuration (wagmi, etc.)
```

## 🔍 Fonctionnalités Principales

### Smart Contract IncredibleStorage
Ammari Abdelmounaim's avatar
Ammari Abdelmounaim a validé
Le contrat permet de :
- Stocker une valeur numérique
- Lire la valeur stockée
- Modifier la valeur via une transaction
Ammari Abdelmounaim's avatar
Ammari Abdelmounaim a validé
Référence au contrat :
Ammari Abdelmounaim's avatar
Ammari Abdelmounaim a validé
```1:18:blockchain/contracts/incredibleStorage.sol
//SPDX-License-Identifier: MIT
pragma solidity >=0.4.16 < 0.9.0;
Ammari Abdelmounaim's avatar
Ammari Abdelmounaim a validé
contract IncredibleStorage {
    uint awesomeUInt;
Ammari Abdelmounaim's avatar
Ammari Abdelmounaim a validé
    constructor(uint _awesomeUInt) {
        awesomeUInt = _awesomeUInt;
    }
Ammari Abdelmounaim's avatar
Ammari Abdelmounaim a validé
    function set(uint x) public {
        awesomeUInt = x;
    }

    function get() public view returns (uint) {
        return awesomeUInt;
    }
}
```
Ammari Abdelmounaim's avatar
Ammari Abdelmounaim a validé
### Interface Utilisateur

L'application permet aux utilisateurs de :
- Se connecter avec MetaMask
- Voir la valeur actuelle stockée
- Modifier la valeur via un formulaire

## 🧪 Tests

Pour exécuter les tests du smart contract :

```bash
cd blockchain
npx hardhat test
```
## ⚠️ Note

Ce projet est configuré pour fonctionner avec une blockchain locale Hardhat. Pour le déploiement en production, des modifications supplémentaires seront nécessaires.