Case study 01 / 04 Novera · rete creativa Prototipo in sviluppo
Roma · una sola città seedata 29 record di dominio Lettura

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.

Ruolo
Full Stack Web Developer
Stato
Prototipo in sviluppo
Ambito
Product design, modellazione del dominio, API, frontend
Stack
Laravel 13 · Next.js 16 · React 19 · TypeScript
Entra nella console Sorgente · repository privata
Campo · Roma Quartieri 6 Campo astratto: i sei quartieri seedati su una struttura radiale interrotta. Non è una mappa geografica. SAN LORENZO OSTIENSE PIGNETO TRASTEVERE TESTACCIO MONTI
Alba Forma · live room 01
Neri Luce · work uploaded 02
Ruins in Frequency · event 03
Attività seedata · date fisse
01 Ricezione del segnale

Stasera, a San Lorenzo

Partire da qualcosa di concreto: una sera, un quartiere e una schermata che riceve i dati dal backend.

Home · risposta aggregata Intestazione della home di Novera con “Rome is moving tonight” e quattro contatori: 4 artisti, 2 room, 4 open call, 3 spazi.
FIG 01.1 Contatori calcolati lato server da un solo endpoint. 1440×900.
Live now · segnali per quartiere Una fila di schede di quartiere: Night Archive a Pigneto, Travertine Echoes a Ostiense, Alba Forma a Ostiense e altre room a San Lorenzo.
FIG 01.2 Room, drop e call, letti per quartiere invece che per categoria.
Fresh signals · attività seedata Sei righe di attività: una listening session avviata, un lavoro caricato, un evento pubblicato, una richiesta di collaborazione, un artista che entra e un collettivo che cerca persone.
FIG 01.3 Ogni riga porta un quartiere. I timestamp dicono 63d: il seed ha date fisse.
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.

02 Campo dei quartieri

Tutto sta da qualche parte

Il quartiere non è un tag. È una relazione di primo livello portata da ogni entità del dominio.

Campo di coordinate · schema map_x / map_y Seleziona un quartiere San Lorenzo selezionato 1 Artisti 1 Eventi 1 Spazi 1 Collettivi 1 Room 1 Call San Lorenzo Ostiense Pigneto Trastevere Testaccio Monti
Riepilogo della selezione

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.

City pulse · superficie di prodotto Pannello City Pulse di Novera: un campo astratto con punti di segnale colorati accanto a un elenco di quartieri con conteggi e barre di attività.
FIG 02.1 La stessa idea nel prodotto: un campo astratto, mai una tile di mappa.

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.

03 Strumento delle relazioni

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.

Catena · schema del dominio Seleziona un passaggio District selezionato Chiavi esterne a ogni passaggio Polimorfico · attività, raccomandazione Artista Evento Spazio Quartiere Collettivo e open call
Entità
Modello
District
Relazione
collegato a ogni entità del dominio

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.
04 Lo squilibrio, disegnato

Due metà

Il progetto ha oggi due metà ancora sbilanciate, riunite in un solo disegno.

Lato API · Laravel

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
1/19 Endpoint realmente consumati dal frontend
Lato frontend · Next.js

Evidenzia le superfici per fonte dati

Superficie servita dall’API evidenziata

/ and /discover Raggiunge Laravel
/events Solo array locale
/artists Solo array locale
/rooms Solo array locale
/district/[slug] Solo array locale
/map Solo array locale

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.

05 Interazione misurata

Filtrare una scena

La directory degli eventi è l’esempio più chiaro della separazione: dati dimostrativi sotto, interazione autentica sopra.

Come si presenta · tre filtri preselezionati La directory eventi di Novera al caricamento, con il controllo dei filtri che segna tre attivi e i chip Live Set, Tonight e Free.
FIG 05.1 La pagina non si carica mai vuota: Live Set, Tonight e Free sono già applicati.
Filtrata · exhibition + this week La stessa directory con due chip di filtro attivi, Exhibition e This Week, sopra un titolo che segna All events 4.
FIG 05.2 Due chip attivi e il contatore cambiato, in un solo fotogramma.
Confronto registrato
Tutti i filtri azzerati
Filters · 0 active
Applicati
Exhibition This week
Risultato
12 ridotti a 4 eventi

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.

Room e open call Tre schede room di Novera marcate live — Night Archive a Pigneto, Travertine Echoes a Ostiense e Courtyard Signal a San Lorenzo — ciascuna con il numero di ascoltatori.
FIG 05.3 Join room, save e follow sono soltanto affordance dell’interfaccia. Nulla viene salvato.
06 Limiti

Modellato, non ancora abitato

Qui si ferma oggi il prototipo.

Modellato
  • 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
Non ancora sviluppato
  • 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
Selettore città · interfaccia Finestra del selettore città di Novera con Rome, Barcelona, Berlin, Copenhagen, Bari e Global, con Rome selezionata.
FIG 06.1 Sei città offerte dall’interfaccia. Una sola città esiste nel backend.

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.