Case study · Prototipo di piattaforma creativa
Una città
non è una lista.
La rete prima dell’interfaccia
Novera modella la scena culturale di Roma come un sistema connesso di persone, eventi, luoghi e quartieri, prima che ogni relazione sia pienamente esposta nell’interfaccia.
Stasera, a San Lorenzo
Partire da qualcosa di concreto: una sera, un quartiere e una schermata che riceve i dati dal backend.
-
Telemetria
- Endpoint
- GET /api/home
- Rendering
- React Server Component — richiesta lato server
- Dati
- Una città seedata · 29 record di dominio
- Registrata nel
- Log di accesso di Laravel
La home è oggi l’unica schermata frontend principale alimentata dall’API aggregata Laravel. Intestazione della città, contatori e feed delle attività arrivano tutti da un solo endpoint, richiesto e renderizzato da un React Server Component.
La richiesta avviene sul server, quindi non compare nel pannello di rete del browser. Si trova invece nel log di accesso di Laravel.
I conteggi mostrati a schermo sono totali di dati dimostrativi, non metriche d’uso.
Tutto sta da qualche parte
Il quartiere non è un tag. È una relazione di primo livello portata da ogni entità del dominio.
Presente in
San Lorenzo
- Artisti 1
- Eventi 1
- Spazi 1
- Collettivi 1
- Live room 1
- Open call 1
Artisti, eventi, spazi, collettivi, live room e open call hanno tutti un riferimento al quartiere. È quella singola decisione a permettere di leggere una scena per luogo invece che per categoria.
San Lorenzo è l’unico quartiere collegato a tutte e sei le categorie nel seed. Monti non ha ancora riferimenti, e il campo lo mostra.
Nello schema, ogni quartiere ha un tono editoriale e coordinate di layout astratte. Il campo qui sopra usa quei valori map_x / map_y, riscalati per riempire la cornice. Il prodotto non usa latitudine, tile di mappa o geolocalizzazione.
Segui la connessione
Un artista suona a un evento, l’evento accade in uno spazio, lo spazio sta in un quartiere, il quartiere ospita collettivi e open call.
La giunzione che trasforma sei elenchi separati in una scena leggibile.
Novera modella questa catena con chiavi esterne a ogni passaggio e riferimenti polimorfici, che permettono ai record di attività e raccomandazione di puntare a qualsiasi entità.
Le relazioni esistono nel modello di dominio anche dove l’interfaccia attuale non le rende ancora navigabili.
- Artista
- belongsTo City, District — Un profilo con disciplina, tag, link e competenze, ancorato a un quartiere.
- Evento
- belongsTo Space, Collective, District · hasMany OpenCall — Un evento sa dove accade, chi lo organizza e quali call apre.
- Spazio
- belongsTo City, District — Un luogo con tipo, capienza e dotazioni, collocato in un quartiere.
- Quartiere
- collegato a ogni entità del dominio — La giunzione che trasforma sei elenchi separati in una scena leggibile.
- Collettivo e open call
- belongsTo District · OpenCall belongsTo Collective, Event, Space — Dove una scena passa da cose che accadono a persone che si cercano.
Due metà
Il progetto ha oggi due metà ancora sbilanciate, riunite in un solo disegno.
Compiuto
- 19 endpoint in sola lettura
- 10 entità di dominio
- API Resources con basi condivise
- Relazioni Eloquent, anche polimorfiche
- Filtri condivisi città / quartiere / stato
- Una risposta aggregata per la home
Evidenzia le superfici per fonte dati
Superficie servita dall’API evidenziata
Laravel espone diciannove endpoint in sola lettura su dieci entità, con API Resources, relazioni caricate in eager e uno strato di filtri condiviso. L’app Next.js ne consuma esattamente uno. Tutto il resto — le directory di artisti, eventi e room — gira su array locali dichiarati nei componenti stessi. Sono interfacce complete costruite su dati dimostrativi.
I tipi TypeScript che descrivono l’API sono scritti a mano, quindi il contratto fra le due metà è una convenzione, non qualcosa di generato o verificato a runtime.
Filtrare una scena
La directory degli eventi è l’esempio più chiaro della separazione: dati dimostrativi sotto, interazione autentica sopra.
La directory gira su dati dimostrativi locali, ma la sua logica di filtro è reale: due filtri attivi riducono dodici record a quattro. Il filtro combina più assi contemporaneamente — tipo, periodo, accesso, capienza, quartiere e una ricerca testuale — e ogni controllo è un vero toggle con lo stato premuto esposto alle tecnologie assistive.
Il risultato da 12 a 4 viene dall’applicazione in esecuzione.
Modellato, non ancora abitato
Qui si ferma oggi il prototipo.
- Dieci entità di dominio
- Diciannove endpoint in sola lettura
- Il quartiere come relazione di primo livello
- Record polimorfici di attività e raccomandazione
- Una risposta aggregata per la home
- Filtro degli eventi lato client
- Autenticazione
- Creazione di contenuti
- Candidature alle open call
- Azioni persistenti di follow, salvataggio e ingresso
- Integrazione completa fra directory e API
- Dati reali multi-città
- Raccomandazioni calcolate
- Deploy in produzione
L’interfaccia offre un selettore di città, ma il backend contiene una sola città seedata e il controller della home risolve Roma esplicitamente. Non dimostra il supporto multi-città.
I record di raccomandazione sono modellati ma non calcolati. Punteggi e motivazioni sono contenuti dimostrativi, non output di un algoritmo.
Tutte le fotografie in queste schermate sono materiale stock di riferimento, non contenuti dell’applicazione.
Ciò che qui è compiuto è un modo di descrivere una città.
Ciò che non lo è ancora è tutto quello che permetterebbe alle persone di abitarla.