Skip to content

fest.io

What I did

  • Design in Figma
  • Use cases & requirements
  • Data modeling
  • Development
  • Testing
  • Documentation
  • Deployment

fest.io was born as the final project of the subject Plataformas de Software Empresariales (Grado en Ingeniería Informática de Servicios y Aplicaciones, Escuela de Ingeniería Informática de Segovia, Universidad de Valladolid). The request: model the business of a company that organizes music festivals and sells tickets — from the creation of the organizing company to the entry of the customer into the venue.

The platform solves three problems that coexist in that business:

  • An organizing company needs to publish a festival, mount the artist lineup and define types of ticket with price and limited capacity, so that no one can do it without control — hence the companies remain pending verification by an administrator before operating.
  • A customer needs to buy the ticket with real payment with card, load a cashless wristband to spend inside the venue, and present a unique QR code as entry. If the festival is cancelled, they need to be able to request the refund of what they paid.
  • Someone needs to be able to audit the system: block problematic companies and review the server logs without filtering credentials or tokens in them.

The development concentrated in about four weeks (20 April - 17 May) until the academic delivery, with technical memory, use case diagrams, relational model and black box tests documented apart in a PDF of more than 2.5 MB. Subsequently a demo mode was added that substitutes the payment gateway, the search for artists via Spotify and the images from Unsplash by simulated versions (to be able to show it without depending on third-party credentials or cost), a larger example dataset, and deployment in Azure Container Apps with pausable Postgres to not consume credit between demos.

Documentfest.io technical reportUse cases, relational model, black box tests and deployment.PDF2.5 MBOpen(opens in a new tab)
Documentfest.io project defenseSlides of the final presentation of the project.PDF924 KBOpen(opens in a new tab)

The project was graded with an outstanding due to the voluntary parts included like the containerization, ticket etc..

What the platform offers

Public (without account)

  • Catalog of festivals with search
  • Festival page: artist lineup, dates, location, capacity and available ticket types

Customer

  • Registration and login
  • Purchase of tickets with card through an external payment gateway
  • Loading of cashless wristband balance
  • Entries as unique QR code per ticket
  • Refund request if the festival organizer cancels it
  • Profile management and account settings

Organizing company

  • Creation subject to verification by an administrator before operating
  • CRUD of festivals, artist lineup and ticket types (price, stock)
  • Dashboard with sales and income charts by festival
  • Account settings

Administrator

  • Verification and blocking of organizing companies
  • Query of server logs, with tokens and secrets redacted before being shown

Technical

React 19 + Vite + TypeScript + TailwindCSS in the frontend; Node.js + Express + TypeScript in the backend, with Prisma ORM over PostgreSQL. Authentication with Passport + JWT, validation with Zod, structured logging with Pino and API documented with OpenAPI/SwaggerUI. Containerized with Docker Compose for local development; deployed in Azure Container Apps for public demo.

fest.io nace como práctica final de la asignatura Plataformas de Software Empresariales (Grado en Ingeniería Informática de Servicios y Aplicaciones, Escuela de Ingeniería Informática de Segovia, Universidad de Valladolid). El encargo: modelar de extremo a extremo el negocio de una empresa que organiza festivales de música y vende abonos — desde el alta de la empresa organizadora hasta la entrada del cliente al recinto.

La plataforma resuelve tres problemas que conviven en ese negocio:

  • Una empresa organizadora necesita publicar un festival, montar el cartel de artistas y definir tipos de abono con precio y aforo limitado, sin que cualquiera pueda hacerlo sin control — de ahí que las empresas queden pendientes de verificación por un administrador antes de operar.
  • Un cliente necesita comprar el abono con pago real con tarjeta, recargar saldo tipo pulsera cashless para gastar dentro del recinto, y presentar un código QR único como entrada. Si el festival se cancela, necesita poder pedir el reembolso de lo pagado.
  • Alguien tiene que poder auditar el sistema: bloquear empresas problemáticas y revisar los logs del servidor sin que se filtren credenciales o tokens en ellos.

El desarrollo se concentró en unas cuatro semanas (20 de abril - 17 de mayo) hasta la entrega académica, con memoria técnica, diagramas de casos de uso, modelo relacional y pruebas de caja negra documentadas aparte en un PDF de más de 2,5 MB. Posteriormente se añadió un modo demo que sustituye la pasarela de pago, la búsqueda de artistas vía Spotify y las imágenes de Unsplash por versiones simuladas (para poder enseñarlo sin depender de credenciales de terceros ni de coste), un dataset de ejemplo más amplio, y despliegue en Azure Container Apps con Postgres pausable para no consumir crédito entre demos.

DocumentMemoria técnica de fest.ioCasos de uso, modelo relacional, pruebas de caja negra y despliegue.PDF2.5 MBOpen(opens in a new tab)
DocumentDefensa del trabajo de fest.ioDiapositivas de la presentación final de la práctica.PDF924 KBOpen(opens in a new tab)

El proyecto se calificó con un sobresaliente debido a que se incluyó partes voluntarias como la contenerización, ticket etc..

Qué ofrece la plataforma

Público (sin cuenta)

  • Catálogo de festivales con buscador
  • Ficha de festival: cartel de artistas, fechas, ubicación, aforo y tipos de abono disponibles

Cliente

  • Registro e inicio de sesión
  • Compra de abonos con tarjeta a través de una pasarela de pago externa
  • Recarga de saldo tipo pulsera cashless
  • Entradas como código QR único por abono
  • Solicitud de reembolso si el festival organizador lo cancela
  • Gestión de perfil y ajustes de cuenta

Empresa organizadora

  • Alta sujeta a verificación por un administrador antes de poder operar
  • CRUD de festivales, cartel de artistas y tipos de abono (precio, stock)
  • Panel con gráficas de ventas e ingresos por festival
  • Ajustes de cuenta

Administrador

  • Verificación y bloqueo de empresas organizadoras
  • Consulta de logs del servidor, con tokens y secretos redactados antes de mostrarse

Técnico

React 19 + Vite + TypeScript + TailwindCSS en el frontend; Node.js + Express + TypeScript en el backend, con Prisma ORM sobre PostgreSQL. Autenticación con Passport + JWT, validación con Zod, logging estructurado con Pino y API documentada con OpenAPI/SwaggerUI. Contenerizado con Docker Compose para desarrollo local; desplegado en Azure Container Apps para demo pública.