feat(phase-2): SEO structured data, dynamic meta, service detail pages

- index.html: JSON-LD Organization + Services ItemList schema, Plausible
  Analytics, canonical link
- app.jsx: dynamic document.title + meta description/OG per hash route;
  service detail routing (services/:id → ServiceDetailPage)
- pages.jsx: ServiceDetailPage with hero, metric, use cases (3 per
  service), process timeline, highlights, and CTA; registered on window

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
khondokartowsif171
2026-05-26 02:47:52 +06:00
parent a2042041eb
commit 151e91fb99
4 changed files with 437 additions and 7 deletions
+63
View File
@@ -71,6 +71,60 @@ function App() {
document.documentElement.style.setProperty("--accent-glow", tweaks.accent + "59");
}, [tweaks.accent, tweaks.accent2]);
// Dynamic meta tags per route
React.useEffect(() => {
const BASE = 'Aura Agentic AI';
const SERVICE_IDS = (PORTFOLIO_DATA.services || []).reduce((m, s) => {
m['services/' + s.id] = { title: `${s.name} — ${BASE}`, desc: s.description };
return m;
}, {});
const META = {
'': {
title: `${BASE} — AI Agents, Automation & Full-Stack Dev`,
desc: 'We build custom AI agents, automation pipelines, Web3 infrastructure, MT5 trading systems, and enterprise web apps. Based in Dhaka, serving clients worldwide.',
},
services: {
title: `Services — ${BASE}`,
desc: 'AI agents, web development, Web3, MT5 trading automation, data pipelines, DevOps, and Meta Ads AI — 7 production-ready services that ship to production.',
},
stack: {
title: `Tech Stack — ${BASE}`,
desc: 'Production-tested stack: React, SvelteKit, Next.js, Node.js, Python, Anthropic Claude, n8n, Solidity, Docker, and more — across 40+ production agents.',
},
agents: {
title: `AI Agents — ${BASE}`,
desc: 'Live demos of AI agents built with Anthropic Claude, LangGraph, and n8n. Agents that triage, decide, and execute with tool access, memory, and audit trails.',
},
timeline: {
title: `Experience — ${BASE}`,
desc: '7 years of shipping production AI systems — from fintech infrastructure to MT5 trading bots to founding Aura Agentic AI in Dhaka, Bangladesh.',
},
contact: {
title: `Contact — ${BASE}`,
desc: 'Get a quote for AI agents, automation, web development, Web3, or MT5 trading systems. Based in Dhaka, Bangladesh. Response within 24 hours.',
},
pricing: {
title: `Pricing — ${BASE}`,
desc: 'Transparent pricing for AI agents, automation, and full-stack development. Starter, Growth, and Enterprise tiers. Fixed scope, no surprises.',
},
blog: {
title: `Blog — ${BASE}`,
desc: 'Technical deep-dives on building AI agents, MT5 Expert Advisors, Meta Ads automation, and the infrastructure behind Aura Agentic AI.',
},
...SERVICE_IDS,
};
const m = META[route] || META[''];
document.title = m.title;
const setMeta = (sel, val) => { const el = document.querySelector(sel); if (el) el.setAttribute('content', val); };
setMeta('meta[name="description"]', m.desc);
setMeta('meta[property="og:title"]', m.title);
setMeta('meta[property="og:description"]', m.desc);
setMeta('meta[property="og:url"]', `https://auraajenticai.cloud/${route ? '#/' + route : ''}`);
setMeta('meta[name="twitter:title"]', m.title);
setMeta('meta[name="twitter:description"]', m.desc);
}, [route]);
// scroll reveal (re-run on route change)
React.useEffect(() => {
const els = document.querySelectorAll(".reveal");
@@ -92,6 +146,15 @@ function App() {
};
const renderPage = () => {
// Service detail pages: #/services/:id
if (route.startsWith('services/')) {
const id = route.slice('services/'.length);
const svc = (PORTFOLIO_DATA.services || []).find(s => s.id === id);
if (svc) return <T.ServiceDetailPage svc={svc} />;
window.location.hash = '#/services';
return null;
}
switch (route) {
case 'services':
return <T.ServicesPage lang={lang} />;