From 6c163fd800fc4e94f2fe7cfd0c67361fd71efdf5 Mon Sep 17 00:00:00 2001 From: bisco Date: Tue, 5 May 2026 11:09:01 +0200 Subject: [PATCH 1/2] feat: refine frontend italian copy --- frontend/src/app/app.component.ts | 2 +- .../booking-placeholder-page.component.ts | 30 ++++++------ .../check-in-placeholder-page.component.ts | 32 ++++++------- frontend/src/app/pages/home-page.component.ts | 46 +++++++++---------- .../reservation-confirm-page.component.ts | 28 +++++------ 5 files changed, 69 insertions(+), 69 deletions(-) diff --git a/frontend/src/app/app.component.ts b/frontend/src/app/app.component.ts index 9c4d5af..eb031f3 100644 --- a/frontend/src/app/app.component.ts +++ b/frontend/src/app/app.component.ts @@ -50,7 +50,7 @@ import { MatButtonModule } from '@angular/material/button'; @@ -69,7 +69,7 @@ type ApiValidationErrors = Record;
info -

Ti chiediamo solo l'essenziale. I posti vengono confermati solo dopo la verifica via email.

+

Ti chiediamo solo il necessario. La conferma via email ci aiuta a tenere la disponibilita' chiara per tutti.

@@ -86,7 +86,7 @@ type ApiValidationErrors = Record; mail Email - Invieremo qui il link di conferma. + Qui arrivera' il link per confermare la tua richiesta. @if (bookingForm.controls.email.touched && bookingForm.controls.email.hasError('required')) { L'email e' obbligatoria. } @@ -99,7 +99,7 @@ type ApiValidationErrors = Record; group Numero di posti - Indica il numero totale di persone della prenotazione. + Indica quante persone desideri includere nella prenotazione. @if (bookingForm.controls.partySize.touched && bookingForm.controls.partySize.hasError('required')) { Il numero di posti e' obbligatorio. } @@ -413,7 +413,7 @@ export class BookingPlaceholderPageComponent { this.fieldErrors.set(this.flattenValidationErrors(error.error as ApiValidationErrors)); return; } - this.submitError.set('Non siamo riusciti a creare la prenotazione. Riprova.'); + this.submitError.set('Non siamo riusciti a inviare la richiesta in questo momento. Riprova tra poco.'); }, }); } diff --git a/frontend/src/app/pages/check-in-placeholder-page.component.ts b/frontend/src/app/pages/check-in-placeholder-page.component.ts index 8c55ebe..d6da6d4 100644 --- a/frontend/src/app/pages/check-in-placeholder-page.component.ts +++ b/frontend/src/app/pages/check-in-placeholder-page.component.ts @@ -64,19 +64,19 @@ type BarcodeDetectorConstructor = new (options?: { formats?: string[] }) => Barc

Ingresso sala

-

Uno strumento pensato per un'accoglienza rapida e chiara.

+

Uno strumento pensato per accogliere bene, anche nei momenti piu' intensi.

    -
  • Inquadra il QR code quando la fotocamera del dispositivo e' disponibile.
  • -
  • Inserisci il token manualmente se la scansione non e' possibile.
  • -
  • Conferma l'ingresso solo dopo aver verificato che i dati corrispondano alla prenotazione.
  • +
  • Inquadra il QR code se la fotocamera del dispositivo e' disponibile.
  • +
  • Inserisci il token a mano se la scansione non e' praticabile.
  • +
  • Conferma l'ingresso solo quando i dati a schermo corrispondono alla prenotazione del pubblico.
@@ -86,7 +86,7 @@ type BarcodeDetectorConstructor = new (options?: { formats?: string[] }) => Barc

Scansione con fotocamera

-

Disponibile nei browser compatibili. Se il QR contiene l'intero link di check-in, il token viene estratto automaticamente.

+

Nei browser compatibili il token viene letto automaticamente dal QR code, anche quando contiene l'intero link di check-in.

@@ -136,7 +136,7 @@ type BarcodeDetectorConstructor = new (options?: { formats?: string[] }) => Barc Verifica in corso... } @else { - Anteprima check-in + Controlla prenotazione } Inizio @@ -146,7 +146,7 @@ type BarcodeDetectorConstructor = new (options?: { formats?: string[] }) => Barc @if (previewData() && shouldShowPreview()) {
-

Anteprima accesso

+

Dati per l'ingresso

Spettacolo
{{ previewData()!.show_title }}
Spazio
{{ previewData()!.venue_name }}
@@ -157,11 +157,11 @@ type BarcodeDetectorConstructor = new (options?: { formats?: string[] }) => Barc
@@ -169,24 +169,24 @@ type BarcodeDetectorConstructor = new (options?: { formats?: string[] }) => Barc @if (state() === 'confirm_success' && confirmData()) {

- Ingresso confermato alle {{ confirmData()!.checked_in_at | date: 'HH:mm' }}. + Ingresso registrato alle {{ confirmData()!.checked_in_at | date: 'HH:mm' }}.

} @if (state() === 'invalid_token') { -

Token non valido.

+

Il token inserito non e' valido.

} @if (state() === 'pending_reservation') { -

La prenotazione non e' ancora confermata.

+

La prenotazione non e' ancora stata confermata dal pubblico.

} @if (state() === 'already_checked_in') { -

Questa prenotazione risulta gia' registrata all'ingresso.

+

Questa prenotazione risulta gia' registrata in ingresso.

} @if (state() === 'unauthorized') {

Non sei autorizzato. Accedi a /admin con un account staff, lascia ricaricare la pagina con quella sessione e poi riprova.

} @if (state() === 'error') { -

Qualcosa non ha funzionato. Riprova.

+

Non siamo riusciti a completare la verifica. Riprova tra poco.

} diff --git a/frontend/src/app/pages/home-page.component.ts b/frontend/src/app/pages/home-page.component.ts index ee51156..7be5730 100644 --- a/frontend/src/app/pages/home-page.component.ts +++ b/frontend/src/app/pages/home-page.component.ts @@ -13,13 +13,13 @@ import { API_BASE_URL } from '../services/api-config.token';

AzioneLab

-

Laboratori, scena e produzioni che mettono il pubblico al centro.

+

Un luogo dove il teatro prende forma, voce e relazione.

- AzioneLab intreccia laboratori teatrali, produzioni audio/visive e una presenza scenica pensata per spazi vivi e raccolti. Il sito accompagna il pubblico con chiarezza: scoperta degli spettacoli, prenotazione essenziale, conferma serena all'ingresso. + AzioneLab intreccia laboratori teatrali, produzioni audio/visive e momenti scenici costruiti con cura. Qui il pubblico trova una casa aperta: puo' scoprire gli spettacoli, prenotare con semplicita' e arrivare in sala con la leggerezza di chi sa gia' dove andare.

@@ -27,8 +27,8 @@ import { API_BASE_URL } from '../services/api-config.token';
- Questa sera da AzioneLab - Le porte aprono 30 minuti prima dell'inizio + Questa sera in scena + Ti aspettiamo in sala con il tempo giusto per entrare nell'atmosfera
@@ -36,29 +36,29 @@ import { API_BASE_URL } from '../services/api-config.token';
-

In breve

-

Un sito pensato per una compagnia viva, non per una macchina impersonale di biglietteria

+

Perche' AzioneLab

+

Non solo prenotazioni: un invito a entrare nel lavoro, nell'ascolto e nella scena

-

L'esperienza pubblica resta semplice: scegli uno spettacolo, richiedi i posti, conferma via email, arriva con il tuo QR code.

+

Ogni passaggio e' pensato per restare umano: guardi cosa c'e', scegli la data, ricevi conferma e arrivi in teatro senza attriti.

- Scegli la replica giusta + Trova la serata che fa per te -

Le schede degli spettacoli tengono in primo piano luogo, orari e disponibilita', senza confusione.

+

Le schede tengono vicini i dettagli che contano davvero: luogo, orario, disponibilita' e respiro dello spettacolo.

- Conferma via email + Una conferma semplice, senza fretta -

Le richieste restano in attesa finche' il pubblico non conferma, cosi' la capienza resta affidabile e semplice da gestire.

+

Ricevi un'email, confermi quando vuoi e la tua prenotazione prende forma in modo chiaro e affidabile.

- Accoglienza rapida + Accoglienza attenta all'ingresso -

Lo staff puo' verificare il token, controllarlo lato server e registrare l'ingresso in un flusso compatto.

+

Lo staff puo' accompagnare l'arrivo del pubblico con uno strumento rapido, discreto e pensato per il lavoro in sala.

@@ -66,21 +66,21 @@ import { API_BASE_URL } from '../services/api-config.token';
-

Percorso del pubblico

-

Dall'interesse all'ingresso in pochi passaggi chiari

+

Il percorso del pubblico

+

Dalla curiosita' al posto in sala, con naturalezza

    -
  1. Esplora la programmazione pubblica e apri la scheda di uno spettacolo.
  2. -
  3. Richiedi i posti per una replica e conferma via email.
  4. -
  5. Tieni pronto il QR code sul telefono o su carta per l'ingresso.
  6. +
  7. Scopri la programmazione e lasciati guidare dalla scheda di ogni spettacolo.
  8. +
  9. Richiedi i posti per la replica che preferisci e conferma dall'email ricevuta.
  10. +
  11. Conserva il QR code sul telefono oppure stampalo e portalo con te all'ingresso.
- Base tecnica + Dietro le quinte -

URL base API

+

Collegamento API

{{ apiBaseUrl }} -

Il frontend resta allineato alle API Django gia' esistenti, senza cambiare i contratti del backend.

+

La parte pubblica del sito dialoga con le API Django esistenti senza cambiare il comportamento del backend.

diff --git a/frontend/src/app/pages/reservation-confirm-page.component.ts b/frontend/src/app/pages/reservation-confirm-page.component.ts index f06e16b..9efe929 100644 --- a/frontend/src/app/pages/reservation-confirm-page.component.ts +++ b/frontend/src/app/pages/reservation-confirm-page.component.ts @@ -24,8 +24,8 @@ type ConfirmationState = 'loading' | 'success' | 'invalid' | 'expired' | 'error'
@@ -34,8 +34,8 @@ type ConfirmationState = 'loading' | 'success' | 'invalid' | 'expired' | 'error'
-

Stiamo confermando la prenotazione...

-

Attendi qualche istante mentre verifichiamo il link.

+

Stiamo completando la tua conferma...

+

Un attimo ancora, stiamo verificando il link ricevuto via email.

} @@ -46,11 +46,11 @@ type ConfirmationState = 'loading' | 'success' | 'invalid' | 'expired' | 'error' verified
-

Prenotazione confermata

-

I tuoi posti sono confermati. Mostra questo QR code all'ingresso e conserva il link nel caso lo staff debba aprirlo manualmente.

+

I tuoi posti sono confermati

+

Perfetto: la prenotazione e' andata a buon fine. Tieni questo QR code a portata di mano e mostralo all'ingresso quando arrivi.

- qr_code_2 Pronto per l'ingresso - theater_comedy Ci vediamo a teatro + qr_code_2 QR pronto da mostrare + theater_comedy Ti aspettiamo in sala
@@ -72,11 +72,11 @@ type ConfirmationState = 'loading' | 'success' | 'invalid' | 'expired' | 'error'

Cosa fare adesso

-

Conserva il QR code sul telefono oppure stampalo. Lo staff potra' leggerlo direttamente all'ingresso.

+

Conserva il QR code sul telefono oppure stampalo. All'ingresso bastera' mostrarlo allo staff.

Ti serve di nuovo il link?

-

Tieni l'email di conferma: potrai riaprire la pagina di check-in in qualsiasi momento se dovrai mostrare ancora il QR.

+

Tieni l'email di conferma: potrai riaprire questa pagina in qualsiasi momento se vorrai recuperare il QR.

} @@ -88,7 +88,7 @@ type ConfirmationState = 'loading' | 'success' | 'invalid' | 'expired' | 'error'

Link di conferma non valido

-

Questo token non e' valido. Usa l'ultimo link di conferma ricevuto via email.

+

Questo link non risulta valido. Ti consigliamo di usare l'ultimo messaggio ricevuto via email.

} @@ -100,7 +100,7 @@ type ConfirmationState = 'loading' | 'success' | 'invalid' | 'expired' | 'error'

Link di conferma scaduto

-

Questo link e' scaduto. Crea una nuova prenotazione.

+

Il link che hai aperto non e' piu' attivo. Ti chiediamo di creare una nuova prenotazione.

} @@ -111,8 +111,8 @@ type ConfirmationState = 'loading' | 'success' | 'invalid' | 'expired' | 'error' warning
-

Non siamo riusciti a confermare la prenotazione

-

Riprova tra qualche istante.

+

Non siamo riusciti a completare la conferma

+

Riprova tra qualche istante: il tuo link potrebbe avere bisogno di un nuovo tentativo.

} From 185003e0014ec61d046e96c6b6c33bff72c25a7e Mon Sep 17 00:00:00 2001 From: bisco Date: Tue, 5 May 2026 11:53:21 +0200 Subject: [PATCH 2/2] fix: serve frontend assets without spa fallback --- frontend/angular.json | 5 +++++ infra/docker/frontend/nginx.conf | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/frontend/angular.json b/frontend/angular.json index 3efaeee..7f5a4de 100644 --- a/frontend/angular.json +++ b/frontend/angular.json @@ -21,6 +21,11 @@ { "glob": "**/*", "input": "public" + }, + { + "glob": "**/*", + "input": "src/assets", + "output": "assets" } ], "styles": [ diff --git a/infra/docker/frontend/nginx.conf b/infra/docker/frontend/nginx.conf index cac4dcd..a14f8ee 100644 --- a/infra/docker/frontend/nginx.conf +++ b/infra/docker/frontend/nginx.conf @@ -5,6 +5,10 @@ server { root /usr/share/nginx/html; index index.html; + location /assets/ { + try_files $uri =404; + } + location / { try_files $uri $uri/ /index.html; }