Este proyecto implementa un sistema completo de trazabilidad para el ciclo de vida de botellas de vidrio utilizando tecnología blockchain. El sistema permite rastrear botellas desde su fabricación inicial hasta su reciclaje final, garantizando transparencia e inmutabilidad en los datos a lo largo de toda la cadena de suministro.
El objetivo principal es proporcionar una plataforma que permita a todos los participantes del ciclo de vida de las botellas (productores primarios, embotelladores, consumidores y recicladores) registrar y consultar información sobre el origen, uso y disposición final de las botellas, promoviendo una economía circular y sostenibilidad ambiental.
El proyecto está organizado en tres componentes principales:
Contiene los contratos inteligentes (smart contracts) desarrollados en Solidity que se despliegan en la red Optimistic Ethereum. Estos contratos gestionan:
- Registro de lotes de botellas base (producción primaria)
- Registro de productos embotellados (producción secundaria)
- Registro de materiales reciclados
Implementa una API RESTful que sirve como capa intermedia entre el frontend y la blockchain. Proporciona:
- Autenticación y autorización de usuarios
- Endpoints para interactuar con los contratos inteligentes
- Almacenamiento y consulta de datos complementarios en base de datos SQL
- Validación de datos y lógica de negocio
Interfaz de usuario desarrollada con Next.js que permite a los diferentes actores interactuar con el sistema de manera intuitiva:
- Interfaces específicas para cada tipo de usuario (productores, embotelladores, consumidores, recicladores)
- Visualización de información de trazabilidad
- Formularios para registro de eventos en la cadena de suministro
Cada componente tiene su propio README con instrucciones detalladas sobre:
- Requisitos previos
- Configuración del entorno
- Estructura del proyecto
- Ejecución en modo desarrollo
- Pruebas y cobertura de código
- Despliegue en producción
Para comenzar con un componente específico, simplemente hay que navegar a la carpeta correspondiente y seguir las instrucciones en su README.md:
- Blockchain ↔ Backend: El backend utiliza ether.js para interactuar con los contratos inteligentes desplegados en la blockchain.
- Backend ↔ Frontend: El frontend consume la API REST proporcionada por el backend para todas las operaciones.