Una aplicación web moderna para interactuar con tu contrato de votación en Ethereum, construida con Next.js, TypeScript, Wagmi y RainbowKit.
- Diseño Moderno: Interfaz atractiva y responsiva con Tailwind CSS
- Conexión de Wallet: Integración completa con RainbowKit para múltiples wallets
- Interacción con Smart Contract: Usando Wagmi v2 para llamadas optimizadas
- Panel de Administración: Control completo para el propietario del contrato
- Tiempo Real: Actualizaciones automáticas del estado de la votación
- Experiencia de Usuario: Feedback visual y notificaciones toast
- Node.js 18+
- npm o yarn
- Wallet de Ethereum (MetaMask, WalletConnect, etc.)
- Tu contrato desplegado en Sepolia testnet
- Crea el proyecto Next.js:
npx create-next-app@latest vote-dapp-frontend --typescript --tailwind --eslint --app
cd vote-dapp-frontend- Instala las dependencias:
npm install @rainbow-me/rainbowkit@^2.1.0 @tanstack/react-query@^5.51.23 react-hot-toast@^2.4.1 viem@^2.17.5 wagmi@^2.12.0- Configura las variables de entorno:
Crea un archivo
.env.localen la raíz del proyecto:
NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID=tu_project_id_aqui
NEXT_PUBLIC_VOTING_CONTRACT_ADDRESS=0x_tu_direccion_del_contrato
- Actualiza la configuración:
- Reemplaza
YOUR_WALLET_CONNECT_PROJECT_IDensrc/config/wagmi.tscon tu Project ID de WalletConnect - Actualiza
VOTING_CONTRACT_ADDRESScon la dirección de tu contrato desplegado
- Ve a WalletConnect Cloud
- Crea un nuevo proyecto
- Copia el Project ID
- Actualízalo en el archivo de configuración
Reemplaza la dirección del contrato en src/config/wagmi.ts:
export const VOTING_CONTRACT_ADDRESS = '0xTU_DIRECCION_DEL_CONTRATO';npm run devLa aplicación estará disponible en http://localhost:3000
src/
├── app/
│ ├── globals.css # Estilos globales
│ ├── layout.tsx # Layout principal
│ ├── page.tsx # Página principal
│ └── providers.tsx # Proveedores de contexto
├── components/
│ ├── AdminPanel.tsx # Panel de administración
│ ├── CandidateCard.tsx # Tarjeta de candidato
│ ├── VotingDashboard.tsx # Dashboard de votación
│ └── VotingStats.tsx # Estadísticas
└── config/
└── wagmi.ts # Configuración de Wagmi
- Conectar Wallet: Conexión segura con múltiples opciones
- Ver Candidatos: Lista visual de todos los candidatos
- Votar: Sistema de votación simple e intuitivo
- Ver Estadísticas: Conteos de votos en tiempo real
- Gestionar Votación: Iniciar y finalizar votaciones
- Agregar Candidatos: Formulario para nuevos candidatos
- Panel de Control: Vista completa del estado del sistema
- Solo el propietario del contrato puede administrar la votación
- Validación de transacciones en el frontend
- Manejo seguro de estados de carga
- Validación de inputs del usuario
Puedes personalizar los colores en tailwind.config.js:
colors: {
primary: {
// Tu paleta de colores personalizada
}
}Todos los componentes están modularizados y pueden ser personalizados fácilmente.
- Verifica que tengas una wallet instalada
- Asegúrate de estar en la red Sepolia
- Revisa que el Project ID de WalletConnect sea correcto
- Verifica que tengas ETH suficiente para gas
- Asegúrate de que la votación esté activa (para votar)
- Confirma que eres el propietario (para funciones admin)
- Verifica la dirección del contrato
- Asegúrate de que el contrato esté desplegado
- Revisa la consola del navegador para errores
- Documentación de Next.js
- Documentación de Wagmi
- Documentación de RainbowKit
- Documentación de Tailwind CSS
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para detalles.
¡Tu Vote DApp está listo para funcionar! 🎉