SoulPetals es una aplicación descentralizada (dApp) que permite a los usuarios crear y nutrir jardines digitales mágicos en la blockchain. Cada jardín refleja las emociones del usuario a través de estados de ánimo personalizables y una imagen creativa generada para cada mood. Construido con Solidity, React, TypeScript, ethers.js, Hardhat y Privy, SoulPetals combina la expresión emocional con la tecnología blockchain para crear una experiencia única e inmersiva.
Actualmente, los jardines pueden ser minteados como NFT, personalizados con un estado de ánimo y compartidos o transferidos a otros usuarios. En futuras versiones, los jardines podrán crecer y evolucionar, y la generación de imágenes será potenciada por IA real.
- 🌱 Crea tu Jardín: Mintea tu propio jardín mágico como un NFT usando el contrato MoodGarden.
- 😊 Establece tu Estado de Ánimo: Elige un estado de ánimo (mood: peaceful, serene, vibrant, etc.) para influir en la apariencia y descripción de tu jardín.
- 🖼️ Visualización de Jardín: Actualmente, la visualización del jardín se realiza mediante imágenes fijas precargadas según el estado de ánimo seleccionado.
- Tokens PETAL: Recibe tokens PETAL como recompensa diaria por interactuar con tu jardín.
- 📱 Diseño Responsivo: Estilizado con la paleta de colores de Ethereum, toques florales y un diseño adaptable a dispositivos móviles.
Nota: La integración con IA para generación dinámica de imágenes está planificada como mejora futura. Por ahora, las imágenes se muestran según el mood elegido y las imágenes precargadas.
- Smart Contracts: Solidity (Hardhat) - ERC721 - ERC20 (OpenZepellin)
- GardenNFT.sol: Implementa ERC721URIStorage para manejar metadatos de NFTs
- MoodGarden.sol: Gestiona estados de ánimo, recompensas diarias y URIs para diferentes niveles
- PetalToken.sol: Token ERC20 para recompensas y futuras interacciones
- Frontend: React, TypeScript, ethers.js
- Estilos: CSS personalizado con colores inspirados en Ethereum y elementos florales
- Testing: Hardhat
- Wallet: MetaMask y Privy
Puedes acceder a SoulPetals de dos maneras:
- Email o Google: Privy te crea automáticamente una wallet embebida segura si no tienes una.
- Wallet externa: También puedes conectar MetaMask u otra wallet compatible si lo prefieres.
No es obligatorio tener MetaMask para usar la dApp: puedes operar solo con tu email y la wallet generada por Privy.
- Node.js (v16 o superior)
- npm o yarn
- Hardhat
- Extensión de navegador MetaMask
- Cuenta de Infura (solo para despliegue en testnet)
git clone https://github.com/danielas-tochi/soulpetals-dapp.git
cd soulpetals-dappnpm install
cd frontend
npm installEn el directorio raíz:
npx hardhat nodeEn una nueva terminal:
npx hardhat run scripts/deploy.ts --network localhostAnota las direcciones de PetalToken y MoodGarden de la salida de la consola.
Actualiza frontend/src/App.tsx con estas direcciones:
const moodGardenAddress = "TU_DIRECCIÓN_MOODGARDEN";
const petalTokenAddress = "TU_DIRECCIÓN_PETALTOKEN";cd frontend
npm run devAbre http://localhost:5173 en tu navegador para interactuar con la dApp.
Desde la raíz del proyecto:
npx hardhat testEsto ejecutará los tests ubicados en la carpeta test/.
Para desplegar en la testnet Sepolia para integración con MetaMask:
Configura hardhat.config.ts con tu URL de Infura y clave privada:
networks: {
sepolia: {
url: "https://sepolia.infura.io/v3/TU_ID_PROYECTO_INFURA",
accounts: ["TU_CLAVE_PRIVADA"],
},
}Obtén ETH de Sepolia desde un faucet (ej. https://sepoliafaucet.com/).
Despliega:
npx hardhat run scripts/deploy.ts --network sepoliaActualiza App.tsx con las nuevas direcciones de contratos.
Asegúrate de que MetaMask esté configurado en la red Sepolia y conecta tu wallet.
- MoodGarden:
0x5FbDB2315678afecb367f032d93F642f64180aa3 - GardenNFT:
0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512 - PetalToken:
0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
- Pendiente de despliegue
- Busca los contratos en Sepolia Etherscan
- Verifica las transacciones con tu dirección
- Revisa el historial de NFTs en MetaMask
- Conectar Wallet: Haz clic en "Connect Wallet" para vincular MetaMask (local o Sepolia).
- Mintear un Jardín: Crea tu jardín mágico como NFT.
- Setear Mood: Elige un mood sugerido o escribe el tuyo.
- Generar Jardín: (Opcional) Describe tu jardín ideal y genera la imagen (en este momento, se muestra una imagen precargada).
- Cambiar mood: Comienza desde cero con un mood nuevo.
- Transferir tu Jardín como NFT: Comparte tu jardín transfiriendo tu NFT a otra dirección.
- Paleta Ethereum: Utiliza colores de Ethereum (#1A2536, #4A90E2, #A0AEC0, etc.) para una estética blockchain.
- Toques Florales: Incorpora verde (#2F855A) y rosa floral (#F687B3) para una vibrante sensación de jardín.
- Diseño Responsivo: Optimizado tanto para dispositivos de escritorio como móviles.
- Integración con Chainlink: Usar Chainlink VRF para sugerencias de estado de ánimo descentralizadas.
- Imágenes: Integrar generación de imágenes IA real.
- Tokens PETAL: Utiliza PetalToken para interactuar con tu jardín, aprobando tokens para mejoras.
- Mejora tu Jardín: Sube de nivel tu jardín, mejorando su crecimiento y apariencia visual.
- UX/UI: Mejorar la experiencia móvil.
- Funcionalidades sociales: Agregar perfil de usuario y galería de jardines.
- Red social de jardines: Permitir a los usuarios compartir, explorar, dar "like" y comentar jardines en un feed público.
¡Siéntete libre de hacer fork de este repositorio, enviar issues o crear pull requests! Hagamos florecer SoulPetals juntos 🌸
MIT License
Para preguntas o feedback, contactame: [email protected] ![]()
- Daniela Silvana Tochi - Desarrollo principal y diseño
- Claude 3.7 Sonnet - Asistencia en desarrollo, debugging y documentación
- VSC GitHub Copilot - Soporte en desarrollo de código y optimización
- Cursor IDE - Asistencia en desarrollo y refactorización
- Grok - Contribuciones en análisis de código y sugerencias de mejora
- Windsurf - IDE and ChatGPT 4.1
Este proyecto fue desarrollado como parte del programa Núcleo. Agradezco especialmente a:
- Profesor Rafa - Por su guía y mentoría en el desarrollo de proyectos blockchain
- Solange - Por su apoyo y coordinación en el programa
- Programa Núcleo Odisea - Por brindar las herramientas y el espacio para desarrollar este proyecto
