Allinea contenuti legali e rifinisce UI home/footer.

Riorganizza privacy/gdpr/terms con struttura dati dedicata, uniforma copy e stile delle sezioni principali, aggiorna card prodotto/servizi e migliora ordine e separatori del footer per una presentazione più coerente.

Made-with: Cursor
This commit is contained in:
Javaxman
2026-04-22 17:00:23 +02:00
parent 9d96253888
commit d84163661b
20 changed files with 1415 additions and 671 deletions

View File

@ -4,29 +4,80 @@ import SubpageLayout from '../layouts/SubpageLayout.astro';
<SubpageLayout
title="Chi siamo — NexStudio"
description="Chi è NexStudio: missione, team e ambiti Legal Tech e Health Tech."
description="Missione, valori e come lavoriamo con studi legali e strutture sanitarie: qualità, verticalità e impegno nel tempo."
heading="Chi siamo"
lead="Un team giovane e dinamico di programmatori dalla Tailandia e dall'Italia, uniti per creare
applicazioni ad alta usabilità ed efficienza"
lead="Siamo un team internazionale — tra Bangkok e lItalia — che unisce ingegneria del software, intelligenza artificiale applicata e conoscenza dei domini regolamentati, per strumenti professionali usabili e sostenibili nel tempo."
>
<p>
Ci impegnamo nel rendere invisibile la tecnologia. Creiamo software che si fanno carico di processi strutturati
e calcoli intricati, sollevando l'utilizzatore da compiti impegnativi, dispersivi e soggetti ad errori.
Siamo focalizzati su software SaaS ad alta complessità per settori
regolamentati, specificatamente legale e medico, con focus su intelligenza artificiale integrata nei flussi
professionali (LexAura, MediAura). Nascondiamo sotto una superficie fluida e intuitiva motori
ad alta ingegneria. Abbiamo racchiuso una logica complessa in uninterfaccia essenziale, affinché basti solo
premere un tasto dove prima servivano ore di lavoro.
Ci impegniamo a rendere la tecnologia invisibile nel lavoro quotidiano. Progettiamo
<strong>software che assume su di sé</strong> processi strutturati, controlli e
complessità computazionale, così che chi lavora su norme, pazienti o documentazione
possa concentrarsi su <strong>giudizio, responsabilità e relazione</strong> — non su
menu, formati o incertezze operative. Nascondere la complessità sotto
<strong>interfaccia essenziale, tempi reattivi e tracciabilità</strong> è al centro di
come disegniamo il prodotto, non un optional estetico.
</p>
<h2>Dove operiamo</h2>
<h2>La nostra missione</h2>
<p>
Base operativa a Bangkok; collaborazione con clienti a livello internazionale. Dettagli in <a
class="text-sky-400/90 hover:text-sky-300"
href="/dove-siamo">Dove siamo</a
>.
Operiamo dove un errore pesa: <strong>Legal Tech e Health Tech</strong>. Qui servono
precisione, tracciamento delle scelte e rispetto dei vincoli normativi, non
sperimenti generici. La nostra missione è fornire <strong>piattaforme SaaS mature</strong>
— come <strong>LexAura</strong> e <strong>MediAura</strong> — che integrino modelli
dintelligenza artificiale in flussi già vissuti dallo studio o dalla struttura, con
continuità tra automazione, revisione umana e responsabilità riconoscibile.
</p>
<h2>Contatti</h2>
<h2>Perché possiamo meritare la tua fiducia</h2>
<p>
<a class="text-sky-400/90 hover:text-sky-300" href="/#contatti">Vai alla sezione Contatti</a> sulla homepage.
La fiducia non si ottiene con un motto, ma con <strong>ingegneria, chiarezza e
continuità</strong>. Significa architetture provate, aggiornamenti regolari dei
modelli danalisi, assistenza e formazione laddove ladozione chiede metodo oltre
al click. Significa anche onestà sui confini: lIA nelle nostre offerte è pensata
per <strong>estendere e accelerare</strong> il lavoro professionale, lasciando a
avvocato, medico o organizzazione <strong>la decisione finale e la
documentazione</strong> che la norma richiede.
</p>
<h2>Come lavoriamo, in sintesi</h2>
<ul>
<li>
<strong>Verticalità e dominio.</strong> Less genericismo, più requisiti operativi
(normative, flussi, audit) incorporati fin dalla progettazione.
</li>
<li>
<strong>Qualità e sicurezza come priorità, non retorica.</strong> Ingegneria, test
e infrastrutture coerenti con lesposizione a dati sensibili.
</li>
<li>
<strong>Supporto e evoluzione.</strong> Il rapporto con il cliente non finisce
allabbonamento: manutenzione evolutiva, assistenza e procedure chiare in caso di
urgenze operative, dove serve.
</li>
<li>
<strong>Comunicazione trasparente.</strong> Documentazione, informativa privacy
(dove obbligo) e <strong>aspettative reciproche</strong> esplicite, perché
lonboarding non diventi il primo ostacolo.
</li>
</ul>
<h2>Team e cultura</h2>
<p>
Siamo developer, product e specialisti di dominio in un <strong>modello
distribuito</strong>: fusi orari diversi e linguaggi comuni, un solo obiettivo
prodotto. Ci muoviamo con <strong>iterazioni rapide</strong> laddove serve
innovazione, e con <strong>governance</strong> laddove un cambiamento impatta
validazione, conformità o continuità del servizio. La diversità del gruppo
(competenze, contesti) è per noi vantaggio competitivo: riduce lassunto implicito
e costringe a rendere esplicito ciò che il software promette, e a chi.
</p>
<h2>Impegno nel tempo</h2>
<p>
Il settore che ci sceglie non cerca un prototipo, ma <strong>un percorso
sostenibile</strong>: allineamento normativo, adozione in team, affiancamento quando
qualcosa non gira. Costruiamo e manteniamo il prodotto con quella lente, perché
nelle vostre professioni la <strong>continuità</strong> non è comodità, è
requisito.
</p>
</SubpageLayout>

View File

@ -1,5 +1,13 @@
---
import SubpageLayout from '../layouts/SubpageLayout.astro';
import {
getCodiceEticoPremessa,
codiceEticoConformityBlocks,
qualitaValidazioneProdotto,
getCodiceEticoProductListPhrase,
notePraticheDPIA,
codiceEticoTutelaDatiRuoli,
} from '../data/codice-etico';
const link = 'text-sky-400/90 underline-offset-2 hover:text-sky-300 hover:underline';
---
@ -23,9 +31,29 @@ const link = 'text-sky-400/90 underline-offset-2 hover:text-sky-300 hover:underl
<li><a class={link} href="#ambito">Ambito di applicazione</a></li>
<li><a class={link} href="#valori">Valori e principi fondamentali</a></li>
<li>
<a class={link} href="#conformita">Conformità normativa specifica (ambito legale e medico)</a>
<a class={link} href="#conformita">Conformità normativa (per perimetro: piattaforma, legale, sanitario)</a>
<ol class="mt-2 list-decimal space-y-1 pl-5 text-nx-muted/95">
<li>
<a class={link} href="#conformita-piattaforma">4.1 Piattaforma e SaaS (orizzontale)</a>
</li>
<li>
<a class={link} href="#conformita-legal">4.2 Ambito legale (LexAura)</a>
</li>
<li>
<a class={link} href="#conformita-sanitario">4.3 Ambito sanitario (MediAura)</a>
</li>
</ol>
</li>
<li>
<a class={link} href="#tutela-dati">Tutela dei dati personali e dati sensibili</a>
<ol class="mt-2 list-decimal space-y-1 pl-5 text-nx-muted/95">
<li>
<a class={link} href="#tutela-dati-ruoli"
>5.1 Ruoli: pazienti, clienti, abbonati, Società</a
>
</li>
</ol>
</li>
<li><a class={link} href="#tutela-dati">Tutela dei dati personali e dati sensibili</a></li>
<li>
<a class={link} href="#sicurezza">Sicurezza dellinformazione e resilienza operativa</a>
</li>
@ -70,11 +98,7 @@ const link = 'text-sky-400/90 underline-offset-2 hover:text-sky-300 hover:underl
<h2 id="premessa">1. Premessa</h2>
<p>
Questo Codice Etico stabilisce i principi, i doveri e le regole di comportamento che tutti i
soggetti coinvolti in <strong>NexStudio</strong> (di seguito «Società») devono osservare nello
sviluppo, nella commercializzazione e nella gestione di soluzioni SaaS destinate ai settori
legale e medico. Mira a garantire conformità normativa, tutela della privacy, sicurezza,
qualità tecnica, protezione dei diritti degli utenti e responsabilità professionale.
{getCodiceEticoPremessa()}
</p>
<h2 id="ambito">2. Ambito di applicazione</h2>
@ -95,37 +119,68 @@ const link = 'text-sky-400/90 underline-offset-2 hover:text-sky-300 hover:underl
<li>Miglioramento continuo e accountability.</li>
</ul>
<h2 id="conformita">4. Conformità normativa specifica (ambito legale e medico)</h2>
<p>La Società osserva, fra gli altri:</p>
<ul>
<li>Thailand Personal Data Protection Act (PDPA).</li>
<li>
Regolamento generale sulla protezione dei dati (GDPR), quando applicabile per utenti o
servizi nellUnione europea.
</li>
<li>
Normative sanitarie e standard locali o internazionali pertinenti (ad esempio requisiti
nazionali per la gestione dei dati clinici, standard ISO rilevanti).
</li>
<li>
Requisiti normativi per dispositivi medici o software medicale (ad esempio EU MDR,
regolamenti locali) se le funzionalità rientrano nella definizione di dispositivo medico.
</li>
<li>
Norme professionali e di segreto professionale per avvocati e operatori sanitari;
rispetto di privilegi professionali (<em>attorneyclient privilege</em>, segreto medico).
</li>
<li>
Se applicabile per mercati esteri: HIPAA per dati sanitari negli Stati Uniti e normative
sullesportazione di dati o tecnologie.
</li>
</ul>
<h2 id="conformita">4. Conformità normativa specifica</h2>
<p>
I riferimenti sotto sono raggruppati: obblighi orizzontali a tutte le offerte
<strong>SaaS</strong>, riferimenti distinti per il perimetro
<strong>Legal Tech / LexAura</strong> e per <strong>Health Tech / MediAura</strong> (ciascuna
linea può estendersi o diversificare secondo prodotto e mercato, senza commistione indebita
ad altri perimetri). Riepilogo riga prodotto:
<span class="text-nx-fg">{getCodiceEticoProductListPhrase()}</span>.
</p>
{
codiceEticoConformityBlocks.map((block, i) => (
<section
class:list={['', i > 0 && 'mt-5']}
data-conformity-block={block.id}
>
<h3
id={block.anchorId}
class="scroll-mt-8 text-base font-semibold text-nx-fg"
>
{block.title}
</h3>
{block.lead ? <p class="text-sm text-nx-muted sm:text-base">{block.lead}</p> : null}
<ul class="mt-2 list-disc pl-5">
{block.items.map((t) => (
<li>{t}</li>
))}
</ul>
</section>
))
}
<p class="mt-6 text-sm sm:text-base">
La Società effettua DPIA (Data Protection Impact Assessment) per trattamenti ad alto rischio e
consulta autorità o <em>regulatory counsel</em> quando necessario.
consulta autorità o <em>regulatory counsel</em> quando necessario, con riferimenti
<strong>per ciascun trattamento</strong> al perimetro (piattaforma, legale, sanitario) ove
interessa.
</p>
<h2 id="tutela-dati">5. Tutela dei dati personali e dati sensibili</h2>
<p class="text-nx-muted sm:text-base">{codiceEticoTutelaDatiRuoli.intro}</p>
<h3
id={codiceEticoTutelaDatiRuoli.anchorId}
class="!mt-6 text-base font-semibold text-nx-fg"
>
{codiceEticoTutelaDatiRuoli.title}
</h3>
{
codiceEticoTutelaDatiRuoli.rows.map((r) => (
<p class="mt-3 sm:text-base">
<span class="font-semibold text-nx-fg">{r.label}.</span>{' '}
{r.text}
</p>
))
}
<p
class="mt-4 border-l-2 border-sky-500/30 pl-4 text-sm leading-relaxed text-nx-muted"
>
{codiceEticoTutelaDatiRuoli.note}
</p>
<p class="mt-8 text-sm font-medium text-nx-fg sm:text-base">
Nella concreta operatività, la Società e i collaboratori si attengono ai principi operativi
seguenti (complementari ai ruoli sopra):
</p>
<ul>
<li><strong>Minimizzazione:</strong> raccogliere solo i dati necessari e pertinenti.</li>
<li>
@ -202,11 +257,14 @@ const link = 'text-sky-400/90 underline-offset-2 hover:text-sky-300 hover:underl
<strong>Test e copertura:</strong> definire copertura minima per componenti critici; test di
integrazione, performance e sicurezza.
</li>
<li>
<strong>Validazione clinica:</strong> per funzionalità che assistono decisioni cliniche o
legali, procedere a validazione con esperti (clinici e legali), studi pilota, documentazione
di limitazioni e avvertenze.
</li>
{
qualitaValidazioneProdotto.map((v) => (
<li>
<strong>Validazione (per {v.id === 'legal' ? 'perimetro legale' : 'perimetro sanitario'}):</strong>{' '}
{v.text}
</li>
))
}
<li>
<strong>Classificazione del rischio:</strong> valutare impatto su salute o diritti e
applicare misure di mitigazione proporzionate.
@ -338,8 +396,9 @@ const link = 'text-sky-400/90 underline-offset-2 hover:text-sky-300 hover:underl
<ul>
<li>
Onboarding obbligatorio su: sicurezza informatica, privacy (PDPA e GDPR), gestione dati
sensibili, normative mediche e legali rilevanti, uso responsabile dellAI, pratiche di coding
sicuro.
sensibili, requisiti e documentazione riferibili a ciascuna linea prodotto
(oggi: {getCodiceEticoProductListPhrase()}; estendere il curriculum quando lelenco
cresce), uso responsabile dellAI, pratiche di coding sicuro.
</li>
<li>Formazione annuale obbligatoria e formazione aggiuntiva per ruoli critici.</li>
<li>Registrazione e conservazione dei record di formazione.</li>
@ -475,20 +534,7 @@ const link = 'text-sky-400/90 underline-offset-2 hover:text-sky-300 hover:underl
Predisporre un piano di formazione di 90 giorni per lonboarding e formazione ricorrente
annuale.
</li>
<li>
Eseguire DPIA per i trattamenti sanitari e legali critici e verificare se parti del prodotto
rientrano nella definizione di dispositivo medico ai fini di registrazione o approvazione
normativa.
</li>
{notePraticheDPIA.map((t) => <li>{t}</li>)}
</ul>
<h2>Collegamenti</h2>
<p>
<a class={link} href="/modello-organizzativo">Modello organizzativo</a>
<span class="text-nx-muted"> · </span>
<a class={link} href="/about">Chi siamo</a>
<span class="text-nx-muted"> · </span>
<a class={link} href="#indice">Torna allindice</a>
</p>
</div>
</SubpageLayout>

View File

@ -12,7 +12,7 @@ const td = 'border border-nx-border px-3 py-2 align-top text-nx-muted';
title="Cookie Policy — NexStudio"
description="Cookie Policy NexStudio: categorie, base giuridica, consenso, terze parti, diritti e contatti. Sede Bangkok."
heading="Cookie Policy"
lead="Per NexStudio sede: Bangkok, Thailandia. Versione documento 1.0, in vigore dal 21 aprile 2026. Integra luso del modulo di consenso first-party descritto sotto; per il trattamento dei dati personali vedi lInformativa privacy."
lead="Per NexStudio, con sede a Bangkok, Thailandia. Versione documento 1.0, in vigore dal 21 aprile 2026. Integra l'uso del modulo di consenso first-party descritto sotto; per il trattamento dei dati personali vedi l'informativa privacy."
>
<div class="[&_h3]:mt-6 [&_h3]:text-base [&_h3]:font-semibold [&_h3]:text-nx-fg">
<p class="border-l-2 border-sky-500/35 pl-4 text-sm leading-relaxed text-nx-muted">
@ -457,16 +457,5 @@ const td = 'border border-nx-border px-3 py-2 align-top text-nx-muted';
<li><span class="text-nx-muted">☐</span> Procedure DSR e revoca collegate dallinformativa privacy</li>
<li><span class="text-nx-muted">☐</span> Link a privacy e contatti DPO/referente nel footer</li>
</ul>
<h2>Collegamenti</h2>
<p>
<a class={link} href="/privacy">Informativa privacy</a>
<span class="text-nx-muted"> · </span>
<a class={link} href="/codice-etico">Codice etico</a>
<span class="text-nx-muted"> · </span>
<a class={link} href="/modello-organizzativo">Modello organizzativo</a>
<span class="text-nx-muted"> · </span>
<a class={link} href="#indice">Torna allindice</a>
</p>
</div>
</SubpageLayout>

View File

@ -4,15 +4,13 @@ import SubpageLayout from '../layouts/SubpageLayout.astro';
<SubpageLayout
title="Dove siamo — NexStudio"
description="Sede operativa e contatti NexStudio."
description="Sede operativa a Bangkok, Thailandia; fusi orari e lingue per lavorare con clienti in Europa e altre regioni."
heading="Dove siamo"
lead="Sede operativa a Bangkok (Thailandia). Completate lindirizzo, i recapiti e gli orari di riferimento per il pubblico."
lead="NexStudio ha base a Bangkok, in Thailandia. Sotto, come organizziamo fusi orari e lingue rispetto a clienti in Europa e oltre."
>
<h2>Sede</h2>
<p>
NexStudio opera con base operativa a <strong>Bangkok</strong>, in
Thailandia. Inserite qui indirizzo completo, eventuale sede legale in altro
Stato, e se il rapporto con i clienti avviene prevalentemente da remoto.
<strong>Thailandia</strong> — <strong>Bangkok</strong>
</p>
<h2>Fusi orari e lingue</h2>
@ -21,14 +19,4 @@ import SubpageLayout from '../layouts/SubpageLayout.astro';
tedesco, francese, spagnolo e tailandese, con orari da concordare in base
al team e al fuso rispetto ai clienti in Europa e altre regioni.
</p>
<h2>Contatti</h2>
<p>
Per richieste commerciali o tecniche utilizzate la sezione <a
class="text-sky-400/90 hover:text-sky-300"
href="/#contatti">Contatti</a
> sulla homepage (chat e altri canali che attiverete). Aggiungete in questa
pagina email istituzionali, PEC se applicabile, e numeri di telefono solo se
desiderate renderli pubblici.
</p>
</SubpageLayout>

View File

@ -1,55 +1,74 @@
---
import SubpageLayout from '../layouts/SubpageLayout.astro';
import {
gdprCrossReferences,
gdprDocument,
gdprRiferimenti,
gdprSections,
} from '../data/gdpr';
const link = 'text-sky-400/90 underline-offset-2 hover:text-sky-300 hover:underline';
const lead =
"Diritti degli interessati e modalita' di esercizio ai sensi del Regolamento (UE) 2016/679, in coerenza con l'informativa privacy quadro del portale NexStudio. " +
gdprCrossReferences.lead;
---
<SubpageLayout
title="GDPR — NexStudio"
description="Informazioni sul trattamento dei dati personali ai sensi del Regolamento UE 2016/679 (GDPR)."
description="Pagina GDPR NexStudio: diritti degli interessati, modalita' operative, ruoli tra portale corporate e SaaS LexAura/MediAura, coordinamento con privacy dedicate."
heading="GDPR e diritti degli interessati"
lead="Documento provvisorio: integrare riferimenti contrattuali, responsabile della protezione dei dati (DPO) se nominato, e procedure interne."
lead={lead}
>
<p>
Il Regolamento (UE) 2016/679 (GDPR) disciplina il trattamento dei dati
personali nel territorio dellUnione. La presente pagina riassume i diritti
riconosciuti agli interessati e come possono esercitarli nei confronti di
NexStudio, senza sostituire linformativa privacy completa.
</p>
<div>
<p class="border-l-2 border-sky-500/35 pl-4 text-sm leading-relaxed text-nx-muted">
<span class="font-medium text-nx-fg">Versione</span> {gdprDocument.version}
<span class="text-nx-muted/80"> · </span>
<span class="font-medium text-nx-fg">In vigore dal</span> {gdprDocument.inVigoreDal}
<span class="text-nx-muted/80"> · </span>
<span class="font-medium text-nx-fg">Ultimo aggiornamento</span> {gdprDocument.ultimoAggiornamento}
</p>
<h2>Diritti riconosciuti</h2>
<ul>
<li>Accesso ai propri dati e copia in formato intelligibile</li>
<li>Rettifica di dati inesatti o incompleti</li>
<li>Cancellazione (“diritto alloblio”) nei casi previsti dalla legge</li>
<li>Limitazione del trattamento</li>
<li>Portabilità dei dati forniti con consenso o contratto, ove applicabile</li>
<li>Opposizione al trattamento basato su legittimo interesse o per fini di marketing</li>
<li>Revoca del consenso in qualsiasi momento, senza pregiudicare la liceità del trattamento precedente</li>
<li>Reclamo allautorità di controllo competente</li>
</ul>
<p class="!mt-5 text-sm text-nx-muted sm:text-base">
Documenti connessi:{' '}
{
gdprRiferimenti.map((r, i) => (
<span>
{i > 0 && <span class="text-nx-muted/80"> · </span>}
<a class={link} href={r.href}>{r.label}</a>
</span>
))
}
</p>
<h2>Modalità di esercizio</h2>
<p>
Indicare un canale dedicato (es. email privacy@…, modulo PEC o ticket). Per
richieste generiche potete anche utilizzare la sezione <a
class="text-sky-400/90 hover:text-sky-300"
href="/#contatti">Contatti</a
> sul sito principale, specificando oggetto e dati utili a identificare la
pratica.
</p>
<h2 id="indice" class="!mt-8">Indice</h2>
<ol class="!mt-3 list-decimal space-y-1.5 pl-5 text-sm leading-relaxed sm:text-base">
{
gdprSections.map((s) => (
<li>
<a class={link} href={`#${s.id}`}>{s.title}</a>
</li>
))
}
</ol>
<h2>Trasferimenti extra-UE</h2>
<p>
Se utilizzate fornitori con sede fuori dallo Spazio Economico Europeo,
descrivete garanzie (Clausole contrattuali tipo, decisioni di adeguatezza,
norme vincolanti dimpresa) e il riferimento documentale.
</p>
<h2>Documenti correlati</h2>
<p>
<a class="text-sky-400/90 hover:text-sky-300" href="/privacy"
>Informativa privacy</a
>
·
<a class="text-sky-400/90 hover:text-sky-300" href="/cookies">Informativa cookie</a>
</p>
{
gdprSections.map((s) => (
<section class="mt-10" id={s.id}>
<h2 class="scroll-mt-8 text-lg font-semibold text-nx-fg sm:text-xl">
{s.title}
</h2>
{s.paragraphs.map((p) => (
<p class="mt-3 text-sm leading-relaxed text-nx-muted sm:text-base">{p}</p>
))}
{s.bullets && s.bullets.length > 0 ? (
<ul class="mt-3 list-disc space-y-2 pl-5 text-sm sm:text-base">
{s.bullets.map((b) => (
<li class="text-nx-muted">{b}</li>
))}
</ul>
) : null}
</section>
))
}
</div>
</SubpageLayout>

View File

@ -148,10 +148,10 @@ const techSliderItems = stackSection.techSlider.items;
</div>
<div class="relative z-10 mx-auto max-w-6xl">
<p
class="mb-6 inline-flex items-center gap-2 rounded-full border border-nx-border bg-nx-surface/60 px-3 py-1 text-xs font-medium text-sky-300/90"
class="mb-6 inline-flex items-center gap-2.5 rounded-full border border-nx-border bg-nx-surface/60 px-4 py-1.5 text-sm font-medium text-sky-300/90 sm:px-5 sm:py-2"
>
<span
class="h-1.5 w-1.5 rounded-full bg-sky-400 shadow-[0_0_8px_#38bdf8]"></span>
class="h-2 w-2 rounded-full bg-sky-400 shadow-[0_0_10px_#38bdf8]"></span>
{hero.badge}
</p>
<h1
@ -229,18 +229,32 @@ const techSliderItems = stackSection.techSlider.items;
{productsSection.lead}
</p>
<div
class="mt-14 grid gap-8 lg:grid-cols-2 lg:gap-10 lg:items-stretch"
>
<div class="relative mt-14">
<div
class="pointer-events-none absolute -top-28 left-1/2 z-0 h-64 w-[min(96%,60rem)] -translate-x-1/2 rounded-full bg-[radial-gradient(ellipse_at_center,rgba(125,211,252,0.34)_0%,rgba(96,165,250,0.2)_36%,rgba(16,24,40,0)_74%)] blur-3xl"
aria-hidden="true"
/>
<div
class="pointer-events-none absolute -top-14 left-1/2 z-0 h-40 w-[min(88%,54rem)] -translate-x-1/2 rounded-full bg-[radial-gradient(ellipse_at_center,rgba(186,230,253,0.16)_0%,rgba(16,24,40,0)_70%)] blur-2xl"
aria-hidden="true"
/>
<div
class="relative z-10 grid gap-8 lg:grid-cols-2 lg:gap-10 lg:items-stretch"
>
{productsSection.items.map((product, pi) => (
<article
class:list={[
'flex flex-col rounded-2xl border p-6 sm:p-8',
'relative flex flex-col overflow-hidden rounded-2xl border p-6 -translate-y-1 shadow-2xl shadow-black/30 sm:p-8',
pi === 0
? 'border-sky-500/25 bg-gradient-to-b from-sky-950/30 to-nx-surface/30'
: 'border-emerald-500/20 bg-gradient-to-b from-emerald-950/25 to-nx-surface/30',
? 'border-sky-400/45 bg-gradient-to-b from-sky-950/30 to-nx-surface/30'
: 'border-emerald-400/40 bg-gradient-to-b from-emerald-950/25 to-nx-surface/30',
]}
>
<div
class="pointer-events-none absolute inset-0 bg-[radial-gradient(ellipse_at_top,rgba(255,255,255,0.12),transparent_62%)]"
aria-hidden="true"
/>
<div class="pointer-events-none absolute inset-x-0 top-0 h-px bg-gradient-to-r from-transparent via-white/35 to-transparent opacity-60" aria-hidden="true"></div>
<div class="flex flex-wrap items-baseline justify-between gap-2">
<h3 class="text-2xl font-semibold tracking-tight text-nx-fg">
{product.name}
@ -249,8 +263,8 @@ const techSliderItems = stackSection.techSlider.items;
class:list={[
'rounded-full px-2.5 py-0.5 text-xs font-medium',
pi === 0
? 'bg-sky-500/15 text-sky-200/95'
: 'bg-emerald-500/15 text-emerald-200/95',
? 'bg-sky-500/25 text-sky-200/95'
: 'bg-emerald-500/25 text-emerald-200/95',
]}
>
{product.badge}
@ -298,6 +312,7 @@ const techSliderItems = stackSection.techSlider.items;
) : null}
</article>
))}
</div>
</div>
</div>
</section>
@ -464,7 +479,7 @@ const techSliderItems = stackSection.techSlider.items;
</div>
<div
class="nx-tech-slider mt-10"
class="nx-tech-slider mt-6 sm:mt-7"
role="region"
aria-label={stackSection.techSlider.ariaLabel}
>

View File

@ -1,22 +1,38 @@
---
import SubpageLayout from '../layouts/SubpageLayout.astro';
import {
modelloOrganizzativo,
modelloOrganizzativoRuoli,
modelloOrganizzativoGovernance,
modelloOrganizzativoResponsabilitaSintesi,
modelloOrganizzativoControlliLean,
modelloOrganizzativoKpi,
modelloOrganizzativoDocumentazione,
modelloOrganizzativoPiano30,
modelloOrganizzativoOutsourcing,
modelloOrganizzativoNote,
modelloOrganizzativoFlussiDecisionali,
} from '../data/modello-organizzativo';
const link = 'text-sky-400/90 underline-offset-2 hover:text-sky-300 hover:underline';
const tbl = 'mt-4 w-full border-collapse text-left text-sm';
const tbl = 'min-w-[22rem] w-full border-collapse text-left text-sm';
const th = 'border border-nx-border bg-nx-surface/60 px-3 py-2 font-semibold text-nx-fg';
const td = 'border border-nx-border px-3 py-2 align-top text-nx-muted';
const tableWrap = 'mt-2 overflow-x-auto';
---
<SubpageLayout
title="Modello organizzativo — NexStudio"
description="Modello organizzativo NexStudio: ruoli, governance, RACI, controlli lean, KPI e piano operativo a 30 giorni."
description="Modello organizzativo NexStudio: governance, ruoli, RACI, controlli lean, KPI, piano 30 giorni — per le linee LexAura (Legal Tech) e MediAura (Health Tech)."
heading="Modello organizzativo"
lead="Schema di ruoli, ritmi di governo e responsabilità per una software company snella (SaaS legal/med). Non sostituisce valutazioni legali (es. D.Lgs. 231/2001): va allineato a società, organi e consulenti."
lead="Ruoli, ritmi di governo, processi e controlli «lean» in una software house con SaaS a elevata regolamentazione. Complementare al codice etico. Non sostituisce statuti, modelli di compliance societari (es. 231) né pareri legali: andate in parallelo con struttura reale e consulenti."
>
<div class="[&_h3]:mt-6 [&_h3]:text-base [&_h3]:font-semibold [&_h3]:text-nx-fg">
<p class="border-l-2 border-sky-500/35 pl-4 text-sm leading-relaxed text-nx-muted">
Documento operativo per <strong class="text-nx-fg">NexStudio</strong> (sede Bangkok). Ruoli
numerici indicativi: adattare al team reale e formalizzare nomine e deleghe per iscritto.
{modelloOrganizzativo.introBox}
</p>
<p class="mt-3 text-sm leading-relaxed text-nx-muted sm:text-base">
{modelloOrganizzativo.perimetro}
</p>
<h2 id="indice" class="!mt-8">Indice</h2>
@ -36,107 +52,36 @@ const td = 'border border-nx-border px-3 py-2 align-top text-nx-muted';
<h2 id="ruoli">1. Ruoli e perimetro</h2>
<p>
Elenco sintetico delle funzioni, con attese di impegno (full-time, part-time, frazionale o
esternalizzato). I numeri tra parentesi sono orientativi per una fase early-stage.
Elenco sintetico delle funzioni e delle attese di impegno. Per allineare il dominio
prodotto (Legal Tech, Health Tech) a ruoli e consiglieri, fate riferimento anche a <a
class={link}
href="/codice-etico">codice etico</a
> e, per i trattamenti di dati, a privacy policy e DPA.
</p>
<ul>
<li>
<strong>Founder / CEO (1):</strong> strategia, approvazione delle policy, contatti con board
e investitori, accountability complessiva anche verso obblighi di legge e contratti.
</li>
<li>
<strong>CTO / Head of Product (1):</strong> architettura, roadmap, quality gate di prodotto,
responsabilità tecnica end-to-end.
</li>
<li>
<strong>Lead Engineer (12):</strong> sviluppo, code review, esecuzione CI/CD e qualità del
codice in reparto.
</li>
<li>
<strong>DevOps / Platform (1, oppure outsourcing):</strong> deploy, KMS, backup e
disaster recovery, governo dellambiente di produzione.
</li>
<li>
<strong>Security &amp; Privacy Lead (1, ruolo ibrido o contractor):</strong> sicurezza
operativa, gestione delle vulnerabilità, coordinamento con il DPO.
</li>
<li>
<strong>DPO / Privacy Responsible (frazionale o outsourcing):</strong> DPIA, gestione dei
diritti degli interessati, coerenza dellinformativa privacy.
</li>
<li>
<strong>Legal &amp; Compliance (frazionale o legale interno):</strong> contratti, NDA,
revisione delle normative di settore legale e medico pertinenti ai prodotti.
</li>
<li>
<strong>Product / Clinical Advisor (part-time o consulente):</strong> validazione di
funzionalità con impatto medico o legale, limiti duso e avvertenze.
</li>
<li>
<strong>Customer Success / Support (1):</strong> onboarding clienti, gestione richieste,
escalation verso tecnici e governance.
</li>
<li>
<strong>Operations / HR (1, part-time):</strong> onboarding del personale, formazione,
gestione delle segnalazioni interne.
</li>
<li>
<strong>Finance (1, part-time o outsourcing):</strong> contabilità, pagamenti, policy su
incassi e fornitori.
</li>
{
modelloOrganizzativoRuoli.map((r) => (
<li>
<strong>{r.label}:</strong> {r.text}
</li>
))
}
</ul>
<h2 id="governance">2. Governance essenziale</h2>
<ul>
<li>
<strong>Weekly Tactical</strong> (Founder, CTO, Security/Privacy Lead, Customer Success):
priorità operative, incidenti aperti, rilasci critici in corso.
</li>
<li>
<strong>Biweekly Product Sync</strong> (CTO, Lead Engineer, Product Advisor): backlog,
piano di release, checkpoint di compliance di prodotto.
</li>
<li>
<strong>Monthly Compliance Check</strong> (Founder/CEO, Legal, DPO, Security Lead): revisione
DPIA, vendor ad alto rischio, sintesi incidenti e azioni correttive.
</li>
<li>
<strong>Quarterly Board / Founders review:</strong> strategia, budget, rischi maggiori e
capacità organizzative.
</li>
{
modelloOrganizzativoGovernance.map((g) => (
<li>
<strong>{g.nome}:</strong> {g.partecipanti}. <span class="text-nx-muted/95">— {g.nota}</span>
</li>
))
}
</ul>
<h2 id="responsabilita">3. Principali responsabilità (sintesi)</h2>
<ul>
<li>
<strong>Codice etico e policy:</strong> owner <em>Legal &amp; Compliance</em> — approvatore
<em>CEO</em>.
</li>
<li>
<strong>Sicurezza operativa e incident response:</strong> owner <em>Security Lead</em> —
esecutore tecnico <em>CTO</em>.
</li>
<li>
<strong>Privacy, trattamenti sensibili e DPIA:</strong> owner <em>DPO</em> — supporto
<em>Legal</em>.
</li>
<li>
<strong>Rilasci in produzione:</strong> accountable <em>CTO</em> — responsible <em>Lead
Engineer</em> — consulted <em>Security</em>, <em>DPO</em>, <em>Product Advisor</em>.
</li>
<li>
<strong>Fornitori e sub-processori:</strong> owner <em>Operations</em> + <em>Legal</em> —
due diligence <em>Security</em> / <em>DPO</em>.
</li>
<li>
<strong>Richieste degli interessati (DSR):</strong> owner <em>DPO</em> — esecuzione operativa
<em>Customer Success</em> (ove applicabile).
</li>
<li>
<strong>Segnalazioni e whistleblowing:</strong> owner <em>Operations</em> / <em>HR</em> —
supporto investigativo <em>Legal</em>.
</li>
{modelloOrganizzativoResponsabilitaSintesi.map((l) => <li>{l}</li>)}
</ul>
<h2 id="raci">4. RACI sintetico per processi critici</h2>
@ -145,306 +90,248 @@ const td = 'border border-nx-border px-3 py-2 align-top text-nx-muted';
<strong>C</strong> = Consulted, <strong>I</strong> = Informed.
</p>
<h3>Rilascio in produzione</h3>
<table class={tbl}>
<thead>
<tr>
<th class={th}>Ruolo</th>
<th class={th}>R</th>
<th class={th}>A</th>
<th class={th}>C</th>
<th class={th}>I</th>
</tr>
</thead>
<tbody>
<tr>
<td class={td}>Lead Engineer</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>CTO</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>Security Lead, DPO, Product Advisor</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>CEO, Customer Success</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
</tbody>
</table>
<h3 class="!mt-5" id="raci-release">Rilascio in produzione</h3>
<div class={tableWrap}>
<table class={tbl}>
<thead>
<tr>
<th class={th} scope="col">Ruolo</th>
<th class={th} scope="col">R</th>
<th class={th} scope="col">A</th>
<th class={th} scope="col">C</th>
<th class={th} scope="col">I</th>
</tr>
</thead>
<tbody>
<tr>
<td class={td}>Lead engineer</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>CTO</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>Security lead, DPO, product advisor</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>CEO, customer success</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}>●</td>
</tr>
</tbody>
</table>
</div>
<h3>Incident response (violazione dei dati)</h3>
<table class={tbl}>
<thead>
<tr>
<th class={th}>Ruolo</th>
<th class={th}>R</th>
<th class={th}>A</th>
<th class={th}>C</th>
<th class={th}>I</th>
</tr>
</thead>
<tbody>
<tr>
<td class={td}>Security Lead</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>CEO</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>DPO, Legal, CTO</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>Clienti coinvolti, Board (se impatto elevato)</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
</tbody>
</table>
<h3 id="raci-incident">Incident response (violazione dei dati o incidente P0)</h3>
<div class={tableWrap}>
<table class={tbl}>
<thead>
<tr>
<th class={th} scope="col">Ruolo</th>
<th class={th} scope="col">R</th>
<th class={th} scope="col">A</th>
<th class={th} scope="col">C</th>
<th class={th} scope="col">I</th>
</tr>
</thead>
<tbody>
<tr>
<td class={td}>Security lead</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>CEO</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>DPO, legal, CTO</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>Clienti interessati, board (se impatto elevato)</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}>●</td>
</tr>
</tbody>
</table>
</div>
<h3>Onboarding vendor (sub-processore)</h3>
<table class={tbl}>
<thead>
<tr>
<th class={th}>Ruolo</th>
<th class={th}>R</th>
<th class={th}>A</th>
<th class={th}>C</th>
<th class={th}>I</th>
</tr>
</thead>
<tbody>
<tr>
<td class={td}>Operations</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>Legal</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>Security Lead, DPO</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>CTO, Finance</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
</tbody>
</table>
<h3 id="raci-vendor">Onboarding vendor (sub-processore)</h3>
<div class={tableWrap}>
<table class={tbl}>
<thead>
<tr>
<th class={th} scope="col">Ruolo</th>
<th class={th} scope="col">R</th>
<th class={th} scope="col">A</th>
<th class={th} scope="col">C</th>
<th class={th} scope="col">I</th>
</tr>
</thead>
<tbody>
<tr>
<td class={td}>Operations</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>Legal</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>Security lead, DPO</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>CTO, finance</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}>●</td>
</tr>
</tbody>
</table>
</div>
<h3>DPIA per modulo sanitario o legale</h3>
<table class={tbl}>
<thead>
<tr>
<th class={th}>Ruolo</th>
<th class={th}>R</th>
<th class={th}>A</th>
<th class={th}>C</th>
<th class={th}>I</th>
</tr>
</thead>
<tbody>
<tr>
<td class={td}>DPO</td>
<td class={td}>●</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>Legal</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>Product Advisor, CTO, Security Lead</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>CEO</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}>●</td>
</tr>
</tbody>
</table>
<h3 id="raci-dpia">DPIA (per perimetro: LexAura, MediAura, piattaforma)</h3>
<p class="text-sm text-nx-muted sm:text-base">
La matrice RACI non sostituisce il criterio legale (chi è titolare, chi responsabile) definito
in contratti e in <a class={link} href="/codice-etico#tutela-dati-ruoli">§5.1 del codice etico</a
>. Qui: chi coordina lesercizio interno della valutazione dimpatto.
</p>
<div class={tableWrap}>
<table class={tbl}>
<thead>
<tr>
<th class={th} scope="col">Ruolo</th>
<th class={th} scope="col">R</th>
<th class={th} scope="col">A</th>
<th class={th} scope="col">C</th>
<th class={th} scope="col">I</th>
</tr>
</thead>
<tbody>
<tr>
<td class={td}>DPO</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>Legal</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>Product advisor, CTO, security lead</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
</tr>
<tr>
<td class={td}>CEO</td>
<td class={td}></td>
<td class={td}></td>
<td class={td}></td>
<td class={td}>●</td>
</tr>
</tbody>
</table>
</div>
<h2 id="flussi">5. Flussi decisionali rapidi</h2>
<ul>
<li>
<strong>Decisione tecnica ordinaria:</strong> Lead Engineer → CTO (documentare su ticket se
impatta rischio o contratti).
</li>
<li>
<strong>Rilascio con impatto privacy o sicurezza:</strong> approvazione obbligatoria di
<em>Security Lead</em> e <em>DPO</em> (target: entro 48 ore lavorative).
</li>
<li>
<strong>Incident P0:</strong> <em>Security Lead</em> notifica CEO, DPO e Legal entro 4 ore;
escalation al Board se limpatto è elevato (clienti, regolatori, volumi o classi di dati).
</li>
{
modelloOrganizzativoFlussiDecisionali.map((f) => (
<li>
<strong>{f.titolo}:</strong> {f.testo}
</li>
))
}
</ul>
<h2 id="controlli">6. Controlli minimi obbligatori (lean)</h2>
<ul>
<li>IAM con MFA per accesso a produzione e a segreti.</li>
<li>CI/CD con SAST e scansione automatica delle dipendenze.</li>
<li>SBOM generato automaticamente per ogni release.</li>
<li>TLS in transito; cifratura a riposo per dati sensibili.</li>
<li>Backup giornalieri e test DR trimestrale (ripristino documentato).</li>
<li>Log degli accessi e alerting su anomalie (SIEM o servizio gestito).</li>
<li>Checklist pre-release (security/privacy) con traccia digitale di approvazione.</li>
{modelloOrganizzativoControlliLean.map((c) => <li>{c}</li>)}
</ul>
<h2 id="kpi">7. KPI essenziali (core metrics)</h2>
<h2 id="kpi">7. KPI essenziali</h2>
<ul>
<li>
<strong>Security:</strong> percentuale di patch critiche entro SLA; MTTD e MTTR per
incidenti.
</li>
<li>
<strong>Privacy:</strong> tempo medio di risposta alle DSR; numero di DPIA completate / in
corso.
</li>
<li>
<strong>Product:</strong> tempo di ciclo del deploy; copertura test sui moduli critici.
</li>
<li>
<strong>Operations:</strong> uptime rispetto a SLA; tempo medio di risposta del supporto;
segnalazioni chiuse nel periodo.
</li>
{
modelloOrganizzativoKpi.map((k) => (
<li>
<strong>{k.area}:</strong> {k.testo}
</li>
))
}
</ul>
<h2 id="documentazione">8. Documentazione minima da mantenere</h2>
<ul>
<li>Codice etico firmato e registro delle adesioni.</li>
<li>Informativa privacy e template di DPA (Data Processing Agreement).</li>
<li>DPIA per trattamenti critici.</li>
<li>Security whitepaper breve (12 pagine) per clienti e audit.</li>
<li>Incident response playbook (versione esecutiva).</li>
<li>SBOM e registro fornitori / sub-processori.</li>
<li>Checklist pre-release e log delle approvazioni.</li>
{modelloOrganizzativoDocumentazione.map((d) => <li>{d}</li>)}
</ul>
<h2 id="piano-30">9. Primo piano operativo (30 giorni)</h2>
<ol>
<li>
<strong>Giorni 03:</strong> nomina formale dei ruoli chiave (Security Lead, DPO frazionale,
Legal frazionale).
</li>
<li>
<strong>Giorni 410:</strong> integrare la checklist pre-release in CI/CD; abilitare MFA e
policy IAM coerenti con il minimo sopra.
</li>
<li>
<strong>Giorni 1117:</strong> avviare DPIA sul modulo medico/legale più critico; due
diligence sui fornitori ad alto rischio.
</li>
<li>
<strong>Giorni 1824:</strong> pubblicare una Trust Center di base (link al Codice etico,
contatti DPO/security, materiali privacy/DPA se disponibili).
</li>
<li>
<strong>Giorni 2530:</strong> tabletop su incident response; test di rollback deploy e
ripristino backup; formazione iniziale obbligatoria (security e privacy).
</li>
{
modelloOrganizzativoPiano30.map((p) => (
<li>
<strong>{p.quando}:</strong> {p.testo}
</li>
))
}
</ol>
<h2 id="outsourcing">10. Outsourcing consigliato (per restare snelli)</h2>
<ul>
<li>
<strong>Security Ops / SOC:</strong> servizio gestito per log, alerting e penetration test
periodici.
</li>
<li>
<strong>DPO e Legal:</strong> consulenti frazionali con esperienza PDPA, GDPR e contesto
medico-legale locale.
</li>
<li>
<strong>DevOps / Platform:</strong> servizi cloud gestiti (es. KMS, database gestiti) per
ridurre carico operativo interno.
</li>
{
modelloOrganizzativoOutsourcing.map((o) => (
<li>
<strong>{o.titolo}:</strong> {o.testo}
</li>
))
}
</ul>
<h2 id="note">11. Note pratiche e raccomandazioni</h2>
<ul>
<li>
Mantenere <strong>separazione dei compiti</strong> sui controlli critici (es. chi sviluppa
non approva da solo gli accessi a produzione).
</li>
<li>
<strong>Automatizzare</strong> controlli ripetitivi (SAST, SBOM, scansioni dipendenze) nella
pipeline.
</li>
<li>
<strong>Documentare</strong> decisioni su rischio e accettazioni (log nel sistema di
ticketing) per audit e post-mortem.
</li>
<li>
Coinvolgere <strong>advisor clinici e legali</strong> esterni per convalide su funzionalità ad
alto rischio.
</li>
<li>
Prevedere <strong>revisione trimestrale</strong> del modello e aggiornamento delle
responsabilità man mano che la società cresce.
</li>
{modelloOrganizzativoNote.map((n) => <li>{n}</li>)}
</ul>
<h2>Collegamenti</h2>
<p>
<a class={link} href="/codice-etico">Codice etico</a>
<span class="text-nx-muted"> · </span>
<a class={link} href="/about">Chi siamo</a>
<span class="text-nx-muted"> · </span>
<a class={link} href="#indice">Torna allindice</a>
</p>
</div>
</SubpageLayout>

View File

@ -1,53 +1,77 @@
---
import SubpageLayout from '../layouts/SubpageLayout.astro';
import {
privacyCrossReferences,
privacyDocument,
privacyRiferimenti,
privacySections,
} from '../data/privacy';
const link = 'text-sky-400/90 underline-offset-2 hover:text-sky-300 hover:underline';
const lead =
"Informativa quadro sul trattamento dei dati personali per il portale istituzionale NexStudio (sede operativa: Bangkok, Thailandia) e per le interazioni corporate con i servizi SaaS LexAura e MediAura. " +
privacyCrossReferences.lead;
---
<SubpageLayout
title="Privacy — NexStudio"
description="Informativa sul trattamento dei dati personali NexStudio."
description="Informativa privacy quadro NexStudio: sito istituzionale, contatti corporate, rimandi ai dettagli privacy dei SaaS LexAura (Legal Tech) e MediAura (Health Tech)."
heading="Informativa sulla privacy"
lead="Documento provvisorio: va adattato alla vostra organizzazione e revisionato da un legale prima della pubblicazione definitiva."
lead={lead}
>
<p>
Questa pagina descrive, in forma generica, come NexStudio intende trattare i
dati personali raccolti attraverso il sito web e i canali di contatto. Le
finalità, le basi giuridiche e i destinatari vanno definiti in base alle
vostre attività reali (es. gestione richieste, newsletter, analytics).
</p>
<div>
<p class="border-l-2 border-sky-500/35 pl-4 text-sm leading-relaxed text-nx-muted">
<span class="font-medium text-nx-fg">Versione</span> {privacyDocument.version}
<span class="text-nx-muted/80"> · </span>
<span class="font-medium text-nx-fg">In vigore dal</span> {privacyDocument.inVigoreDal}
<span class="text-nx-muted/80"> · </span>
<span class="font-medium text-nx-fg">Ultimo aggiornamento</span>{' '}
{privacyDocument.ultimoAggiornamento}
</p>
<h2>Titolare del trattamento</h2>
<p>
Indicare ragione sociale, sede, P.IVA e modalità di contatto (es. email
dedicata privacy). Per richieste degli interessati potete rimandare alla
sezione <a class="text-sky-400/90 hover:text-sky-300" href="/#contatti"
>Contatti</a
> o a un indirizzo PEC / form strutturato.
</p>
<p class="!mt-5 text-sm text-nx-muted sm:text-base">
Documenti connessi:{' '}
{
privacyRiferimenti.map((r, i) => (
<span>
{i > 0 && <span class="text-nx-muted/80"> · </span>}
<a class={link} href={r.href}>{r.label}</a>
</span>
))
}
</p>
<h2>Tipologie di dati e finalità</h2>
<p>
Esempi da personalizzare: dati di navigazione e log tecnici; dati forniti
volontariamente tramite moduli o chat; eventuali cookie di profilazione (da
collegare alla <a class="text-sky-400/90 hover:text-sky-300" href="/cookies"
>informativa cookie</a
>). Per ogni trattamento indicare la base giuridica (contratto, legittimo
interesse, consenso, obbligo legale).
</p>
<h2 id="indice" class="!mt-8">Indice</h2>
<ol class="!mt-3 list-decimal space-y-1.5 pl-5 text-sm leading-relaxed sm:text-base">
{
privacySections.map((s) => (
<li>
<a class={link} href={`#${s.id}`}>{s.title}</a>
</li>
))
}
</ol>
<h2>Conservazione e sicurezza</h2>
<p>
Specificare tempi di conservazione per categoria di dati e misure di
sicurezza adottate (crittografia, controllo accessi, fornitori cloud, sede
dei dati).
</p>
<h2>Diritti degli interessati</h2>
<p>
Gli interessati possono esercitare i diritti previsti dal Reg. (UE) 2016/679
(accesso, rettifica, cancellazione, limitazione, portabilità, opposizione,
revoca del consenso). Dettagli operativi nella pagina <a
class="text-sky-400/90 hover:text-sky-300"
href="/gdpr">GDPR</a
>.
</p>
{
privacySections.map((s) => (
<section class="mt-10" id={s.id}>
<h2
class="scroll-mt-8 text-lg font-semibold text-nx-fg sm:text-xl"
>
{s.title}
</h2>
{s.paragraphs.map((p) => (
<p class="mt-3 text-sm leading-relaxed text-nx-muted sm:text-base">{p}</p>
))}
{s.bullets && s.bullets.length > 0 ? (
<ul class="mt-3 list-disc space-y-2 pl-5 text-sm sm:text-base">
{s.bullets.map((b) => (
<li class="text-nx-muted">{b}</li>
))}
</ul>
) : null}
</section>
))
}
</div>
</SubpageLayout>

View File

@ -1,25 +1,69 @@
---
import SubpageLayout from '../layouts/SubpageLayout.astro';
import { termsDocument, termsSections, termsRiferimenti, termsCrossReferences } from '../data/terms';
const link = 'text-sky-400/90 underline-offset-2 hover:text-sky-300 hover:underline';
const lead =
"Si applicano alla navigazione e all'uso del sito informativo pubblico di NexStudio (sede: Bangkok, Thailandia). I contratti d'abbonamento o d'acquisto sui prodotti software restano retti da offerte, ordini o accordi separati. " +
termsCrossReferences.leadNote;
---
<SubpageLayout
title="Condizioni duso — NexStudio"
description="Termini e condizioni duso dei siti e servizi NexStudio."
description="Condizioni duso del sito web NexStudio: accettazione, utilizzo lecito, responsabilità, legge applicabile. Bangkok, LexAura e MediAura, servizi B2B per contratto a parte."
heading="Condizioni duso"
lead="Bozza: definire condizioni duso del sito, limitazioni di responsabilità, proprietà intellettuale e legge applicabile con supporto legale."
lead={lead}
>
<p>
Questa pagina ospiterà le condizioni duso per il sito
pubblico e, se del caso, per laccesso a demo o aree riservate. Struttura
tipica: oggetto, utente, servizi offerti, obblighi dellutente, limitazione
di responsabilità, sospensione, legge e foro competente.
</p>
<h2>Collegamenti</h2>
<p>
<a class="text-sky-400/90 hover:text-sky-300" href="/privacy">Privacy</a>
·
<a class="text-sky-400/90 hover:text-sky-300" href="/cookies">Informativa cookie</a>
·
<a class="text-sky-400/90 hover:text-sky-300" href="/gdpr">Diritti privacy (GDPR)</a>
</p>
<div>
<p class="border-l-2 border-sky-500/35 pl-4 text-sm leading-relaxed text-nx-muted">
<span class="font-medium text-nx-fg">Versione</span> {termsDocument.version}
<span class="text-nx-muted/80"> · </span>
<span class="font-medium text-nx-fg">In vigore dal</span> {termsDocument.inVigoreDal}
</p>
<p class="!mt-5 text-sm text-nx-muted sm:text-base">
Documenti connessi:{' '}
{
termsRiferimenti.map((r, i) => (
<span>
{i > 0 && <span class="text-nx-muted/80"> · </span>}
<a class={link} href={r.href}>{r.label}</a>
</span>
))
}
</p>
<h2 id="indice" class="!mt-8">Indice</h2>
<ol class="!mt-3 list-decimal space-y-1.5 pl-5 text-sm leading-relaxed sm:text-base">
{
termsSections.map((s) => (
<li>
<a class={link} href={`#${s.id}`}>{s.title}</a>
</li>
))
}
</ol>
{
termsSections.map((s) => (
<section class="mt-10" id={s.id}>
<h2
class="scroll-mt-8 text-lg font-semibold text-nx-fg sm:text-xl"
>
{s.title}
</h2>
{s.paragraphs.map((p) => (
<p class="mt-3 text-sm leading-relaxed text-nx-muted sm:text-base">{p}</p>
))}
{s.bullets && s.bullets.length > 0 ? (
<ul class="mt-3 list-disc space-y-2 pl-5 text-sm sm:text-base">
{s.bullets.map((b) => (
<li class="text-nx-muted">{b}</li>
))}
</ul>
) : null}
</section>
))
}
</div>
</SubpageLayout>