+ {enTitle(article)} +
++ {enSummary(article).slice(0, 240)} +
++ {enTitle(article)} +
++ {enSummary(article).slice(0, 110)}… +
+diff --git a/app/teknav-en.jsx b/app/teknav-en.jsx
new file mode 100644
index 0000000..4e11898
--- /dev/null
+++ b/app/teknav-en.jsx
@@ -0,0 +1,519 @@
+// teknav-en.jsx — English landing page (mirrors Persian homepage quality)
+import { useState, useEffect, useRef } from 'react';
+import { TeknavData } from './teknav-data.js';
+import { useNav } from './teknav-ui.jsx';
+import { LazyDiagram } from './src/components/lazy-diagram.jsx';
+import { iconNode } from './src/lib/icon.jsx';
+import pencilIcon from './src/assets/icons/pencil.svg';
+
+// ── English copy maps ────────────────────────────────────────────────────────
+const EN_TITLES = {
+ 'tekrag-persian-data-centric-rag-benchmark': 'TekRAG-Persian: A Data-Centric Benchmark for Persian Technical RAG',
+ 'mcp-model-context-protocol-2026': 'Model Context Protocol in 2026: Architecture, Tools, and Agentic AI',
+ 'ai-data-centric-2026': 'Data-Centric AI in 2026: Why Clean Data Beats Bigger Models',
+ 'cve-2026-41940-cpanel-zero-day-analysis': 'CVE-2026-41940: Technical Analysis of a cPanel Zero-Day',
+ 'agentic-ai-production-2026': 'Agentic AI in Production: Reliability, Tools, and Governance',
+ 'llm-security': 'LLM Security: Prompt Injection, RAG Attacks, and Defensive Design',
+ 'data-governance-2026': 'Data Governance in 2026: Metadata, Lineage, and AI-Ready Data',
+ 'open-source-ai-sovereignty': 'Open-Source AI and Digital Sovereignty',
+ 'deepseek-v4-engram': 'DeepSeek-V4 and Efficient Reasoning Architectures',
+ 'post-quantum-cryptography-qday': 'Post-Quantum Cryptography and the Road to Q-Day',
+};
+
+const EN_SUMMARIES = {
+ 'tekrag-persian-data-centric-rag-benchmark': 'A research-grade benchmark for Persian technical question answering, hallucination evaluation, citation grounding, and data-centric RAG — comparing raw, cleaned, and metadata-enriched corpus variants.',
+ 'mcp-model-context-protocol-2026': 'A technical deep-dive into the Model Context Protocol as the emerging standard connecting large language models to tools, resources, prompts, and autonomous agent workflows.',
+ 'ai-data-centric-2026': 'A practical examination of why data quality, labeling precision, provenance tracking, and pipeline hygiene matter more as frontier models become increasingly capable.',
+ 'cve-2026-41940-cpanel-zero-day-analysis': 'A security-focused breakdown of exploit surface, privilege escalation path, operational impact timeline, patching priorities, and defensive monitoring recommendations.',
+ 'agentic-ai-production-2026': 'A field guide to moving AI agents from controlled demos into production systems with proper telemetry, permission scoping, evaluation loops, and failure recovery.',
+ 'llm-security': 'Threat models and defensive controls for prompt injection, indirect instruction attacks, insecure tool use, retrieval poisoning, and multi-agent trust boundaries.',
+ 'data-governance-2026': 'How metadata management, data lineage, policy enforcement, quality gates, and semantic layers shape dependable AI systems and analytics infrastructure.',
+ 'open-source-ai-sovereignty': 'Why open model weights, transparent architectures, and local deployment matter for strategic control over AI infrastructure and long-term technology independence.',
+ 'deepseek-v4-engram': 'A close look at memory architecture, mixture-of-experts efficiency, inference cost pressures, and what efficient reasoning architectures reveal about the frontier.',
+ 'post-quantum-cryptography-qday': 'A clear explanation of quantum computing risk, NIST standardization, cryptographic migration strategy, and why organizations need post-quantum planning today.',
+};
+
+const EN_CATEGORIES = {
+ ai: { name: 'Artificial Intelligence', desc: 'LLMs, agents, model safety, and AI infrastructure' },
+ data: { name: 'Data Science', desc: 'RAG, data-centric AI, governance, and benchmarks' },
+ security: { name: 'Cybersecurity', desc: 'Vulnerabilities, LLM security, and defense' },
+ hardware: { name: 'Hardware', desc: 'AI chips, semiconductors, and compute strategy' },
+ software: { name: 'Software Engineering', desc: 'Architecture, systems design, and tooling' },
+ startup: { name: 'Startups & Markets', desc: 'Technology markets, product strategy, and venture' },
+ future: { name: 'Future of Technology', desc: 'Long-horizon trends and societal impact' },
+};
+
+function enTitle(article) {
+ return EN_TITLES[article.slug] || article.seoTitle || article.ogTitle || article.title;
+}
+function enSummary(article) {
+ return EN_SUMMARIES[article.slug] || article.ogDescription || article.metaDescription || article.summary || '';
+}
+function enCategory(article) {
+ return EN_CATEGORIES[article.category]?.name || article.categoryName || 'Technology';
+}
+function enAuthor(article) {
+ const a = TeknavData.authors.find((x) => x.id === article.authorId);
+ return a?.nameEn || (a?.slug === 'arsam-sabbagh' ? 'Arsam Sabbagh' : article.authorName);
+}
+
+function publishedArticles() {
+ return TeknavData.articles
+ .filter((a) => a.status !== 'پیشنویس' && a.status !== 'در انتظار بررسی')
+ .slice()
+ .sort((a, b) => String(b.dateEn || '').localeCompare(String(a.dateEn || '')));
+}
+
+// ── Animated neural background (same as Persian hero) ───────────────────────
+function HeroBg() {
+ const ref = useRef();
+ useEffect(() => {
+ const canvas = ref.current;
+ if (!canvas) return;
+ const ctx = canvas.getContext('2d');
+ let raf, t = 0;
+ const palette = ['rgba(15,107,115,', 'rgba(196,106,77,', 'rgba(47,143,107,'];
+ const nodes = Array.from({ length: 28 }, (_, i) => ({
+ x: Math.random() * canvas.width, y: Math.random() * canvas.height,
+ vx: (Math.random() - 0.5) * 0.32, vy: (Math.random() - 0.5) * 0.32,
+ r: Math.random() * 3 + 1.5,
+ color: palette[i % palette.length],
+ phase: Math.random() * Math.PI * 2,
+ }));
+ const resize = () => { canvas.width = canvas.offsetWidth; canvas.height = canvas.offsetHeight; };
+ resize();
+ window.addEventListener('resize', resize);
+ const draw = () => {
+ t += 0.012;
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
+ nodes.forEach((n) => {
+ n.x += n.vx; n.y += n.vy;
+ if (n.x < 0 || n.x > canvas.width) n.vx *= -1;
+ if (n.y < 0 || n.y > canvas.height) n.vy *= -1;
+ nodes.forEach((m) => {
+ const d = Math.hypot(n.x - m.x, n.y - m.y);
+ if (d < 120) {
+ ctx.beginPath(); ctx.moveTo(n.x, n.y); ctx.lineTo(m.x, m.y);
+ ctx.strokeStyle = `rgba(15,107,115,${0.15 * (1 - d / 120)})`;
+ ctx.lineWidth = 0.7; ctx.stroke();
+ }
+ });
+ const pulse = 0.45 + 0.18 * Math.sin(t + n.phase);
+ ctx.beginPath(); ctx.arc(n.x, n.y, n.r, 0, Math.PI * 2);
+ ctx.fillStyle = n.color + pulse + ')'; ctx.fill();
+ });
+ raf = requestAnimationFrame(draw);
+ };
+ draw();
+ return () => { cancelAnimationFrame(raf); window.removeEventListener('resize', resize); };
+ }, []);
+ return ;
+}
+
+// ── CountUp animation ────────────────────────────────────────────────────────
+function CountUp({ to, suffix = '', duration = 1400 }) {
+ const [n, setN] = useState(0);
+ const ref = useRef();
+ const started = useRef(false);
+ useEffect(() => {
+ const obs = new IntersectionObserver(([e]) => {
+ if (e.isIntersecting && !started.current) {
+ started.current = true;
+ const start = performance.now();
+ const tick = (now) => {
+ const p = Math.min((now - start) / duration, 1);
+ setN(Math.round(to * (1 - Math.pow(1 - p, 3))));
+ if (p < 1) requestAnimationFrame(tick);
+ };
+ requestAnimationFrame(tick);
+ }
+ }, { threshold: 0.4 });
+ if (ref.current) obs.observe(ref.current);
+ return () => obs.disconnect();
+ }, [to, duration]);
+ return {n.toLocaleString()}{suffix};
+}
+
+// ── Article card (English) ───────────────────────────────────────────────────
+function EnArticleCard({ article, delay = 0, featured = false }) {
+ const { navigate } = useNav();
+ const [vis, setVis] = useState(false);
+ const ref = useRef();
+ useEffect(() => {
+ const obs = new IntersectionObserver(([e]) => { if (e.isIntersecting) setVis(true); }, { threshold: 0.08 });
+ if (ref.current) obs.observe(ref.current);
+ return () => obs.disconnect();
+ }, []);
+
+ return (
+
+ {enSummary(article).slice(0, 240)}
+
+ {enSummary(article).slice(0, 110)}…
+
+ {enTitle(article)}
+
+
+ {enTitle(article)}
+
+
+ Independent editorial research for engineers, founders, and analysts. Persian-first publication — this page gives international readers an English overview of Teknav's analysis and research. +
+Featured
+Analysis
+Popular
+Site map
++ The Persian newsletter covers AI, cybersecurity, software, hardware, startups, and data — published weekly for Iranian engineering teams. +
+