📄 Document Registry dApp
Una aplicación descentralizada para subir archivos, calcular su hash, firmarlos, almacenarlos en la blockchain y verificarlos posteriormente. Construida con Next.js 14, TailwindCSS, Ethers 6, MetaMask, Foundry y Solidity.
🚀 Características principales 🔐 Smart Contract
-
Registro inmutable de documentos.
-
Firma digital con ECDSA.
-
Prevención de documentos duplicados.
-
Recuperación de timestamp, firma y signer.
-
Probado con Foundry (forge):
- ✔️ 11/11 tests pasando
- ✔️ Cobertura > 80%
🖥️ Interfaz Web (dApp)
-
Subida de archivos con Drag & Drop.
-
Cálculo automático de hash (Keccak256).
-
Firma del documento usando MetaMask.
-
Confirmación profesional con modales animados.
-
Toasts para notificaciones.
-
Guardar documento en la blockchain.
-
Verificador avanzado de documentos.
-
Historial completo de documentos almacenados.
-
Sistema de pestañas con animaciones.
-
UI moderna con TailwindCSS + Framer Motion.
-
Modo oscuro integrado.
-
Completamente responsive.
📦 Tecnologías utilizadas Backend / Blockchain
-
Solidity
-
Foundry (forge, cast, anvil)
-
ECDSA para verificación de firma
Frontend
-
Next.js 14
-
TypeScript
-
React + Hooks
-
TailwindCSS
-
Framer Motion
-
React Hot Toast
-
Web3
-
Ethers.js v6
-
MetaMask (firma y transacciones)
📁 Estructura del proyecto 📦 project-root ┣ 📁 sc # Smart contract + tests (Foundry) ┣ 📁 dapp # Frontend Next.js ┣ .gitignore ┗ README.md
🔧 Instalación 1️⃣ Clonar el repositorio git clone https://github.com/tu-usuario/document-registry-dapp.git cd document-registry-dapp
🛠️ Smart Contract (Foundry) Instalar dependencias cd sc forge install
Ejecutar los tests forge test -vv
Ver cobertura forge coverage
Lanzar red local Anvil anvil
🌐 Frontend (Next.js) Instalar dependencias cd dapp npm install
Configurar variables de entorno Crear archivo: dapp/.env.local
Contenido: NEXT_PUBLIC_CONTRACT_ADDRESS=0x... NEXT_PUBLIC_RPC_URL=http://localhost:8545 NEXT_PUBLIC_CHAIN_ID=31337 NEXT_PUBLIC_MNEMONIC="test test test ..."
Abrir en: 👉 http://localhost:3000
🧪 Modo de Uso 🔵 1. Subir y firmar un archivo Arrastra un archivo o selecciónalo. Se calcula su hash automáticamente. Clic en Sign Document → firma con MetaMask. Clic en Store on Blockchain → guarda el documento.
🟢 2. Verificar documento Subir archivo para calcular su hash. Ingresar dirección esperada del firmante. Clic en Verify Document.
🟣 3. Historial Ver todos los documentos almacenados. Buscar/filtrar por hash. Exportar a CSV.
⭐ Mejoras futuras Integrar IPFS Conectar a testnet Sepolia Subgraph para indexación PWA para uso offline ENS para nombres amigables
🤝 Contribuciones ¡Las contribuciones son bienvenidas! Enviar un pull request o abrir un issue.
📜 Licencia MIT License.