Prompt per generar aplicació en Python

Hem utilizat Python perquè es més fácil amb flask per fer la web dinàmica

Aquest es el promp que he fet perquè sortís el codi.

Crea una aplicació web completa en Python utilitzant exclusivament les llibreries natives ‘http.server’, ‘sqlite3’, ‘json’ i ‘datetime’ (sense frameworks externs com Flask o Django). L’aplicació ha de gestionar un sistema de reserves de places dividit per torns horaris, amb les següents especificacions detallades:

  1. BASE DE DADES (SQLite):
       – S’ha d’anomenar «usuarios.db».
       – Ha de tenir una taula «usuarios» amb els camps: id (autoincremental), nombre, apellido, email, instituto, hora, acompanantes, i fecha_registro.
       – Surt d’una restricció UNIQUE per a la combinació de (nombre, apellido) per evitar duplicats. Tots els noms i cognoms s’han de guardar en minúscules a la base de dades.
  2. LÒGICA DE CONTROL DE CUPOS i TORNS:
       – Les franges horàries disponibles són de 15 minuts, des de les «16:00» fins a les «18:45».
       – L’aforament màxim és de 20 persones per cada HORA COMPLETA (és a dir, la suma d’assistents de totes les franges d’una mateixa hora, com les 16:xx, no pot superar les 20 persones).
       – Crea una funció que calculi dinàmicament les places lliures restants per a cada franja horària restant d’aquella hora pare.
  3. INTERFÍCIE PÚBLICA (Ruta GET ‘/’):
       – Ha de retornar una pàgina HTML/CSS/JS moderna, elegant i completament adaptativa (responsive) amb el fons fosc, tipografia ‘Plus Jakarta Sans’, efectes de glassmorfisme (backdrop-filter) i imatges de fons d’Unsplash de temàtica tecnològica.
       – Un formulari en català que demani: Nom, Cognom, Correu Electrònic, Institut (opcional) i Nombre de persones (mínim 1, màxim 4).
       – Una graella visual (grid) de botons tipus «radio-card» per triar el torn. Les franges sense places disponibles han de quedar desactivades i amb opacitat reduïda.
       – El formulari ha de tenir una doble validació en JS: primer mostra una targeta de confirmació amb el resum de les dades inserides i, en fer clic a «Confirmar registre», enviar les dades mitjançant un ‘fetch’ asíncron en format JSON via POST a la mateixa ruta.
  4. CONTROL DEL POST (Ruta POST ‘/’):
       – Rep el JSON i valida al costat del servidor que el nombre d’assistents no superi les 4 persones ni superi el cupó de places lliures de l’hora corresponent.
       – Si tot és correcte, insereix el registre i respon amb un JSON de confirmació { «ok»: true }. Si falla per límit de places o per usuari duplicat, respon amb un missatge d’error clar.
  5. PANELL D’ADMINISTRACIÓ PROTEGIT (Ruta GET ‘/admin’):
       – Ha d’estar protegit per autenticació bàsica de servidor (HTTP Basic Auth). L’usuari ha de ser ‘admin’ i la contrasenya ‘ICastellbisbal’. Si no és correcte, ha de llançar un error 401 ‘No autoritzat’.
       – Si és correcte, mostra una taula HTML elegant amb fons fosc i línies porpres que llisti tots els usuaris registrats ordenats per hora de manera ascendent, mostrant el total de persones inscrites en un comptador global.

Finalment, configura el servidor perquè corri al port 5000 a l’adreça «0.0.0.0» permetent la reutilització de l’adreça (allow_reuse_address = True). Escriu tot el codi en un únic fitxer net i estructurat amb comentaris explicatius.

🤖 Assistent Iker Díaz
Hola! Soc la teva IA personalitzada. He llegit la teva web i estic llest per respondre preguntes. Què vols saber?