Centre: Institut Esteve Terradas i Illa (Cornellà de Llobregat)
Cicle: Desenvolupament d'aplicacions multiplataforma
Inici: 28 de octubre de 2026
Final: 18 de novembre de 2026
Platea és una plataforma de venda d’entrades i control d’accés per a una sala d’espectacles de mida mitjana. El públic consulta la cartellera, tria entrades o seients numerats i les compra des d’una APP mòbil, on rep les entrades nominals amb un codi QR. El personal de la sala fa servir una aplicació d’escriptori en JavaFX, configurable com a taquilla, porta o oficina, per seguir les vendes, veure l’ocupació del recinte en un mapa gràfic, validar les entrades a la porta i gestionar reemborsaments.
Un servidor desplegat sobre Linux centralitza les dades (catàleg en XML i base de dades), comunica les dues aplicacions en temps real per WebSockets i garanteix que cap seient es vengui dues vegades.
Inici: 28 de octubre de 2026
Final: 4 de novembre de 2026
Hores estimades totals: 27,0
Configurar un repositori per a cadascuna de les tres aplicacions (SRV, APP i DESKTOP), amb les branques dev, pre i pro.
hores estimades: 1,0 Mòduls: MP06 MP07 MP08 MP09
Tots els membres de l'equip fan almenys 4 commits.
hores estimades: 0,0 Mòduls: MP06 MP07 MP08 MP09
Definir la identitat visual de les aplicacions (nom, logotip, paleta de colors i tipografies) i documentar-la a la wiki del GitHub
hores estimades: 2,0 Mòduls: MP07 MP08
Dibuixar els wireframes de les pantalles principals de l'APP (cartellera, cistella, les meves entrades) i del DESKTOP (llistat de vendes, detall de venda) i documentar-los a la wiki.
hores estimades: 3,0 Mòduls: MP07 MP08
SRV: servidor WebSockets que accepta connexions i respon a missatges JSON de prova (ping, bounce).
hores estimades: 1,0 Mòduls: MP09
SRV: llegir el catàleg d'ESDEVENIMENTS.XML (esdeveniments amb ID, nom, data i hora, categoria, descripció i imatge; recinte i zones del recinte, numerades o d'entrada general, amb el seu aforament; i tipus d'entrada amb nom, zona, preu i quota) i carregar-lo en estructures de dades adequades.
Caldrà crear un catàleg amb, al menys 20 recintes amb 1 o 2 esdeveniments cadascun.
Exemple d'XML
<?xml version="1.0" encoding="UTF-8"?>
<cataleg>
<!-- Recintes amb les seves zones -->
<recintes>
<recinte id="R1" nom="Sala Petita">
<zona id="Z1" nom="Platea" tipus="numerada" aforament="60"/>
<zona id="Z2" nom="Dempeus" tipus="general" aforament="40"/>
</recinte>
</recintes>
<!-- Esdeveniments: cadascun indica el recinte on es fa -->
<esdeveniments>
<esdeveniment id="E1" recinte="R1">
<nom>Coses que no es diuen en un sopar</nom>
<dataHora>2026-11-21T21:30</dataHora>
<categoria>Monòleg</categoria>
<descripcio>Una hora d'humor sobre les converses incòmodes de cada dia.</descripcio>
<imatge>monoleg-sopar.jpg</imatge>
<tipusEntrades>
<tipusEntrada id="T1" nom="Platea" zona="Z1" preu="18.00" quota="50"/>
<tipusEntrada id="T2" nom="Platea reduïda" zona="Z1" preu="14.00" quota="10"/>
<tipusEntrada id="T3" nom="Dempeus" zona="Z2" preu="12.00" quota="40"/>
</tipusEntrades>
</esdeveniment>
</esdeveniments>
</cataleg>
hores estimades: 3,0 Mòduls: MP06 MP09
SRV: atendre les peticions dels clients: llista d'esdeveniments i, per a cada esdeveniment, els seus tipus d'entrada amb les entrades disponibles.
hores estimades: 2,0 Mòduls: MP06 MP09
SRV-CLI: client de línia de comandes per provar contra el servidor les peticions d'esdeveniments i tipus d'entrada.
hores estimades: 1,0 Mòduls: MP09
DESKTOP: aplicació JavaFX bàsica per al personal de la sala. En el primer inici demana la ubicació (taquilla, porta, oficina) i la URL del servidor, es connecta per WebSockets informant de l'èxit o de l'error i desa la configuració a CONFIG.XML perquè no s'hagi de tornar a introduir.
hores estimades: 2,0 Mòduls: MP06 MP07 MP09
DESKTOP: mostra la llista d'esdeveniments i els tipus d'entrada de cadascun (no imatges entrada)
hores estimades: 2,0 Mòduls: MP07 MP09
APP/INICI: en el primer inici demana la URL del servidor i el nom i el correu del comprador (les entrades són nominals), ho desa a CONFIG.XML i es connecta al servidor informant de l'èxit o de l'error.
hores estimades: 2,0 Mòduls: MP06 MP08
APP/CARTELLERA: llista dels esdeveniments segons el disseny; en tocar-ne un, es mostren els seus tipus d'entrada amb nom i preu (sense imatges)
hores estimades: 2,0 Mòduls: MP06 MP08
APP/ENTRADES: tocar un tipus d'entrada l'afegeix a la cistella.
De moment, només es mostren entrades GENERALS, no entrades numerades.
En algun lloc de la view es mostra el número d'elements dins la cistella.
hores estimades: 1,0 Mòduls: MP08
APP/CISTELLA/LLISTA: vista de la cistella amb cada tipus d'entrada, la quantitat, el preu i el total.
hores estimades: 1,0 Mòduls: MP08
Quan l'usuari valida la cistella amb entrades generals, el SRV les reserva assignant un LOCALITZADOR (codi úinic de reserva) que enregistra al SRV i que notifica a la APP.
L'APP mostra un missatge de OK amb els localitzadors retornats, o de ERROR.
Les entrades s'enregistren en un arxiu JSON amb nom <id_esdeveniment>.json on es guarda el tipus d'entrada, el localitzador, i el nom i correu de la persona que ha reservat.
hores estimades: 4,0 Mòduls: MP06 MP08 MP09
Inici: 4 de novembre de 2026
Final: 11 de novembre de 2026
Hores estimades totals: 0
hores estimades: 0,0 Mòduls: MP06 MP07 MP08 MP09
Inici: 11 de novembre de 2026
Final: 18 de novembre de 2026
Hores estimades totals: 0
Cal tenir en compte com es definiran els seients per a les entrades numerades i com es marcaran les reserves.
Restriccions: per a les entrades numerades, cada espai podrà tenir diverses zones, totes elles rectangulars, definides per files x seients.
Abans d'implementar la BD, enviar-la al professor per a validació.
hores estimades: 0,0 Mòduls: MP06
hores estimades: 0,0 Mòduls: MP06 MP07
Es mostrarà la zona com a espai quadrat de files x butaques.
Amb diferents colors es distingiran l'estat de cada butaca: lliure, reservada (un altre usuari l'ha reservat) , seleccionada (per l'usuari actual).
L'usuari pot seleccionar les entrades, clicant-les; quedaran en un color destacat i aniran a la cistella per ser reservades definitivament.
hores estimades: 0,0 Mòduls: MP08
Cal garantir que un seient no es ven mai dues vegades i que cap tipus d'entrada supera la seva quota: si alguna entrada ja no està disponible, la compra es rebutja sencera amb un missatge clar.
hores estimades: 0,0 Mòduls: MP06 MP08 MP09
hores estimades: 0,0 Mòduls: MP06 MP08 MP09
hores estimades: 0,0 Mòduls: MP08
hores estimades: 0,0 Mòduls: MP08
DESKTOP/VENDES: canvas amb el dibuix de les localitats (cadires) per esdeveniment, en clicar-ne una es veu el detall del comprador. A sota hi ha d'haver un llistat de vendes en ordre cronològic.
hores estimades: 0,0 Mòduls: MP06 MP07 MP09
APP/CISTELLA/AFEGIR: afegir de nou un tipus d'entrada que ja és a la cistella n'augmenta la quantitat en lloc de crear una línia nova, amb un màxim d'entrades per comprador i esdeveniment.
hores estimades: 0,0 Mòduls: MP08
APP/CISTELLA/RESTAR: quan la quantitat d'una línia baixa a 0, la línia desapareix de la cistella (i, si era un seient numerat, torna a sortir lliure al mapa).
hores estimades: 0,0 Mòduls: MP08
DESKTOP+SRV/VENDA DETALLADA: el detall de venda mostra les entrades una per una, cadascuna amb el seu estat (venuda, validada, reemborsada), per poder actuar sobre cada entrada per separat. Ha de mostrar el dibuix amb la ubicació de la localitat (cadira) a la sala.
hores estimades: 0,0 Mòduls: MP06 MP07
SRV+DESKTOP+APP/ACCÉS: amb el DESKTOP configurat com a «porta», es valida el codi de l'entrada (teclejat o llegit amb un lector QR USB). El servidor comprova el codi, marca l'entrada com a validada i rebutja els codis inexistents o ja validats. El DESKTOP mostra el resultat de manera clara i l'APP del comprador rep una notificació d'entrada validada.
hores estimades: 0,0 Mòduls: MP06 MP07 MP08 MP09
DESKTOP+SRV/REEMBORSAMENT: permet retornar una venda completa o només algunes entrades, mostrant el subtotal de les seleccionades. Les entrades retornades deixen de donar accés (el QR ja no és vàlid) i els seus seients tornen a estar a la venda.
hores estimades: 0,0 Mòduls: MP06 MP07
APP+SRV/IMATGES: la cartellera i el detall de cada esdeveniment mostren el seu cartell, descarregat del servidor.
hores estimades: 0,0 Mòduls: MP08 MP09
DESKTOP+SRV/AVISOS: des del DESKTOP configurat com a «oficina» es pot enviar un avís sobre un esdeveniment (portes obertes, retard, cancel·lació...). El servidor el fa arribar a les APPs dels compradors que tenen entrades d'aquell esdeveniment.
hores estimades: 0,0 Mòduls: MP07 MP09
VÍDEO: vídeo de presentació del projecte, publicat a YouTube, amb l'enllaç a la plataforma de gestió del projecte.
hores estimades: 0,0 Mòduls: MP06 MP07 MP08 MP09
APP/AVISOS: les notificacions (entrades validades, avisos de l'organització) es guarden en una safata d'avisos fins que el comprador les descarta.
hores estimades: 0,0 Mòduls: MP08
DESKTOP+SRV/ESTADÍSTIQUES: vista d'estadístiques amb els esdeveniments i els tipus d'entrada més venuts, els ingressos i el percentatge d'ocupació de cada esdeveniment.
hores estimades: 0,0 Mòduls: MP06 MP07 MP09
SRV+APP/SEIENTS EN TEMPS REAL: quan es ven un seient, el servidor envia un broadcast a totes les APPs que tenen el mapa obert perquè l'actualitzin.
hores estimades: 0,0 Mòduls: MP08 MP09
SRV/RESERVA: els seients afegits a la cistella queden bloquejats uns minuts; si no es completa la compra, el servidor els allibera automàticament.
hores estimades: 0,0 Mòduls: MP06 MP09
SRV/CORREU: en confirmar la compra, el servidor envia les entrades per correu amb el QR (servidor SMTP de proves).
hores estimades: 0,0 Mòduls: MP09
SRV/SEGURETAT: el codi de cada entrada és un token signat (HMAC) amb una clau del servidor, de manera que no es pot falsificar ni endevinar.
hores estimades: 0,0 Mòduls: MP09
DESKTOP+SRV/INVITACIONS: importar una llista d'invitats en CSV i emetre'n les entrades de cop; exportar la llista d'assistents d'un esdeveniment.
hores estimades: 0,0 Mòduls: MP06 MP07
APP+SRV/PROMOCIONS: aplicar un codi de descompte a la cistella, validat pel servidor.
hores estimades: 0,0 Mòduls: MP06 MP08 MP09
APP/ESCÀNER: mode de personal d'accés a l'APP que llegeix el QR de les entrades amb la càmera.
hores estimades: 0,0 Mòduls: MP08 MP09
DESKTOP/EDITOR: crear i editar esdeveniments, zones i tipus d'entrada des del DESKTOP (formularis amb validació).
hores estimades: 0,0 Mòduls: MP06 MP07
APP+SRV/ABONAMENTS: abonament de temporada que dona accés a diversos esdeveniments.
hores estimades: 0,0 Mòduls: MP06 MP08 MP09
APP+DESKTOP/IDIOMES: interfícies en català, castellà i anglès.
hores estimades: 0,0 Mòduls: MP07 MP08