Requisitos previos
| Herramienta | Versión mínima | Uso |
|---|---|---|
| Node.js | 18+ | Frontend |
| npm | 9+ | Gestión de paquetes |
| Git | Cualquiera | Control de versiones |
| Foundry | Última | Contrato (opcional para solo frontend) |
Instalar Foundry
curl -L https://foundry.paradigm.xyz | bash
foundryup
En Windows, usa foundryup o WSL.
Clonar e instalar
cd FeatherScript
npm install
Configuración de entorno
Copia el archivo de ejemplo:
cp .env.example .env.local
Edita .env.local:
# Dirección del contrato InscriptionRegistry desplegado
NEXT_PUBLIC_REGISTRY_ADDRESS=0x0000000000000000000000000000000000000000
Sin esta variable, el frontend arranca en modo demo (UI funcional, sin transacciones).
Desarrollo del frontend
npm run dev
Abre http://localhost:3000.
Hot reload
Next.js recarga automáticamente al editar archivos en app/, components/ y lib/.
Build de producción local
npm run build
npm run start
Verifica que no hay errores de TypeScript antes de desplegar.
Desarrollo del contrato
cd contracts
forge install foundry-rs/forge-std
Compilar
forge build
Artefactos en contracts/out/.
Ejecutar tests
forge test
Con más detalle:
forge test -vvv
Formatear Solidity
forge fmt
Estructura de configuración
contracts/foundry.toml
[profile.default]
src = "src"
out = "out"
libs = ["lib"]
solc = "0.8.24"
optimizer = true
optimizer_runs = 200
[rpc_endpoints]
robinhood = "https://rpc.mainnet.chain.robinhood.com"
robinhood_testnet = "https://rpc.testnet.chain.robinhood.com"
Uso:
forge test --fork-url robinhood_testnet
tsconfig.json
Excluye contracts/ del compilador TypeScript del frontend.
next.config.ts
images: { unoptimized: true }
Necesario para servir el logo PNG sin optimizador de imágenes remoto.
Flujo de trabajo recomendado
Diagram
flowchart LR
A[forge test] --> B[Deploy testnet]
B --> C[Copiar address a .env.local]
C --> D[npm run dev]
D --> E[Probar inscripción]
E --> F{¿OK?}
F -->|No| G[Debug + fix]
G --> A
F -->|Sí| H[Deploy mainnet]
H --> I[npm run build]
I --> J[Deploy frontend]
Consejos de desarrollo
Probar sin contrato desplegado
La UI es completamente navegable. Verás el banner de "Demo mode" en el formulario de inscripción.
Probar con Anvil (local)
anvil
En otra terminal:
cd contracts
forge script script/Deploy.s.sol --rpc-url http://127.0.0.1:8545 --broadcast
Configura MetaMask con red local (Chain ID 31337) y usa la private key de Anvil.
Depurar transacciones
- Usa el explorer de testnet para ver logs del evento
Inscribed - En el frontend, revisa la consola del navegador para errores wagmi
cast run $TX_HASH --rpc-url ...para simular la tx