Skip to content

rayluisud/ticketchain

Repository files navigation

TicketChain

Plataforma descentralizada de venta y validación de boletos para eventos, construida sobre Ethereum (testnet Sepolia). Los boletos viven en la blockchain, lo que permite compra, reventa controlada y validación verificable sin intermediarios.

Inspirado en plataformas tradicionales como Ticketmaster, pero resolviendo dos de sus problemas históricos mediante contratos inteligentes: la reventa especulativa y la falsificación de boletos.

Demo

Aplicación que requiere MetaMask y estar conectado a la red de prueba Sepolia.

Características

  • Compra de boletos on-chain: cada boleto es un token gestionado por el contrato inteligente, asociado a la wallet del comprador.
  • Reventa con precio controlado: la transferencia de boletos entre usuarios pasa por el contrato, lo que permite imponer reglas sobre el precio de reventa y evitar la especulación.
  • Validación con código QR: cada boleto genera un QR con un hash de verificación. El personal del evento valida la autenticidad sin poder falsificar boletos.
  • Control de roles: el contrato distingue entre el owner (organizador, que crea eventos y retira fondos) y el staff (personal que valida boletos en la entrada).
  • Panel de administración: creación de eventos, definición de precio, cantidad y límite por comprador, y retiro de fondos recaudados.
  • Historial de transacciones: consulta de los boletos adquiridos y su estado.

Stack técnico

Capa Tecnología
Frontend Angular 21 + Angular Material
Blockchain Ethereum (testnet Sepolia)
Contratos Solidity
Interacción Web3 ethers.js v6
Wallet MetaMask
QR angularx-qrcode
Hosting Firebase Hosting

Arquitectura

La aplicación se comunica directamente con el contrato inteligente desde el navegador a través de ethers.js y la wallet del usuario (MetaMask). No existe un backend propio que custodie fondos ni claves: cada transacción la firma el usuario desde su wallet.

El servicio Web3Service centraliza toda la lógica de interacción con la blockchain: conexión de wallet, verificación de red, lectura del estado del contrato y envío de transacciones (compra, transferencia, creación de eventos, retiro de fondos).

Requisitos previos

  • Node.js 20 o superior
  • MetaMask instalado en el navegador
  • Una wallet con ETH de prueba en Sepolia

Instalación y ejecución local

# Clonar el repositorio
git clone https://github.com/rayluisud/ticketchain.git
cd ticketchain

# Instalar dependencias
npm install

# Levantar el servidor de desarrollo
npm start

La aplicación quedará disponible en http://localhost:4200/.

Al abrirla, conecta tu wallet de MetaMask y asegúrate de estar en la red Sepolia. La aplicación verifica automáticamente que estés en la red correcta antes de permitir cualquier transacción.

Build de producción

npm run build

Los archivos optimizados se generan en dist/ticketchain/browser.

Rutas de la aplicación

Ruta Descripción
/ Página principal y catálogo de eventos
/mis-boletos Boletos del usuario con su código QR
/historial Historial de transacciones
/admin Panel del organizador (crear eventos, retirar fondos)
/validador Validación de boletos por QR para el personal

Contexto

Proyecto desarrollado como parte de la formación en Ingeniería en Sistemas Computacionales en el Instituto Tecnológico de Veracruz, con enfoque en sistemas distribuidos y tecnología blockchain aplicada a un caso de uso real.

Autor

Rayluis Uscanga Delgado rayluis.dev · LinkedIn

Licencia

Este proyecto se distribuye con fines educativos y de portafolio.

About

Plataforma descentralizada de boletos sobre Ethereum (Sepolia)

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages