const web = new Website()
function build(config) {
const site = render(config)
return site.deploy()
}
const [data, setData] = useState(null)
useEffect(() => {
fetchData('/api/projects')
}, [])
async function load(url) {
const res = await fetch(url)
if (!res.ok) throw new Error()
return res.json()
}
npm run build
git push origin main
NODE_ENV=production
const router = useRouter()
router.push('/grazie') interface Project {
id: string
client: string
type: 'website' | 'app' | 'mobile'
status: boolean
launched: Date
}
export type Config = {
theme: string
locale: 'it' | 'en' | 'de'
apiKey: string
maxItems: number
}
const stan: Developer = {
name: 'Carol Stan',
city: 'Trieste',
stack: ['React', 'Astro', 'Node']
}
type ServiceType = 'vetrina'
| 'webapp' | 'mobile'
| 'seo' | 'ai' .hero {
display: grid;
grid-template-columns: 52% 1fr;
gap: 4rem;
align-items: center;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(20px) }
to { opacity: 1; transform: translateY(0) }
}
:root {
--color-accent: #519872;
--font-mono: 'JetBrains Mono';
--radius-full: 9999px;
}
.btn-primary {
border-radius: var(--radius-full);
background: linear-gradient(
135deg, #519872, #233329
);
font-family: var(--font-mono);
} import express from 'express'
const app = express()
app.use(express.json())
app.get('/api/projects', async (req, res) => {
const data = await db.findAll()
res.json({ success: true, data })
})
app.post('/api/contact', async (req, res) => {
const { name, email, msg } = req.body
await sendMail({ name, email, msg })
res.json({ sent: true })
})
app.listen(3000, () => {
console.log('stancarol API online')
})
module.exports = { app } SELECT clients.name,
projects.title,
projects.status,
projects.launched_at
FROM clients
JOIN projects ON
clients.id = projects.client_id
WHERE projects.active = true
AND clients.city = 'Trieste'
ORDER BY launched_at DESC
LIMIT 20;
CREATE TABLE projects (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
client_id UUID REFERENCES clients(id),
title VARCHAR(255) NOT NULL,
status BOOLEAN DEFAULT false,
created_at TIMESTAMP DEFAULT NOW()
); export default function Page() {
return (
<main className="site">
<Hero />
<Services />
<Portfolio />
<FAQ />
<CTA />
</main>
)
}
const { data, error, isLoading } = useSWR(
'/api/projects',
fetcher,
{ revalidateOnFocus: false }
)
export async function getStaticProps() {
const projects = await fetchProjects()
return {
props: { projects },
revalidate: 3600
}
} git init
git add .
git commit -m "feat: initial site"
git push -u origin main
vercel --prod
# deployment complete ✓
# stancarol.it live
const env = process.env
const SITE = env.NEXT_PUBLIC_URL
const KEY = env.API_SECRET_KEY
// build config
export default defineConfig({
site: 'https://stancarol.it',
integrations: [react(), tailwind()],
output: 'static'
}) @keyframes float {
0%, 100% {
transform: translateY(0px);
}
50% {
transform: translateY(-12px);
}
}
@keyframes glow-pulse {
0%, 100% {
box-shadow: 0 0 20px rgba(81,152,114,0.2);
}
50% {
box-shadow: 0 0 40px rgba(81,152,114,0.4);
}
}
.portrait-circle {
border-radius: 50%;
animation: float 6s ease-in-out infinite;
}
@media (max-width: 768px) {
.hero-layout {
grid-template-columns: 1fr;
}
} const gsap = require('gsap')
const ScrollTrigger = require('gsap/ScrollTrigger')
gsap.registerPlugin(ScrollTrigger)
gsap.from('.hero-headline', {
y: 60,
opacity: 0,
duration: 1.2,
ease: 'power4.out'
})
ScrollTrigger.create({
trigger: '.services',
start: 'top 80%',
onEnter: () => {
gsap.from('.service-card', {
y: 40,
opacity: 0,
stagger: 0.1,
duration: 0.8
})
},
once: true
}) {
"name": "stancarol-site",
"version": "1.0.0",
"scripts": {
"dev": "astro dev",
"build": "astro build",
"start": "node server.js",
"lint": "eslint src/"
},
"dependencies": {
"astro": "^4.0.0",
"gsap": "^3.12.0",
"react": "^18.0.0"
},
"devDependencies": {
"typescript": "^5.0.0",
"tailwindcss": "^4.0.0"
}
} — SEO Locale Trieste
Prima pagina Google
per la tua attività a Trieste.
Quando qualcuno cerca "ristorante Trieste", "avvocato Trieste" o "parrucchiere Trieste" su Google,
vuoi essere tra i primi risultati. La SEO locale fa esattamente questo: porta i clienti giusti
direttamente da te, nel momento in cui ti stanno cercando.
Cosa include la SEO locale
Google Business Profile
Creo e ottimizzo la tua scheda Google Maps: foto, orari, categorie, recensioni, post. Fondamentale per apparire nelle ricerche 'vicino a me'.
SEO On-page
Ottimizzazione di titoli, meta description, heading, contenuto e URL per le keyword locali più cercate nella tua categoria.
Dati strutturati Schema.org
Markup JSON-LD per LocalBusiness, FAQPage, Review e BreadcrumbList. I rich result aumentano il CTR del 20-30%.
Gestione recensioni
Strategia per raccogliere recensioni positive su Google, rispondere alle negative e migliorare il rating medio.
Link building locale
Costruzione di citazioni NAP (Nome, Indirizzo, Telefono) coerenti su directory italiane, portali di settore e testate locali.
Monitoraggio e report
Google Search Console e Analytics configurati. Report mensili su posizioni, traffico, click e conversioni.
Per chi è la SEO locale a Trieste
Qualsiasi attività con una sede fisica o che serve clienti locali può beneficiare della SEO locale.
Ecco i settori dove l'impatto è più immediato:
Ristoranti e bar
Parrucchieri e barbieri
Centri estetici e SPA
Avvocati e notai
Commercialisti
Dentisti e medici
Artigiani e imprese edili
Negozi e boutique
Officine e carrozzerie
Agenzie immobiliari
Fisioterapisti
Giardinieri e florist
Domande sulla SEO locale
- In quanto tempo vedo i risultati?
- La SEO locale mostra i primi risultati in 4-8 settimane per keyword locali con bassa concorrenza. Per posizionamenti competitivi come 'avvocato Trieste' ci vogliono 3-6 mesi. Google Business Profile ottimizzato dà risultati più rapidi.
- Ho già un sito. Posso fare solo la SEO?
- Sì. Faccio un audit completo del tuo sito attuale, identifico i problemi e li correggo. Se il sito è troppo vecchio o lento, conviene rifarlo — te lo dico onestamente prima di iniziare.
- Cosa sono i dati strutturati?
- Sono codici che dicono a Google chi sei, cosa fai e dove sei. Permettono di mostrare valutazioni, orari e FAQ direttamente nei risultati di ricerca, aumentando i click.
- La SEO locale funziona anche senza sito?
- Google Business Profile funziona anche da solo, ma un sito ottimizzato aumenta enormemente le possibilità di posizionamento. I due canali si rafforzano a vicenda.