Configurable Open-source Voting & Decentralized Election Venue - C.O.V.D.E.V / Sistema Votazioni del Comitato Studentesco
C.O.V.D.E.V è un’app Next.js + Solidity per gestire e visualizzare le votazioni del Comitato Studentesco, con interfaccia moderna (dark/light), emiciclo in stile parlamento e integrazione con wallet (MetaMask).
- Emiciclo dinamico: riempimento dei seggi in base ai voti, simmetrico dal centro verso l’esterno.
- Stato utente: rappresentante, diritto di voto, ha già votato.
- Area Proposte: elenco e gestione, dropdown con troncamento (nessun overflow).
- Area Studenti: voto per ID proposta (con diritto di voto).
- Dark/Light mode curata: in light mode pannelli bianchi (Emiciclo/Area Studenti) come "Stato Utente".
- Next.js (App Router) • TypeScript
- Ethers.js • Solidity
- Tailwind-like utility classes (via CSS/JSX)
pnpm install
pnpm dev
# Apri http://localhost:3000/- File:
contratto.sol - Configurazione: imposta
CONTRACT_ADDRESSinlib/contract.tsdopo il deploy. - ABI: già presente in
lib/contract.ts(CONTRACT_ABI). Aggiorna se modifichi il contratto.
- Apri https://remix.ethereum.org e carica
contratto.sol. - Compila e fai deploy sulla rete (testnet ok).
- Copia l’indirizzo del contratto e incollalo in
lib/contract.ts.
app/page.tsx— UI, logica client, emiciclo SVG.app/layout.tsx— metadata, font, favicon SVG (/public/favicon.svg).lib/contract.ts— indirizzo + ABI.public/— asset (favicon, icone, svg).
- Link repo: https://github.com/DuPont9029/comitato-sc
- Stelle:
- Forks:
- Ultimo commit:
- Dimensione repo:
- Lingue:
- Sviluppo:
pnpm dev - Build:
pnpm build→pnpm start - Lint:
pnpm lint
- Dropdown con nomi lunghi: troncato con ellissi, niente overflow; tooltip via
titlemostra il nome completo. - Emiciclo: rendering client-side per evitare mismatch di idratazione.
- Favicon: SVG come primaria, fallback ICO (cache aggressiva: hard reload
Cmd+Shift+R).
- Nessuna chiave privata nel frontend. Le transazioni usano il wallet del browser (
BrowserProvider). - Verifica rete e account in MetaMask prima di votare.
- L’emiciclo non appare correttamente: assicurati che il mount client sia attivo (hook dedicato).
- Dropdown sfora: regola la larghezza
w-[180px]inapp/page.tsxse serve.
- probabilmente dovrò fixare l'emiciclo
- Storico votazioni e filtri.
- Test E2E/unit per componenti chiave.
Se ti piace, lascia una ⭐