-`frontend-angular/` : Interface utilisateur Angular (test, pas finie)
-`test/` : Tests automatisés pour les smart contracts
## Prérequis
- Node.js v16+
- npm v8+
- Node.js v22+
- MetaMask ou un autre portefeuille Ethereum installé dans votre navigateur
## Installation et démarrage
...
...
@@ -69,6 +81,12 @@ npm run deploy
Notez l'adresse du contrat déployé, vous en aurez besoin pour configurer le frontend.
En cas de problème, exécuter arrêter le noeud puis exécuter cette commande :
```bash
npx hardhat clean
```
5.**Configurer et démarrer le frontend Angular**
```bash
...
...
@@ -76,10 +94,10 @@ cd frontend-angular
npm install
```
Pour configurer l'adresse du contrat, ouvrez le fichier `src/app/services/contract.service.ts` et modifiez la ligne suivante avec l'adresse de votre contrat déployé:
Pour configurer l'adresse du contrat, ouvrez le fichier `src/utils/contract.js` et modifiez la ligne suivante avec l'adresse de votre contrat déployé:
L'application sera accessible à l'adresse `http://localhost:4200`.
L'application sera accessible à l'adresse `http://localhost:3000`.
## Guide d'utilisation
...
...
@@ -96,33 +114,40 @@ L'application sera accessible à l'adresse `http://localhost:4200`.
- Au démarrage de l'application, cliquez sur "Connecter votre portefeuille"
- Autorisez la connexion dans MetaMask
- Assurez-vous d'être sur le réseau local Hardhat (localhost:8545, Chain ID: 1337)
- Assurez-vous d'être sur le réseau local Hardhat (localhost:8545, Chain ID: 31337)
### 2. Processus de vote
Le processus de vote suit plusieurs étapes:
#### Phase 1: Enregistrement des électeurs
- Seul l'administrateur (le déployeur du contrat) peut enregistrer des électeurs
- Entrez l'adresse Ethereum de chaque électeur dans le formulaire
#### Phase 2: Enregistrement des propositions
- L'administrateur démarre cette phase en spécifiant une durée en minutes
- Les électeurs enregistrés peuvent soumettre des propositions
#### Phase 3: Fin de l'enregistrement des propositions
- L'administrateur termine cette phase manuellement ou la période expire automatiquement
#### Phase 4: Session de vote
- L'administrateur démarre la session en spécifiant une durée en minutes
- Les électeurs peuvent voter pour une proposition ou déléguer leur vote
#### Phase 5: Fin de la session de vote
- L'administrateur termine cette phase manuellement ou la période expire automatiquement
#### Phase 6: Dépouillement des votes
- L'administrateur déclenche le comptage des votes
- Les résultats sont visibles par tous les utilisateurs
- L'administrateur peut démarrer une nouvelle session de vote
## Tests
...
...
@@ -133,6 +158,7 @@ npm test
```
Ces tests vérifient:
- L'enregistrement des électeurs
- Le cycle de vie du workflow
- La soumission de propositions
...
...
@@ -142,10 +168,12 @@ Ces tests vérifient:
### Tests manuels du frontend
1.**Test du rôle administrateur**
- Utilisez le compte qui a déployé le contrat
- Vérifiez que vous pouvez enregistrer des électeurs et gérer le workflow
2.**Test du rôle électeur**
- Connectez-vous avec un compte enregistré comme électeur
- Soumettez des propositions et votez
...
...
@@ -156,10 +184,17 @@ Ces tests vérifient:
## Fonctionnalités supplémentaires
1.**Limite de temps pour les phases**
- Les phases d'enregistrement des propositions et de vote ont des durées configurables
- Le système verrouille automatiquement les actions après expiration
- N.B. : Cette fonctionnalité n'a pas pu être finie, car nous nous sommes rendus compte qu'il était impossible de créer des évènements planifiés avec les contrats intelligents
1. (bis) **Réinitialisation du système de vote**
- À la fin d'une session de vote, l'administrateur peut cliquer sur le bouton "Nouveau vote"
- Cela réinitialisera les propopsitions
2.**Système de délégation de vote**
1.**Système de délégation de vote**
- Les électeurs peuvent déléguer leur vote à un autre électeur enregistré
- Vérification des boucles de délégation pour éviter les références circulaires
...
...
@@ -178,10 +213,12 @@ Pour un déploiement en production, vous devrez:
### Problèmes courants
1.**Erreur "No such contract"**
- Vérifiez que le contrat est bien déployé
- Assurez-vous que l'adresse du contrat dans le frontend est correcte
2.**Erreur "Cannot estimate gas"**
- La transaction peut échouer à cause des règles du contrat
- Vérifiez que vous êtes dans la bonne phase du workflow
...
...
@@ -191,4 +228,4 @@ Pour un déploiement en production, vous devrez:
### Support
Pour toute question ou problème, veuillez ouvrir une issue sur le dépôt GitHub.
\ No newline at end of file
Pour toute question ou problème, veuillez ouvrir une issue sur le dépôt GitHub.