Allinea backend, configurazione env e documentazione al nuovo modello vetrina con destinatari meno granulari. Made-with: Cursor
NexStudio Website Runbook
Sito istituzionale NexStudio basato su Astro, con deploy su Cloudflare e form contatti protetto da Turnstile.
Obiettivo del repository
- Presentazione aziendale e servizi (homepage e pagine legali).
- Entry point unico per richieste commerciali e supporto.
- Base pronta per contenuti multilingua IT/EN/TH.
- Pipeline di deploy stabile su Cloudflare.
Stack tecnico
- Astro + Tailwind CSS
- Adapter Cloudflare (
@astrojs/cloudflare) - Sitemap (
@astrojs/sitemap) - Form backend su endpoint
/api/contact - Turnstile + Resend per anti-spam e invio email
Struttura essenziale
src/pages/: pagine pubbliche e route API (src/pages/api/contact.ts)src/components/: componenti UI condivisisrc/data/: contenuti testuali e configurazioni paginepublic/: asset statici (loghi, immagini, robots).env.example: variabili locali di riferimento
Prerequisiti
- Node.js 20+
- npm 10+
- Account Cloudflare (Pages/Workers + Turnstile)
- Account Resend (API key + sender verificato)
Avvio locale
- Installazione dipendenze:
npm install
- Copia variabili di ambiente:
- copia
.env.examplein.env
- copia
- Avvio sviluppo:
npm run dev
- Se Vite resta in cache incoerente:
npm run dev:fresh
Comandi utili
npm run dev: sviluppo localenpm run dev:fresh: reset cache.vitee.astro+ avvio dev servernpm run build: build produzionenpm run preview: preview locale della buildnpm run deploy:cf: build + deploy con wrangler su output Astro
Configurazione contatti
Variabili pubbliche (frontend):
PUBLIC_CONTACT_FORM_ACTION_URL(default consigliato:/api/contact)PUBLIC_CONTACT_FORM_SUCCESS_REDIRECT(URL assoluto della pagina post-submit)PUBLIC_CONTACT_FORM_MAILTO(fallback se action URL non disponibile)PUBLIC_CONTACT_TURNSTILE_SITE_KEY
Variabili server (Cloudflare/local):
CONTACT_FORM_MODE(devoppurelive)CONTACT_FORM_RESEND_API_KEYCONTACT_FORM_FROM_EMAIL(consigliato:no-reply@nexstudio.ai)CONTACT_FORM_TO_EMAIL(default destinatario, es.info@nexstudio.ai)CONTACT_FORM_TO_EMAIL_INFO(opzionale, override esplicito per area "info")CONTACT_FORM_TO_EMAIL_PRIVACYCONTACT_FORM_TO_EMAIL_CAREERSCONTACT_TURNSTILE_SECRET_KEY
Comportamento:
dev: accetta submit e scrive payload nei log (senza invio reale)live: valida Turnstile e invia email via Resend
Routing pubblico consigliato (portale vetrina):
info: informazioni generali/commercialiprivacy: richieste privacy e diritti interessatocareers: candidature e collaborazioni
Indirizzi consigliati portale:
info@nexstudio.aiprivacy@nexstudio.aicareers@nexstudio.aino-reply@nexstudio.ai(solo invio comunicazioni/newsletter, non destinazione inbound)
Deploy Cloudflare
Impostazioni consigliate:
- Build command:
npm run build - Deploy command:
npm run deploy:cf
Questa configurazione evita errori tipo:
The entry-point file at "@astrojs/cloudflare/entrypoints/server" was not found.
Dominio e sicurezza
- Dominio ufficiale:
https://nexstudio.ai - Hostname Turnstile da mantenere allineati:
nexstudio.aiwww.nexstudio.ai(se usato)localhost(test locale)
- Accesso pre-go-live gestito con Cloudflare Zero Trust Access
Stato operativo attuale
- Issue #1 (contact form live): implementata
- Issue #2 (anti-spam Turnstile): implementata
- Issue #3 (SEO base): implementata (sitemap, robots, canonical/OG/Twitter)
- Issue #4: in avanzamento (contenuti non placeholder)
- Issue #5: da completare (localizzazione reale IT/EN/TH)
Note operative
- Per modifiche non minori usare branch dedicato (
feat/*,fix/*) e merge sumaindopo verifica. - Evitare commit su
mainper attivita complesse. - Rigenerare eventuali API key esposte e aggiornare subito i secret su Cloudflare.
Description
Languages
TypeScript
81.5%
Astro
16.1%
CSS
1.6%
JavaScript
0.8%