synor/apps/website/src/App.tsx
Gulshan Yadav ac3b31d491 feat: add synor.cc landing page and zero-cost deployment plan
- Add React landing page with TailwindCSS + Framer Motion for synor.cc
- Add Docker deployment configs for explorer-web and website
- Create comprehensive zero-cost deployment plan using:
  - Vercel (free tier) for all frontends
  - Supabase (free tier) for PostgreSQL
  - Upstash (free tier) for Redis rate limiting
  - Oracle Cloud Always Free for blockchain nodes (24GB RAM)
- Update Phase 7 documentation with current status

Total estimated cost: $0-1/month for production deployment
2026-01-10 09:26:21 +05:30

517 lines
19 KiB
TypeScript

import { motion } from 'framer-motion';
import {
Shield,
Zap,
Network,
Code2,
Wallet,
BarChart3,
Github,
Twitter,
MessageCircle,
ArrowRight,
Lock,
Layers,
Globe,
Cpu,
FileCode,
BookOpen,
} from 'lucide-react';
function App() {
return (
<div className="min-h-screen">
<Header />
<Hero />
<Features />
<Technology />
<Ecosystem />
<Stats />
<CTA />
<Footer />
</div>
);
}
function Header() {
return (
<header className="fixed top-0 left-0 right-0 z-50 bg-slate-950/80 backdrop-blur-xl border-b border-white/5">
<nav className="container mx-auto px-6 py-4">
<div className="flex items-center justify-between">
<a href="#" className="flex items-center gap-2">
<div className="w-8 h-8 rounded-lg bg-gradient-to-br from-synor-500 to-quantum-500 flex items-center justify-center">
<span className="text-white font-bold text-sm">S</span>
</div>
<span className="font-bold text-xl">Synor</span>
</a>
<div className="hidden md:flex items-center gap-8">
<a href="#features" className="text-sm text-slate-300 hover:text-white transition-colors">Features</a>
<a href="#technology" className="text-sm text-slate-300 hover:text-white transition-colors">Technology</a>
<a href="#ecosystem" className="text-sm text-slate-300 hover:text-white transition-colors">Ecosystem</a>
<a href="https://docs.synor.cc" className="text-sm text-slate-300 hover:text-white transition-colors">Docs</a>
</div>
<div className="flex items-center gap-4">
<a href="https://wallet.synor.cc" className="btn-secondary hidden sm:block">
Launch Wallet
</a>
<a href="https://explorer.synor.cc" className="btn-primary">
Explorer
</a>
</div>
</div>
</nav>
</header>
);
}
function Hero() {
return (
<section className="relative min-h-screen flex items-center justify-center overflow-hidden pt-20">
{/* Background effects */}
<div className="absolute inset-0 bg-gradient-to-b from-synor-950/50 via-slate-950 to-slate-950" />
<div className="absolute top-1/4 left-1/4 w-96 h-96 bg-synor-500/20 rounded-full blur-3xl animate-pulse-slow" />
<div className="absolute bottom-1/4 right-1/4 w-96 h-96 bg-quantum-500/20 rounded-full blur-3xl animate-pulse-slow delay-1000" />
{/* Grid pattern */}
<div className="absolute inset-0 bg-[linear-gradient(rgba(255,255,255,0.02)_1px,transparent_1px),linear-gradient(90deg,rgba(255,255,255,0.02)_1px,transparent_1px)] bg-[size:100px_100px]" />
<div className="relative container mx-auto px-6 text-center">
<motion.div
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.8 }}
>
<div className="inline-flex items-center gap-2 px-4 py-2 bg-white/5 border border-white/10 rounded-full mb-8">
<Shield className="w-4 h-4 text-quantum-400" />
<span className="text-sm text-slate-300">Quantum-Resistant Security</span>
</div>
<h1 className="text-5xl md:text-7xl font-bold mb-6 leading-tight">
The Blockchain for the
<br />
<span className="gradient-text">Post-Quantum Era</span>
</h1>
<p className="text-xl text-slate-400 max-w-2xl mx-auto mb-10">
Synor combines DAG-based consensus with quantum-resistant cryptography
to deliver blazing-fast transactions that will remain secure for decades.
</p>
<div className="flex flex-col sm:flex-row items-center justify-center gap-4">
<a href="https://wallet.synor.cc" className="btn-primary flex items-center gap-2">
Get Started <ArrowRight className="w-4 h-4" />
</a>
<a href="https://docs.synor.cc" className="btn-secondary flex items-center gap-2">
<BookOpen className="w-4 h-4" /> Read the Docs
</a>
</div>
{/* Tech badges */}
<div className="flex flex-wrap items-center justify-center gap-4 mt-16">
{['GHOSTDAG Consensus', 'Dilithium3 Signatures', 'WASM Smart Contracts', '1s Block Time'].map((tech) => (
<span
key={tech}
className="px-4 py-2 bg-white/5 border border-white/10 rounded-lg text-sm text-slate-400"
>
{tech}
</span>
))}
</div>
</motion.div>
</div>
</section>
);
}
function Features() {
const features = [
{
icon: Shield,
title: 'Quantum-Resistant',
description: 'Hybrid Ed25519 + Dilithium3 signatures protect against both classical and quantum attacks.',
color: 'from-quantum-500 to-purple-500',
},
{
icon: Zap,
title: 'Lightning Fast',
description: '1-second block times with instant confirmations through DAG-based parallel processing.',
color: 'from-yellow-500 to-orange-500',
},
{
icon: Network,
title: 'DAG Consensus',
description: 'GHOSTDAG allows multiple blocks simultaneously, eliminating orphan blocks and maximizing throughput.',
color: 'from-synor-500 to-cyan-500',
},
{
icon: Code2,
title: 'Smart Contracts',
description: 'Write contracts in Rust, compile to WASM. Full SDK with testing framework included.',
color: 'from-green-500 to-emerald-500',
},
{
icon: Lock,
title: 'Encrypted Storage',
description: 'AES-256-GCM encryption with Argon2 key derivation keeps your assets secure.',
color: 'from-red-500 to-pink-500',
},
{
icon: Layers,
title: 'UTXO Model',
description: 'Proven UTXO transaction model with native support for atomic swaps and multi-sig.',
color: 'from-indigo-500 to-blue-500',
},
];
return (
<section id="features" className="py-32 relative">
<div className="container mx-auto px-6">
<motion.div
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
className="text-center mb-16"
>
<h2 className="text-4xl md:text-5xl font-bold mb-4">
Built for the <span className="gradient-text">Future</span>
</h2>
<p className="text-xl text-slate-400 max-w-2xl mx-auto">
Every component designed with security, speed, and scalability in mind.
</p>
</motion.div>
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
{features.map((feature, i) => (
<motion.div
key={feature.title}
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ delay: i * 0.1 }}
className="card group"
>
<div className={`w-12 h-12 rounded-xl bg-gradient-to-br ${feature.color} flex items-center justify-center mb-4`}>
<feature.icon className="w-6 h-6 text-white" />
</div>
<h3 className="text-xl font-semibold mb-2">{feature.title}</h3>
<p className="text-slate-400">{feature.description}</p>
</motion.div>
))}
</div>
</div>
</section>
);
}
function Technology() {
return (
<section id="technology" className="py-32 relative bg-gradient-to-b from-slate-950 via-synor-950/20 to-slate-950">
<div className="container mx-auto px-6">
<div className="grid lg:grid-cols-2 gap-16 items-center">
<motion.div
initial={{ opacity: 0, x: -20 }}
whileInView={{ opacity: 1, x: 0 }}
viewport={{ once: true }}
>
<h2 className="text-4xl md:text-5xl font-bold mb-6">
Quantum-Safe
<br />
<span className="gradient-text">Cryptography</span>
</h2>
<p className="text-lg text-slate-400 mb-8">
As quantum computers advance, traditional cryptography becomes vulnerable.
Synor uses NIST-approved Dilithium3 lattice-based signatures alongside
Ed25519 for a hybrid approach that's secure today and tomorrow.
</p>
<div className="space-y-4">
{[
{ label: 'Ed25519', desc: 'Fast classical signatures for everyday use' },
{ label: 'Dilithium3', desc: 'Quantum-resistant lattice cryptography' },
{ label: 'Hybrid Mode', desc: 'Both signatures for maximum security' },
].map((item) => (
<div key={item.label} className="flex items-start gap-4">
<div className="w-2 h-2 rounded-full bg-quantum-500 mt-2" />
<div>
<span className="font-semibold">{item.label}</span>
<span className="text-slate-400 ml-2">- {item.desc}</span>
</div>
</div>
))}
</div>
</motion.div>
<motion.div
initial={{ opacity: 0, x: 20 }}
whileInView={{ opacity: 1, x: 0 }}
viewport={{ once: true }}
className="relative"
>
{/* Code preview */}
<div className="card bg-slate-900/90 p-0 overflow-hidden">
<div className="flex items-center gap-2 px-4 py-3 border-b border-white/10">
<div className="w-3 h-3 rounded-full bg-red-500" />
<div className="w-3 h-3 rounded-full bg-yellow-500" />
<div className="w-3 h-3 rounded-full bg-green-500" />
<span className="text-sm text-slate-500 ml-2">signature.rs</span>
</div>
<pre className="p-4 text-sm font-mono overflow-x-auto">
<code className="text-slate-300">
{`// Hybrid quantum-resistant signature
pub struct HybridSignature {
ed25519: Ed25519Signature,
dilithium: DilithiumSignature,
}
impl HybridSignature {
pub fn sign(msg: &[u8], keypair: &HybridKeypair)
-> Self
{
Self {
ed25519: keypair.ed25519.sign(msg),
dilithium: keypair.dilithium.sign(msg),
}
}
pub fn verify(&self, msg: &[u8], pubkey: &HybridPubkey)
-> bool
{
self.ed25519.verify(msg, &pubkey.ed25519)
&& self.dilithium.verify(msg, &pubkey.dilithium)
}
}`}
</code>
</pre>
</div>
</motion.div>
</div>
</div>
</section>
);
}
function Ecosystem() {
const apps = [
{
icon: Wallet,
title: 'Web Wallet',
description: 'Browser-based wallet with QR codes, hardware support, and 6 languages.',
url: 'https://wallet.synor.cc',
status: 'Live',
},
{
icon: Cpu,
title: 'Desktop Wallet',
description: 'Native app for macOS, Windows, and Linux with system tray integration.',
url: '#',
status: 'Download',
},
{
icon: BarChart3,
title: 'Block Explorer',
description: 'Real-time blockchain explorer with 3D DAG visualization.',
url: 'https://explorer.synor.cc',
status: 'Live',
},
{
icon: FileCode,
title: 'Contract SDK',
description: 'Full Rust SDK for building and testing smart contracts.',
url: 'https://docs.synor.cc/contracts',
status: 'Docs',
},
{
icon: Globe,
title: 'Public API',
description: 'Rate-limited RPC access with free, developer, and enterprise tiers.',
url: 'https://api.synor.cc',
status: 'API',
},
{
icon: BookOpen,
title: 'Tutorials',
description: 'Step-by-step guides from Hello World to DeFi staking pools.',
url: 'https://docs.synor.cc/tutorials',
status: 'Learn',
},
];
return (
<section id="ecosystem" className="py-32 relative">
<div className="container mx-auto px-6">
<motion.div
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
className="text-center mb-16"
>
<h2 className="text-4xl md:text-5xl font-bold mb-4">
Complete <span className="gradient-text">Ecosystem</span>
</h2>
<p className="text-xl text-slate-400 max-w-2xl mx-auto">
Everything you need to build, deploy, and interact with Synor.
</p>
</motion.div>
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
{apps.map((app, i) => (
<motion.a
key={app.title}
href={app.url}
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ delay: i * 0.1 }}
className="card group cursor-pointer"
>
<div className="flex items-start justify-between mb-4">
<div className="w-12 h-12 rounded-xl bg-gradient-to-br from-synor-500/20 to-quantum-500/20 border border-white/10 flex items-center justify-center">
<app.icon className="w-6 h-6 text-synor-400" />
</div>
<span className="px-3 py-1 text-xs font-medium bg-synor-500/20 text-synor-400 rounded-full">
{app.status}
</span>
</div>
<h3 className="text-xl font-semibold mb-2 group-hover:text-synor-400 transition-colors">
{app.title}
</h3>
<p className="text-slate-400">{app.description}</p>
</motion.a>
))}
</div>
</div>
</section>
);
}
function Stats() {
const stats = [
{ value: '1s', label: 'Block Time' },
{ value: '10K+', label: 'TPS Capacity' },
{ value: '100%', label: 'Uptime' },
{ value: '0', label: 'Security Incidents' },
];
return (
<section className="py-20 relative bg-gradient-to-r from-synor-950/50 via-quantum-950/50 to-synor-950/50">
<div className="container mx-auto px-6">
<div className="grid grid-cols-2 md:grid-cols-4 gap-8">
{stats.map((stat, i) => (
<motion.div
key={stat.label}
initial={{ opacity: 0, scale: 0.9 }}
whileInView={{ opacity: 1, scale: 1 }}
viewport={{ once: true }}
transition={{ delay: i * 0.1 }}
className="text-center"
>
<div className="text-4xl md:text-5xl font-bold gradient-text mb-2">{stat.value}</div>
<div className="text-slate-400">{stat.label}</div>
</motion.div>
))}
</div>
</div>
</section>
);
}
function CTA() {
return (
<section className="py-32 relative">
<div className="container mx-auto px-6">
<motion.div
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
className="card bg-gradient-to-br from-synor-900/50 to-quantum-900/50 border-synor-500/20 text-center py-16"
>
<h2 className="text-4xl md:text-5xl font-bold mb-4">
Ready to Build?
</h2>
<p className="text-xl text-slate-400 max-w-2xl mx-auto mb-8">
Join the quantum-secure future. Start building on Synor today.
</p>
<div className="flex flex-col sm:flex-row items-center justify-center gap-4">
<a href="https://wallet.synor.cc" className="btn-primary flex items-center gap-2">
Create Wallet <ArrowRight className="w-4 h-4" />
</a>
<a href="https://docs.synor.cc/tutorials/01-hello-world" className="btn-secondary">
Follow Tutorial
</a>
</div>
</motion.div>
</div>
</section>
);
}
function Footer() {
return (
<footer className="py-16 border-t border-white/5">
<div className="container mx-auto px-6">
<div className="grid md:grid-cols-4 gap-12 mb-12">
<div>
<div className="flex items-center gap-2 mb-4">
<div className="w-8 h-8 rounded-lg bg-gradient-to-br from-synor-500 to-quantum-500 flex items-center justify-center">
<span className="text-white font-bold text-sm">S</span>
</div>
<span className="font-bold text-xl">Synor</span>
</div>
<p className="text-slate-400 text-sm">
The quantum-secure blockchain for the post-quantum era.
</p>
</div>
<div>
<h4 className="font-semibold mb-4">Products</h4>
<ul className="space-y-2 text-sm text-slate-400">
<li><a href="https://wallet.synor.cc" className="hover:text-white transition-colors">Web Wallet</a></li>
<li><a href="https://explorer.synor.cc" className="hover:text-white transition-colors">Block Explorer</a></li>
<li><a href="https://api.synor.cc" className="hover:text-white transition-colors">Public API</a></li>
<li><a href="#" className="hover:text-white transition-colors">Desktop Wallet</a></li>
</ul>
</div>
<div>
<h4 className="font-semibold mb-4">Developers</h4>
<ul className="space-y-2 text-sm text-slate-400">
<li><a href="https://docs.synor.cc" className="hover:text-white transition-colors">Documentation</a></li>
<li><a href="https://docs.synor.cc/tutorials" className="hover:text-white transition-colors">Tutorials</a></li>
<li><a href="https://docs.synor.cc/contracts" className="hover:text-white transition-colors">Smart Contracts</a></li>
<li><a href="https://github.com/synor" className="hover:text-white transition-colors">GitHub</a></li>
</ul>
</div>
<div>
<h4 className="font-semibold mb-4">Community</h4>
<div className="flex items-center gap-4">
<a href="https://github.com/synor" className="text-slate-400 hover:text-white transition-colors">
<Github className="w-5 h-5" />
</a>
<a href="https://twitter.com/synor_cc" className="text-slate-400 hover:text-white transition-colors">
<Twitter className="w-5 h-5" />
</a>
<a href="https://discord.gg/synor" className="text-slate-400 hover:text-white transition-colors">
<MessageCircle className="w-5 h-5" />
</a>
</div>
</div>
</div>
<div className="pt-8 border-t border-white/5 flex flex-col md:flex-row items-center justify-between gap-4">
<p className="text-sm text-slate-500">
&copy; {new Date().getFullYear()} Synor. All rights reserved.
</p>
<div className="flex items-center gap-6 text-sm text-slate-500">
<a href="#" className="hover:text-white transition-colors">Privacy Policy</a>
<a href="#" className="hover:text-white transition-colors">Terms of Service</a>
</div>
</div>
</div>
</footer>
);
}
export default App;