'use client';
import dynamic from 'next/dynamic';
import Link from 'next/link';
import { useRef } from 'react';
import { motion, useReducedMotion, useScroll, useTransform } from 'framer-motion';
import { ArrowRight, Database, FlowArrow, Brain, CaretDown as ChevronDown } from '@phosphor-icons/react';
import { TiltCard } from '@/components/ui/TiltCard';
import { ThemeToggle } from '@/components/ui/ThemeToggle';
import { JsonLd } from '@/components/seo/JsonLd';
import { ORG_ID, SOFTWARE_ID, SITE_NAME, SITE_URL, WEBPAGE_ID, WEBSITE_ID } from '@/lib/seo';
const DNAHelix = dynamic(
() => import('@/components/three/DNAHelix'),
{ ssr: false, loading: () =>
}
);
const DATABASES = ['NCBI', 'UniProt', 'PDB', 'AlphaFold', 'EMBL', 'InterPro', 'KEGG', 'STRING'];
const DB_GROUPS = [
{ label: 'Portals', names: 'NCBI · EMBL-EBI' },
{ label: 'Annotation', names: 'UniProt · InterPro' },
{ label: 'Structure', names: 'RCSB PDB · AlphaFold' },
{ label: 'Systems', names: 'KEGG · STRING' },
];
const CONFIDENCE_BANDS = [
{ label: 'Very high', dot: 'bg-confidence-very-high' },
{ label: 'High', dot: 'bg-confidence-high' },
{ label: 'Moderate', dot: 'bg-confidence-moderate' },
{ label: 'Low', dot: 'bg-confidence-low' },
];
const REVEAL = { initial: { opacity: 0, y: 28 }, whileInView: { opacity: 1, y: 0 }, viewport: { once: true, margin: '-80px' } };
const PIPELINE = [
{ tag: 'input', label: 'Sequence Input', sub: 'FASTA / accession ID' },
{ tag: 'blast', label: 'BLAST Search', sub: 'EBI BLAST + NCBI' },
{ tag: 'uniprot', label: 'UniProt Lookup', sub: 'Annotation & function' },
{ tag: 'fold', label: 'Structure Prediction', sub: 'AlphaFold 3D viewer' },
{ tag: 'ai', label: 'AI Interpretation', sub: 'Plain-language insight' },
];
const FEATURES = [
{
icon: Database,
title: 'Unified Access',
body: 'NCBI, UniProt, PDB, KEGG, STRING and more — one plain-English query retrieves across every major database simultaneously.',
span: 'md:col-span-2',
},
{
icon: FlowArrow,
title: 'Pipeline Automation',
body: 'BLAST → UniProt → AlphaFold runs sequentially, hands-free. Real-time progress via SSE, results assembled automatically.',
span: 'md:col-span-1',
},
{
icon: Brain,
title: 'AI Interpretation',
body: 'Every result is narrated in plain language. Clinical relevance, evolutionary context, functional insights — streamed live.',
span: 'md:col-span-3',
},
];
export default function LandingPage() {
const heroRef = useRef(null);
const { scrollYProgress } = useScroll({
target: heroRef,
offset: ['start start', 'end start'],
});
const reduceMotion = useReducedMotion();
// Parallax slides the hero as you scroll — flattened to a cross-fade under
// reduced motion (apple-design §14).
const contentY = useTransform(scrollYProgress, [0, 1], reduceMotion ? ['0%', '0%'] : ['0%', '12%']);
const contentOpacity = useTransform(scrollYProgress, [0, 0.6], [1, 0.2]);
return (
Synteny
Features
Pipeline
Sign in
Start analyzing
Stop tab-switching
between eight databases.
Paste a sequence. Synteny runs BLAST, annotation, structure and
AI interpretation — assembled on one page, in one query.
Start analyzing
See the pipeline
No API keys · results streamed live
DOUBLE HELIX · LIVE
5′ — 3′
4.2 kb
{[...DATABASES, ...DATABASES].map((db, i) => (
{db}
))}
From sequence to insight
Five automated stages, zero manual database switching.
{PIPELINE.map(({ tag, label, sub }, i) => (
))}
What you get back
BLAST hits, annotation, structure and AI insight — cross-referenced on one page, exportable as PDF or JSON.
P01308 · Insulin [Homo sapiens]
sample
BLAST hits · top 3 of 14
P01308 · INS_HUMAN
100% · e 0.0
insulin [mouse]
87% · e 1e-97
insulin-like INSL3
41% · e 3e-14
AI interpretation
> Insulin — reviewed UniProt entry with an experimental
structure. Function, family and disease annotations cross-referenced from the source databases.
{CONFIDENCE_BANDS.map((b) => (
{b.label}
))}
NCBI · UniProt · PDB · AlphaFold
All your databases, one query
One query retrieves across every major database simultaneously — results cross-referenced on a single page.
{FEATURES.map((f, i) => {
const Icon = f.icon;
const wide = f.span === 'md:col-span-2';
const full = f.span === 'md:col-span-3';
return (
{wide && (
{DB_GROUPS.map((g) => (
{g.label}
{g.names}
))}
)}
{full && (
> docking · 7 poses scored against target pocket
Best pose: binding affinity −8.4 kcal/mol, ligand efficiency 0.31 — narrated in plain language alongside the raw AutoDock Vina output.
engine · AutoDock Vina · CPU-based, no GPU required
)}
);
})}
Ready to decode your sequences?
Free to start. No API keys required to run your first analysis.
Your sequences stay yours — never shared or used beyond the analysis you ask for.
Start analyzing
Synteny · Built at Jamia Millia Islamia
Sign in
© 2026
);
}