design: Instrument Serif + Inter, phoenix logo, Fibe token system

This commit is contained in:
vyakymenko 2026-04-22 13:07:59 +00:00
parent 71bee93116
commit 2685727a93
3 changed files with 318 additions and 295 deletions

View File

@ -2,95 +2,156 @@
@tailwind components; @tailwind components;
@tailwind utilities; @tailwind utilities;
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=Instrument+Serif:ital@0;1&display=swap');
* { box-sizing: border-box; margin: 0; padding: 0; } @layer base {
:root {
--font-sans: 'Inter', ui-sans-serif, system-ui, sans-serif;
--font-display: 'Instrument Serif', Georgia, 'Times New Roman', serif;
html { /* Fibe dark tokens */
font-family: 'Inter', system-ui, sans-serif; --background: #08080a;
scroll-behavior: smooth; --foreground: #fafafa;
--card: #121214;
--card-foreground: #fafafa;
--muted: #1c1c1f;
--muted-foreground: #a1a1aa;
--accent: #1a1525;
--accent-foreground: #c4b5fd;
--border: rgba(139, 92, 246, 0.15);
--border-subtle: rgba(139, 92, 246, 0.08);
--primary: #a78bfa;
--primary-dark: #8b5cf6;
--primary-light: #c4b5fd;
--ring: #8b5cf6;
--radius: 0.75rem;
--radius-xl: 1rem;
--shadow-glass: 0 8px 32px 0 rgb(139 92 246 / 0.12);
--shadow-elevated: 0 8px 30px -4px rgb(0 0 0 / 0.5), 0 4px 10px -4px rgb(0 0 0 / 0.4);
--transition-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
--transition-smooth: cubic-bezier(0.4, 0, 0.2, 1);
}
/* Phoenix logo animation */
@keyframes header-flame-out {
0% { transform: translate(-50%,-50%) scale(1); opacity: 1; filter: brightness(1); }
8% { opacity: 0.98; filter: brightness(1.12); }
28% { transform: translate(-50%,-50%) scale(0.85); opacity: 0.95; }
42% { transform: translate(-50%,-50%) scale(0.3); opacity: 0.25; filter: brightness(1.3); }
48% { transform: translate(-50%,-50%) scale(0.12); opacity: 0; }
52% { transform: translate(-50%,-50%) scale(0.08); opacity: 0; }
68% { transform: translate(-50%,-50%) scale(0.55); opacity: 0.65; filter: brightness(1.15); }
82% { transform: translate(-50%,-50%) scale(0.92); opacity: 0.95; }
100% { transform: translate(-50%,-50%) scale(1); opacity: 1; filter: brightness(1); }
}
@keyframes gradientShift {
0%, 100% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
}
@keyframes floatUp {
from { opacity: 0; transform: translateY(24px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes pulseGlow {
0%, 100% { box-shadow: 0 0 20px rgba(167,139,250,0.2); }
50% { box-shadow: 0 0 50px rgba(167,139,250,0.4), 0 0 80px rgba(139,92,246,0.2); }
}
.animate-flame-out { animation: header-flame-out 3.2s cubic-bezier(0.4,0,0.2,1) infinite; }
.animate-float-up { animation: floatUp 0.6s ease-out forwards; }
.animate-pulse-glow { animation: pulseGlow 3s ease-in-out infinite; }
} }
body { *, *::before, *::after { box-sizing: border-box; }
background: #0a0914;
color: #f1f5f9; html {
font-family: var(--font-sans);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
scroll-behavior: smooth;
background: var(--background);
color: var(--foreground);
overflow-x: hidden; overflow-x: hidden;
} }
/* Animated gradient background */ body {
font-family: var(--font-sans);
background: var(--background);
color: var(--foreground);
min-height: 100vh;
}
/* Display font for headings */
.font-display {
font-family: var(--font-display);
}
/* Animated purple-indigo gradient background */
.bg-fibe { .bg-fibe {
background: linear-gradient(135deg, #0f0c29 0%, #1a1540 30%, #302b63 60%, #24243e 100%); background: linear-gradient(135deg, #0b0916 0%, #0f0c29 25%, #1a1540 50%, #261f5a 75%, #1e1a42 100%);
background-size: 400% 400%; background-size: 400% 400%;
animation: gradientShift 15s ease infinite; animation: gradientShift 18s ease infinite;
} }
@keyframes gradientShift { /* Subtle grid */
0%, 100% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
}
/* Grid overlay */
.grid-overlay { .grid-overlay {
background-image: background-image:
linear-gradient(rgba(167,139,250,0.04) 1px, transparent 1px), linear-gradient(rgba(139,92,246,0.04) 1px, transparent 1px),
linear-gradient(90deg, rgba(167,139,250,0.04) 1px, transparent 1px); linear-gradient(90deg, rgba(139,92,246,0.04) 1px, transparent 1px);
background-size: 48px 48px; background-size: 52px 52px;
} }
/* Glassmorphism */ /* Glass card */
.glass { .glass {
background: rgba(255,255,255,0.04); background: rgba(255,255,255,0.03);
border: 1px solid rgba(255,255,255,0.09); border: 1px solid var(--border);
backdrop-filter: blur(16px); backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
} }
.glass-strong { .glass-strong {
background: rgba(255,255,255,0.07); background: rgba(26,21,37,0.7);
border: 1px solid rgba(167,139,250,0.2); border: 1px solid rgba(167,139,250,0.18);
backdrop-filter: blur(24px); backdrop-filter: blur(24px);
-webkit-backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px);
box-shadow: var(--shadow-glass);
} }
/* Glow effects */ /* Glows */
.glow-purple { .glow-orb {
box-shadow: 0 0 60px rgba(167,139,250,0.15), 0 0 120px rgba(167,139,250,0.06); position: absolute;
border-radius: 50%;
pointer-events: none;
filter: blur(1px);
} }
.text-glow { /* Gradient text — display font hero */
text-shadow: 0 0 40px rgba(167,139,250,0.4);
}
/* Accent */
.accent { color: #a78bfa; }
.accent-bg { background: #a78bfa; }
/* Gradient text */
.gradient-text { .gradient-text {
background: linear-gradient(135deg, #a78bfa 0%, #818cf8 50%, #60a5fa 100%); background: linear-gradient(135deg, #c4b5fd 0%, #a78bfa 40%, #818cf8 80%, #93c5fd 100%);
-webkit-background-clip: text; -webkit-background-clip: text;
-webkit-text-fill-color: transparent; -webkit-text-fill-color: transparent;
background-clip: text; background-clip: text;
} }
/* Subtle radial glows */ /* Tags / pills */
.glow-orb-1 { .tag {
position: absolute; background: rgba(139,92,246,0.1);
width: 600px; height: 600px; border: 1px solid rgba(139,92,246,0.2);
background: radial-gradient(circle, rgba(167,139,250,0.12) 0%, transparent 70%); color: #c4b5fd;
border-radius: 50%; font-size: 0.7rem;
pointer-events: none; font-family: var(--font-sans);
} font-weight: 500;
.glow-orb-2 { letter-spacing: 0.02em;
position: absolute; padding: 0.2rem 0.6rem;
width: 400px; height: 400px; border-radius: 999px;
background: radial-gradient(circle, rgba(99,102,241,0.1) 0%, transparent 70%);
border-radius: 50%;
pointer-events: none;
} }
/* Scrollbar */ /* Scrollbar */
::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar { width: 5px; }
::-webkit-scrollbar-track { background: #0f0c29; } ::-webkit-scrollbar-track { background: var(--background); }
::-webkit-scrollbar-thumb { background: rgba(167,139,250,0.3); border-radius: 3px; } ::-webkit-scrollbar-thumb { background: rgba(139,92,246,0.25); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: rgba(167,139,250,0.5); } ::-webkit-scrollbar-thumb:hover { background: rgba(139,92,246,0.4); }

View File

@ -1,13 +1,13 @@
import './globals.css' import './globals.css'
export const metadata = { export const metadata = {
title: 'Fibe — Ship faster. Break less.', title: 'Fibe — Your entire stack, live in seconds.',
description: 'Fibe is a fullstack playground orchestrator. Spin up production-like environments in seconds.', description: 'Fibe orchestrates fullstack environments from any git repo. Web apps, APIs, databases, AI agents, preview envs and jobs — on your infra, zero DevOps.',
} }
export default function RootLayout({ children }) { export default function RootLayout({ children }) {
return ( return (
<html lang="en"> <html lang="en" className="dark">
<body>{children}</body> <body>{children}</body>
</html> </html>
) )

View File

@ -2,29 +2,45 @@ export default function Home() {
return ( return (
<main className="bg-fibe grid-overlay min-h-screen text-white relative overflow-hidden"> <main className="bg-fibe grid-overlay min-h-screen text-white relative overflow-hidden">
{/* Ambient glow orbs */} {/* Ambient orbs */}
<div className="glow-orb-1" style={{top: '-100px', right: '-100px'}} /> <div className="glow-orb" style={{width:700,height:700,background:'radial-gradient(circle, rgba(139,92,246,0.12) 0%, transparent 70%)',top:-200,right:-150}} />
<div className="glow-orb-2" style={{bottom: '20%', left: '-80px'}} /> <div className="glow-orb" style={{width:500,height:500,background:'radial-gradient(circle, rgba(99,102,241,0.09) 0%, transparent 70%)',bottom:'15%',left:-150}} />
<div className="glow-orb-1" style={{top: '60%', right: '10%', width: '400px', height: '400px'}} /> <div className="glow-orb" style={{width:400,height:400,background:'radial-gradient(circle, rgba(167,139,250,0.08) 0%, transparent 70%)',top:'55%',right:'5%'}} />
{/* ── NAV ── */} {/* ── NAV ── */}
<nav className="fixed top-0 w-full z-50 border-b border-white/5 glass"> <nav className="fixed top-0 w-full z-50 glass" style={{borderBottom:'1px solid rgba(139,92,246,0.1)'}}>
<div className="max-w-7xl mx-auto px-6 h-16 flex items-center justify-between"> <div className="max-w-7xl mx-auto px-6 h-16 flex items-center justify-between">
<div className="flex items-center gap-2"> {/* Phoenix logo */}
<div className="w-7 h-7 rounded-lg accent-bg flex items-center justify-center text-xs font-black text-white/90">f</div> <div className="flex items-center gap-2.5">
<span className="text-lg font-bold tracking-tight">fibe</span> <div className="relative w-8 h-8">
<div className="w-8 h-8 rounded-xl flex items-center justify-center text-sm font-black"
style={{background:'linear-gradient(135deg, #8b5cf6, #a78bfa)', boxShadow:'0 0 16px rgba(139,92,246,0.4)'}}>
<span className="animate-flame-out absolute"
style={{top:'50%',left:'50%',transform:'translate(-50%,-50%)',fontSize:'13px',lineHeight:1}}>
ƒ
</span>
</div>
</div>
<span className="text-lg font-bold tracking-tight" style={{letterSpacing:'-0.02em'}}>fibe</span>
</div> </div>
<div className="hidden md:flex items-center gap-8 text-sm text-white/50">
<a href="#build" className="hover:text-white transition-colors">What you can build</a> <div className="hidden md:flex items-center gap-7 text-sm" style={{color:'rgba(161,161,170,0.9)'}}>
<a href="#build" className="hover:text-white transition-colors">Build</a>
<a href="#how" className="hover:text-white transition-colors">How it works</a> <a href="#how" className="hover:text-white transition-colors">How it works</a>
<a href="#features" className="hover:text-white transition-colors">Features</a> <a href="#features" className="hover:text-white transition-colors">Platform</a>
<a href="#genies" className="hover:text-white transition-colors">Genies</a>
<a href="#stack" className="hover:text-white transition-colors">Stack</a> <a href="#stack" className="hover:text-white transition-colors">Stack</a>
</div> </div>
<div className="flex items-center gap-3"> <div className="flex items-center gap-3">
<a href="https://next.fibe.live/login" className="text-sm text-white/50 hover:text-white transition-colors hidden md:block">Sign in</a> <a href="https://next.fibe.live/login"
className="text-sm hidden md:block transition-colors"
style={{color:'rgba(161,161,170,0.7)'}}>
Sign in
</a>
<a href="https://next.fibe.live/register" <a href="https://next.fibe.live/register"
className="text-sm font-semibold px-4 py-2 rounded-lg transition-all hover:scale-[1.03]" className="text-sm font-semibold px-4 py-2 rounded-xl transition-all hover:scale-[1.03] hover:brightness-110"
style={{background: 'linear-gradient(135deg, #a78bfa, #818cf8)'}}> style={{background:'linear-gradient(135deg, #8b5cf6, #a78bfa)', boxShadow:'0 0 20px rgba(139,92,246,0.3)'}}>
Get started Get started
</a> </a>
</div> </div>
@ -32,84 +48,91 @@ export default function Home() {
</nav> </nav>
{/* ── HERO ── */} {/* ── HERO ── */}
<section className="relative pt-40 pb-20 px-6"> <section className="relative pt-44 pb-24 px-6 animate-float-up">
<div className="max-w-5xl mx-auto text-center"> <div className="max-w-5xl mx-auto text-center">
<div className="inline-flex items-center gap-2 text-xs font-medium border rounded-full px-4 py-1.5 mb-8"
style={{color: '#a78bfa', borderColor: 'rgba(167,139,250,0.3)', background: 'rgba(167,139,250,0.08)'}}> <div className="inline-flex items-center gap-2 text-xs font-medium rounded-full px-4 py-1.5 mb-10"
<span className="w-1.5 h-1.5 rounded-full bg-green-400 animate-pulse"></span> style={{color:'#c4b5fd',border:'1px solid rgba(139,92,246,0.25)',background:'rgba(139,92,246,0.08)'}}>
Docker-native fullstack orchestration — fra1 online <span className="w-1.5 h-1.5 rounded-full bg-emerald-400 animate-pulse" />
Fullstack orchestration — fra1 · fra2 · nyc3 · your VPS
</div> </div>
<h1 className="text-6xl md:text-8xl font-black tracking-tight leading-[1.02] mb-6"> <h1 className="font-display text-6xl md:text-8xl font-normal tracking-tight leading-[1.05] mb-6"
style={{letterSpacing:'-0.02em'}}>
Your entire stack,<br /> Your entire stack,<br />
<span className="gradient-text text-glow">live in seconds.</span> <em className="gradient-text not-italic">live in seconds.</em>
</h1> </h1>
<p className="text-lg md:text-xl text-white/50 max-w-2xl mx-auto mb-10 leading-relaxed"> <p className="text-lg md:text-xl max-w-2xl mx-auto mb-12 leading-relaxed"
Fibe spins up production-like fullstack environments from any git repo. style={{color:'rgba(161,161,170,0.8)'}}>
Web apps, APIs, databases, AI agents, jobs — all running on your own infra. Fibe orchestrates fullstack environments from any git repo — web apps, APIs, databases,
AI agents, preview envs and jobs. On your infra. Zero DevOps.
</p> </p>
<div className="flex flex-col sm:flex-row gap-3 justify-center mb-20"> <div className="flex flex-col sm:flex-row gap-3 justify-center mb-24">
<a href="https://next.fibe.live/register" <a href="https://next.fibe.live/register"
className="font-bold px-8 py-3.5 rounded-xl transition-all hover:scale-[1.02] hover:shadow-lg text-sm" className="font-semibold px-8 py-3.5 rounded-xl transition-all hover:scale-[1.02] hover:brightness-110 text-sm"
style={{background: 'linear-gradient(135deg, #a78bfa, #818cf8)', boxShadow: '0 0 30px rgba(167,139,250,0.3)'}}> style={{background:'linear-gradient(135deg, #7c3aed, #a78bfa)', boxShadow:'0 0 40px rgba(139,92,246,0.35)', color:'#fff'}}>
Start for free — no credit card Start for free — no card needed
</a> </a>
<a href="https://github.com/fibegg/sdk" <a href="https://github.com/fibegg/sdk"
className="border text-white/60 font-semibold px-8 py-3.5 rounded-xl hover:text-white transition-all text-sm glass" className="font-medium px-8 py-3.5 rounded-xl transition-all hover:text-white text-sm glass"
style={{borderColor: 'rgba(255,255,255,0.12)'}}> style={{color:'rgba(161,161,170,0.7)',borderColor:'rgba(139,92,246,0.15)'}}>
View SDK on GitHub brew install fibegg/sdk/fibe ↗
</a> </a>
</div> </div>
{/* Terminal mockup */} {/* Terminal */}
<div className="max-w-2xl mx-auto glass-strong rounded-2xl overflow-hidden glow-purple"> <div className="max-w-2xl mx-auto glass-strong rounded-2xl overflow-hidden animate-pulse-glow">
<div className="flex items-center gap-1.5 px-4 py-3 border-b" style={{borderColor: 'rgba(167,139,250,0.15)'}}> <div className="flex items-center gap-1.5 px-4 py-3"
<span className="w-3 h-3 rounded-full bg-red-500/70"></span> style={{borderBottom:'1px solid rgba(139,92,246,0.12)'}}>
<span className="w-3 h-3 rounded-full bg-yellow-500/70"></span> <span className="w-2.5 h-2.5 rounded-full" style={{background:'rgba(239,68,68,0.6)'}} />
<span className="w-3 h-3 rounded-full bg-green-500/70"></span> <span className="w-2.5 h-2.5 rounded-full" style={{background:'rgba(234,179,8,0.6)'}} />
<span className="ml-3 text-xs font-mono" style={{color: 'rgba(167,139,250,0.5)'}}>fibe sdk</span> <span className="w-2.5 h-2.5 rounded-full" style={{background:'rgba(34,197,94,0.6)'}} />
<span className="ml-3 text-xs font-mono" style={{color:'rgba(139,92,246,0.5)'}}>~ fibe sdk</span>
</div> </div>
<div className="p-6 font-mono text-sm text-left leading-8"> <div className="p-6 font-mono text-sm text-left leading-8">
<p><span className="text-white/30">$</span> <span className="text-green-400">brew install fibegg/sdk/fibe</span></p> <p><span style={{color:'rgba(255,255,255,0.2)'}}>$</span> <span className="text-emerald-400">brew install fibegg/sdk/fibe</span></p>
<p><span className="text-white/30">$</span> <span style={{color:'#a78bfa'}}>fibe marquees connect</span> <span className="text-white/40">--host 165.232.68.197</span></p> <p><span style={{color:'rgba(255,255,255,0.2)'}}>$</span> <span style={{color:'#a78bfa'}}>fibe marquees connect</span> <span style={{color:'rgba(255,255,255,0.35)'}}>--host 165.232.68.197</span></p>
<p className="text-white/30"> ✓ Marquee registered — fra1</p> <p style={{color:'rgba(255,255,255,0.25)'}}> ✓ Marquee <span style={{color:'rgba(255,255,255,0.5)'}}>fra1</span> registered</p>
<p><span className="text-white/30">$</span> <span className="text-blue-400">fibe pg create</span> <span className="text-white/40">--name my-app --marquee fra1</span></p> <p><span style={{color:'rgba(255,255,255,0.2)'}}>$</span> <span className="text-blue-400">fibe pg create</span> <span style={{color:'rgba(255,255,255,0.35)'}}>--name my-app --marquee fra1</span></p>
<p className="text-white/30"> ✓ Cloning repo... building image... starting...</p> <p style={{color:'rgba(255,255,255,0.25)'}}> ✓ Cloning · building · routing · SSL</p>
<p className="text-white/30"> ✓ Live at: <span className="text-white/60">https://my-app.fibe.me</span></p> <p style={{color:'rgba(255,255,255,0.25)'}}> ✓ Live → <span style={{color:'rgba(196,181,253,0.8)'}}>https://my-app.fibe.me</span></p>
<p><span className="text-white/30">$</span> <span className="text-yellow-400">git push</span> <span className="text-white/40">&amp;&amp; # hot-reload kicks in</span></p> <p><span style={{color:'rgba(255,255,255,0.2)'}}>$</span> <span className="text-yellow-400">git push</span> <span style={{color:'rgba(255,255,255,0.25)'}}> # hot-reload. done.</span></p>
</div> </div>
</div> </div>
</div> </div>
</section> </section>
{/* ── WHAT YOU CAN BUILD ── */} {/* ── WHAT YOU CAN BUILD ── */}
<section id="build" className="py-24 px-6 relative"> <section id="build" className="py-28 px-6" style={{borderTop:'1px solid rgba(139,92,246,0.08)'}}>
<div className="max-w-7xl mx-auto"> <div className="max-w-7xl mx-auto">
<div className="text-center mb-16"> <div className="text-center mb-16">
<p className="text-xs font-semibold uppercase tracking-widest mb-3" style={{color:'rgba(167,139,250,0.6)'}}>What you can build</p> <p className="text-xs font-semibold uppercase tracking-widest mb-3" style={{color:'rgba(139,92,246,0.7)'}}>What you can build</p>
<h2 className="text-4xl md:text-5xl font-black tracking-tight">Anything that runs in Docker.</h2> <h2 className="font-display text-4xl md:text-5xl font-normal" style={{letterSpacing:'-0.02em'}}>
<p className="text-white/40 mt-4 max-w-xl mx-auto">If it has a Dockerfile, Fibe can run it. Here&apos;s what people ship every day.</p> Anything that runs in Docker.
</h2>
<p className="mt-4 max-w-lg mx-auto" style={{color:'rgba(161,161,170,0.7)'}}>
If it has a Dockerfile, Fibe can run it, expose it, route it and SSL it.
</p>
</div> </div>
<div className="grid grid-cols-2 md:grid-cols-4 gap-4"> <div className="grid grid-cols-2 md:grid-cols-4 gap-4">
{[ {[
{ icon: '🌐', label: 'Web Apps', desc: 'Next.js, Nuxt, SvelteKit, Remix, Rails, Django', color: 'rgba(167,139,250,0.15)' }, {icon:'🌐', label:'Web Apps', desc:'Next.js, Nuxt, SvelteKit, Remix, Rails, Django, Laravel', glow:'rgba(139,92,246,0.12)'},
{ icon: '⚙️', label: 'REST & GraphQL APIs', desc: 'Express, Fastify, Go Fiber, FastAPI, NestJS', color: 'rgba(99,102,241,0.15)' }, {icon:'⚙️', label:'REST & GraphQL', desc:'Express, Fastify, Go Fiber, FastAPI, NestJS, tRPC', glow:'rgba(99,102,241,0.12)'},
{ icon: '🗄️', label: 'Databases', desc: 'Postgres, MySQL, MongoDB, Redis, SQLite', color: 'rgba(59,130,246,0.15)' }, {icon:'🗄️', label:'Databases', desc:'Postgres, MySQL, MongoDB, Redis, SQLite, ClickHouse', glow:'rgba(59,130,246,0.1)'},
{ icon: '🤖', label: 'AI Agents', desc: 'Autonomous Genies that build, debug & deploy', color: 'rgba(167,139,250,0.15)' }, {icon:'🤖', label:'AI Agents', desc:'Autonomous Genies — Claude-powered, in-playground coders', glow:'rgba(167,139,250,0.12)'},
{ icon: '🔄', label: 'Preview Envs', desc: 'Every branch gets its own live playground URL', color: 'rgba(34,197,94,0.12)' }, {icon:'🔄', label:'Preview Envs', desc:'Every branch gets its own subdomain & live URL automatically',glow:'rgba(34,197,94,0.09)'},
{ icon: '⚡', label: 'Jobs & CI', desc: 'One-shot Tricks: tests, migrations, builds, cron', color: 'rgba(234,179,8,0.12)' }, {icon:'⚡', label:'Jobs & CI', desc:'One-shot Tricks: tests, migrations, cron, build pipelines', glow:'rgba(234,179,8,0.09)'},
{ icon: '🧩', label: 'Microservices', desc: 'Multi-repo compose: frontend + backend + infra', color: 'rgba(239,68,68,0.1)' }, {icon:'🧩', label:'Microservices', desc:'Multi-repo compose: frontend + backend + workers + infra', glow:'rgba(239,68,68,0.08)'},
{ icon: '🛠️', label: 'Internal Tools', desc: 'Metabase, n8n, Grafana, anything self-hosted', color: 'rgba(20,184,166,0.12)' }, {icon:'🛠️', label:'Internal Tools', desc:'Metabase, n8n, Grafana, Gitea, anything self-hosted', glow:'rgba(20,184,166,0.09)'},
].map(({ icon, label, desc, color }) => ( ].map(({icon, label, desc, glow}) => (
<div key={label} <div key={label} className="glass rounded-2xl p-5 transition-all hover:scale-[1.02] hover:brightness-110 cursor-default"
className="glass rounded-2xl p-5 hover:scale-[1.02] transition-all cursor-default group" style={{background:glow, borderColor:'rgba(255,255,255,0.06)'}}>
style={{background: color, borderColor: 'rgba(255,255,255,0.07)'}}>
<div className="text-3xl mb-3">{icon}</div> <div className="text-3xl mb-3">{icon}</div>
<h3 className="font-bold text-sm text-white mb-1.5">{label}</h3> <h3 className="font-semibold text-sm text-white mb-1.5">{label}</h3>
<p className="text-xs text-white/40 leading-relaxed">{desc}</p> <p className="text-xs leading-relaxed" style={{color:'rgba(161,161,170,0.6)'}}>{desc}</p>
</div> </div>
))} ))}
</div> </div>
@ -117,140 +140,73 @@ export default function Home() {
</section> </section>
{/* ── HOW IT WORKS ── */} {/* ── HOW IT WORKS ── */}
<section id="how" className="py-24 px-6" style={{borderTop: '1px solid rgba(167,139,250,0.08)'}}> <section id="how" className="py-28 px-6" style={{borderTop:'1px solid rgba(139,92,246,0.08)'}}>
<div className="max-w-4xl mx-auto"> <div className="max-w-4xl mx-auto">
<div className="text-center mb-16"> <div className="text-center mb-16">
<p className="text-xs font-semibold uppercase tracking-widest mb-3" style={{color:'rgba(167,139,250,0.6)'}}>How it works</p> <p className="text-xs font-semibold uppercase tracking-widest mb-3" style={{color:'rgba(139,92,246,0.7)'}}>How it works</p>
<h2 className="text-4xl md:text-5xl font-black tracking-tight">Four steps to a live URL.</h2> <h2 className="font-display text-4xl md:text-5xl font-normal" style={{letterSpacing:'-0.02em'}}>
Four steps to a live URL.
</h2>
</div> </div>
<div className="relative"> <div className="space-y-4 relative">
{/* Connector line */} <div className="absolute left-[2.35rem] top-12 bottom-12 w-px hidden md:block"
<div className="absolute left-8 top-10 bottom-10 w-px hidden md:block" style={{background:'linear-gradient(180deg, rgba(139,92,246,0.5) 0%, rgba(139,92,246,0.05) 100%)'}} />
style={{background: 'linear-gradient(180deg, rgba(167,139,250,0.4), rgba(167,139,250,0.05))'}} />
<div className="space-y-6"> {[
{[ {n:'01', title:'Connect a Prop', badge:'Prop', desc:'Link any GitHub or Gitea repo. Fibe tracks every branch. One repo → unlimited environments.'},
{ {n:'02', title:'Register a Marquee', badge:'Marquee', desc:'Point Fibe at any VPS or bare metal. One SSH connection is all it needs. No agents installed.'},
n: '01', title: 'Connect a Prop', {n:'03', title:'Launch a Playground',badge:'Playground', desc:'Pick a Playspec (your docker-compose blueprint), choose a branch, launch. Full env in ~60s.'},
desc: 'Link any GitHub or Gitea repository. Fibe tracks every branch. One repo can power multiple environments.', {n:'04', title:'Push & iterate', badge:'Live →', desc:'Hot-reload on every push. Share the URL with your team. SSL, subdomains, routing — automatic.'},
badge: 'Prop' ].map(({n, title, badge, desc}) => (
}, <div key={n} className="flex gap-5 glass rounded-2xl p-6 relative z-10">
{ <div className="w-12 h-12 rounded-xl flex items-center justify-center text-xs font-black shrink-0"
n: '02', title: 'Register a Marquee', style={{background:'rgba(139,92,246,0.15)',color:'#a78bfa',border:'1px solid rgba(139,92,246,0.25)'}}>
desc: 'Point Fibe at any VPS or bare metal server. One command. SSH in, Docker running — that\'s all you need.', {n}
badge: 'Marquee'
},
{
n: '03', title: 'Launch a Playground',
desc: 'Pick a Playspec (your docker-compose blueprint), choose a branch, hit launch. Full environment in ~60s.',
badge: 'Playground'
},
{
n: '04', title: 'Push & iterate',
desc: 'Your playground hot-reloads on every git push. Share the URL instantly. Multiple playgrounds per project.',
badge: 'Live'
},
].map(({ n, title, desc, badge }) => (
<div key={n} className="flex gap-6 glass rounded-2xl p-6 ml-0 md:ml-4">
<div className="w-12 h-12 rounded-xl flex items-center justify-center text-xs font-black shrink-0 relative z-10"
style={{background: 'rgba(167,139,250,0.15)', color: '#a78bfa', border: '1px solid rgba(167,139,250,0.2)'}}>
{n}
</div>
<div className="flex-1">
<div className="flex items-center gap-3 mb-2">
<h3 className="font-bold text-white">{title}</h3>
<span className="text-xs px-2 py-0.5 rounded-full font-mono"
style={{background: 'rgba(167,139,250,0.12)', color: '#a78bfa', border: '1px solid rgba(167,139,250,0.2)'}}>
{badge}
</span>
</div>
<p className="text-sm text-white/45 leading-relaxed">{desc}</p>
</div>
</div> </div>
))} <div className="flex-1 min-w-0">
</div> <div className="flex items-center gap-3 mb-1.5">
<h3 className="font-semibold text-white">{title}</h3>
<span className="tag">{badge}</span>
</div>
<p className="text-sm leading-relaxed" style={{color:'rgba(161,161,170,0.7)'}}>{desc}</p>
</div>
</div>
))}
</div> </div>
</div> </div>
</section> </section>
{/* ── CORE FEATURES ── */} {/* ── PLATFORM FEATURES ── */}
<section id="features" className="py-24 px-6" style={{borderTop: '1px solid rgba(167,139,250,0.08)'}}> <section id="features" className="py-28 px-6" style={{borderTop:'1px solid rgba(139,92,246,0.08)'}}>
<div className="max-w-7xl mx-auto"> <div className="max-w-7xl mx-auto">
<div className="text-center mb-16"> <div className="text-center mb-16">
<p className="text-xs font-semibold uppercase tracking-widest mb-3" style={{color:'rgba(167,139,250,0.6)'}}>Platform</p> <p className="text-xs font-semibold uppercase tracking-widest mb-3" style={{color:'rgba(139,92,246,0.7)'}}>Platform</p>
<h2 className="text-4xl md:text-5xl font-black tracking-tight">Every layer, covered.</h2> <h2 className="font-display text-4xl md:text-5xl font-normal" style={{letterSpacing:'-0.02em'}}>
Every layer, covered.
</h2>
<p className="mt-4" style={{color:'rgba(161,161,170,0.7)'}}>No glue code. No YAML hell. No ops team required.</p>
</div> </div>
<div className="grid md:grid-cols-3 gap-5"> <div className="grid md:grid-cols-3 gap-5">
{[ {[
{ {icon:'🌀', title:'Playgrounds', tags:['docker-compose','live URL','hot-reload'], desc:'Full docker-compose environments with live URLs. Every service wired, every port routed, every env var injected — automatically.'},
icon: '🌀', {icon:'🧬', title:'Props', tags:['GitHub','Gitea','multi-repo'], desc:'Git repositories as first-class citizens. Connect GitHub or Gitea. Track any branch. Multi-repo setups native.'},
title: 'Playgrounds', {icon:'🏗️', title:'Marquees', tags:['any VPS','SSH','no lock-in'], desc:'Your VPS as compute. DigitalOcean, Hetzner, bare metal — if SSH + Docker work, it works. You own the infra.'},
desc: 'Full docker-compose environments with live URLs. Every service wired, every port routed, every env var injected — automatically.', {icon:'📐', title:'Playspecs', tags:['blueprints','reusable','versioned'], desc:'Reusable deployment blueprints — like Helm charts for docker-compose. Define once, launch infinite playgrounds.'},
tags: ['docker-compose', 'live URL', 'hot-reload'] {icon:'⚡', title:'Tricks (Jobs)', tags:['CI/CD','cron','one-shot'], desc:'Job mode for anything that runs to completion. Tests, migrations, cron tasks, build pipelines — all containerized.'},
}, {icon:'🔐', title:'Secrets Vault', tags:['encrypted','per-service','env injection'], desc:'Encrypted key-value store. Inject credentials at runtime — no plaintext in compose files, repos, or logs.'},
{ {icon:'🌍', title:'Traefik Routing', tags:['auto SSL','subdomains','HTTP/2'], desc:"Auto-provisioned subdomains + Let's Encrypt SSL for every service. Wildcard certs. HTTP→HTTPS. Zero config."},
icon: '🧬', {icon:'🔔', title:'Webhooks & Events', tags:['auto-deploy','audit log','git push'], desc:'Git push triggers automatic rebuilds in production mode. Full audit trail of every deploy, failure, and rollback.'},
title: 'Props', {icon:'🧪', title:'Ephemeral Envs', tags:['per-PR','branch URLs','auto-teardown'], desc:'Every PR gets a live, isolated environment with its own URL. Auto-teardown on merge. Perfect for review workflows.'},
desc: 'Git repositories as first-class citizens. Connect GitHub or Gitea. Track any branch. Multi-repo setups supported out of the box.', ].map(({icon, title, desc, tags}) => (
tags: ['GitHub', 'Gitea', 'multi-repo'] <div key={title} className="glass rounded-2xl p-6 transition-all hover:scale-[1.01] hover:brightness-105"
}, style={{borderColor:'rgba(139,92,246,0.12)'}}>
{
icon: '🏗️',
title: 'Marquees',
desc: 'Your own VPS as the compute layer. No vendor lock-in. DigitalOcean, Hetzner, bare metal — if SSH works, it works.',
tags: ['any VPS', 'SSH', 'Docker host']
},
{
icon: '📐',
title: 'Playspecs',
desc: 'Reusable deployment blueprints — like Helm charts but for docker-compose. Define once, launch many playgrounds from one spec.',
tags: ['blueprints', 'reusable', 'versioned']
},
{
icon: '⚡',
title: 'Tricks (Jobs)',
desc: 'One-shot job mode for anything that runs to completion. Tests, DB migrations, cron tasks, build pipelines — all containerized.',
tags: ['CI/CD', 'cron', 'migrations']
},
{
icon: '🤖',
title: 'Genies (AI Agents)',
desc: 'Autonomous AI agents that live inside your playgrounds. They build features, fix bugs, write tests and deploy — while you sleep.',
tags: ['autonomous', 'Claude', 'in-playground']
},
{
icon: '🔐',
title: 'Secrets Vault',
desc: 'Encrypted key-value store for credentials. Inject into any service at runtime — no plaintext in compose files or repos.',
tags: ['encrypted', 'per-service', 'env injection']
},
{
icon: '🌍',
title: 'Traefik Routing',
desc: 'Auto-provisioned subdomains and Let\'s Encrypt SSL for every service. HTTP→HTTPS redirect, wildcard certs, zero config.',
tags: ['SSL', 'subdomains', 'HTTP/2']
},
{
icon: '🔔',
title: 'Webhooks & Events',
desc: 'Git push triggers automatic rebuilds in production mode. Full audit log of every deployment, failure, and agent action.',
tags: ['auto-deploy', 'audit log', 'git push']
},
].map(({ icon, title, desc, tags }) => (
<div key={title} className="glass rounded-2xl p-6 hover:scale-[1.01] transition-all"
style={{borderColor: 'rgba(167,139,250,0.1)'}}>
<div className="text-2xl mb-4">{icon}</div> <div className="text-2xl mb-4">{icon}</div>
<h3 className="font-bold text-white mb-2">{title}</h3> <h3 className="font-semibold text-white mb-2">{title}</h3>
<p className="text-sm text-white/45 leading-relaxed mb-4">{desc}</p> <p className="text-sm leading-relaxed mb-4" style={{color:'rgba(161,161,170,0.65)'}}>{desc}</p>
<div className="flex flex-wrap gap-2"> <div className="flex flex-wrap gap-1.5">
{tags.map(t => ( {tags.map(t => <span key={t} className="tag">{t}</span>)}
<span key={t} className="text-xs px-2 py-0.5 rounded font-mono"
style={{background: 'rgba(167,139,250,0.08)', color: 'rgba(167,139,250,0.7)', border: '1px solid rgba(167,139,250,0.15)'}}>
{t}
</span>
))}
</div> </div>
</div> </div>
))} ))}
@ -259,29 +215,30 @@ export default function Home() {
</section> </section>
{/* ── GENIES SPOTLIGHT ── */} {/* ── GENIES SPOTLIGHT ── */}
<section className="py-24 px-6 relative overflow-hidden" style={{borderTop: '1px solid rgba(167,139,250,0.08)'}}> <section id="genies" className="py-28 px-6 relative overflow-hidden" style={{borderTop:'1px solid rgba(139,92,246,0.08)'}}>
<div className="glow-orb-1" style={{top: '50%', left: '50%', transform: 'translate(-50%,-50%)', width: '800px', height: '800px', opacity: 0.6}} /> <div className="glow-orb" style={{width:900,height:900,background:'radial-gradient(circle, rgba(139,92,246,0.1) 0%, transparent 70%)',top:'50%',left:'50%',transform:'translate(-50%,-50%)'}} />
<div className="max-w-5xl mx-auto relative z-10"> <div className="max-w-5xl mx-auto relative z-10">
<div className="glass-strong rounded-3xl p-10 md:p-16 text-center glow-purple"> <div className="glass-strong rounded-3xl p-10 md:p-16 text-center">
<div className="text-5xl mb-6">🤖</div> <div className="text-5xl mb-6">🤖</div>
<p className="text-xs font-semibold uppercase tracking-widest mb-4" style={{color:'rgba(167,139,250,0.6)'}}>Genies — AI Agents</p> <p className="text-xs font-semibold uppercase tracking-widest mb-4" style={{color:'rgba(139,92,246,0.7)'}}>Genies — AI Agents</p>
<h2 className="text-3xl md:text-5xl font-black tracking-tight mb-6"> <h2 className="font-display text-4xl md:text-6xl font-normal mb-6" style={{letterSpacing:'-0.02em'}}>
Agents that actually<br /><span className="gradient-text">ship code.</span> Agents that actually<br /><em className="gradient-text not-italic">ship code.</em>
</h2> </h2>
<p className="text-white/50 text-lg max-w-2xl mx-auto mb-8 leading-relaxed"> <p className="text-lg max-w-2xl mx-auto mb-12 leading-relaxed" style={{color:'rgba(161,161,170,0.75)'}}>
Genies are autonomous Claude-powered agents that live inside your Playgrounds. Genies are autonomous Claude-powered agents that live inside your Playgrounds.
They have full access to your codebase, terminal, Docker, and git. Full access to your codebase, terminal, Docker and git.
Assign them a task — they plan, implement, test and push. Assign a task — they plan, build, test and push.
</p> </p>
<div className="grid md:grid-cols-3 gap-4 text-left mt-10">
<div className="grid md:grid-cols-3 gap-4 text-left">
{[ {[
{ title: 'Full environment access', desc: 'Reads your code, runs commands, edits files, pushes commits — inside your live Playground.' }, {title:'Full environment access', desc:'Reads code, runs commands, edits files, pushes commits — inside a live Playground with real Docker services running.'},
{ title: 'Mutter stream', desc: 'Real-time internal monologue. Watch the agent think, plan and debug. Transparent by design.' }, {title:'Mutter stream', desc:'Real-time internal monologue. Watch the agent reason, plan and debug. Transparent by design. No black boxes.'},
{ title: 'Artefacts & Feedback', desc: 'Genies produce artefacts (files, reports) and request feedback. Full async collaboration loop.' }, {title:'Artefacts & Feedback', desc:'Genies produce artefacts (files, reports, PRs) and request feedback. A proper async collaboration loop.'},
].map(({ title, desc }) => ( ].map(({title, desc}) => (
<div key={title} className="glass rounded-xl p-5" style={{borderColor: 'rgba(167,139,250,0.15)'}}> <div key={title} className="glass rounded-xl p-5" style={{borderColor:'rgba(139,92,246,0.15)'}}>
<h4 className="font-semibold text-white text-sm mb-2">{title}</h4> <h4 className="font-semibold text-white text-sm mb-2">{title}</h4>
<p className="text-xs text-white/40 leading-relaxed">{desc}</p> <p className="text-xs leading-relaxed" style={{color:'rgba(161,161,170,0.6)'}}>{desc}</p>
</div> </div>
))} ))}
</div> </div>
@ -290,32 +247,36 @@ export default function Home() {
</section> </section>
{/* ── STACK ── */} {/* ── STACK ── */}
<section id="stack" className="py-24 px-6" style={{borderTop: '1px solid rgba(167,139,250,0.08)'}}> <section id="stack" className="py-28 px-6" style={{borderTop:'1px solid rgba(139,92,246,0.08)'}}>
<div className="max-w-6xl mx-auto"> <div className="max-w-6xl mx-auto">
<div className="text-center mb-16"> <div className="text-center mb-16">
<p className="text-xs font-semibold uppercase tracking-widest mb-3" style={{color:'rgba(167,139,250,0.6)'}}>Built on boring tech</p> <p className="text-xs font-semibold uppercase tracking-widest mb-3" style={{color:'rgba(139,92,246,0.7)'}}>Built on boring tech</p>
<h2 className="text-4xl md:text-5xl font-black tracking-tight mb-4">Battle-tested all the way down.</h2> <h2 className="font-display text-4xl md:text-5xl font-normal mb-4" style={{letterSpacing:'-0.02em'}}>
<p className="text-white/40 max-w-lg mx-auto">No WASM runtimes. No experimental runtimes. Just Docker, SSH, git and Traefik doing what they&apos;ve done for years.</p> Battle-tested all the way down.
</h2>
<p className="max-w-lg mx-auto" style={{color:'rgba(161,161,170,0.7)'}}>
No WASM runtimes. No experimental protocols. Docker, SSH, git and Traefik — doing what they&apos;ve done for a decade.
</p>
</div> </div>
<div className="grid md:grid-cols-2 gap-8"> <div className="grid md:grid-cols-2 gap-10">
<div> <div>
<p className="text-xs font-semibold uppercase tracking-widest mb-4 text-white/30">Platform</p> <p className="text-xs font-semibold uppercase tracking-widest mb-4" style={{color:'rgba(255,255,255,0.2)'}}>Platform</p>
<div className="flex flex-wrap gap-2"> <div className="flex flex-wrap gap-2">
{['Docker', 'docker-compose', 'Traefik', "Let's Encrypt", 'SSH', 'Go', 'PostgreSQL', 'Redis'].map(t => ( {['Docker','docker-compose','Traefik',"Let's Encrypt",'SSH','Go','PostgreSQL','Redis','Gitea'].map(t => (
<span key={t} className="px-3 py-1.5 rounded-lg text-sm font-mono glass" <span key={t} className="px-3 py-1.5 rounded-lg text-sm font-mono glass"
style={{color: '#a78bfa', borderColor: 'rgba(167,139,250,0.15)'}}> style={{color:'#a78bfa',borderColor:'rgba(139,92,246,0.2)'}}>
{t} {t}
</span> </span>
))} ))}
</div> </div>
</div> </div>
<div> <div>
<p className="text-xs font-semibold uppercase tracking-widest mb-4 text-white/30">Works with any framework</p> <p className="text-xs font-semibold uppercase tracking-widest mb-4" style={{color:'rgba(255,255,255,0.2)'}}>Works with any framework</p>
<div className="flex flex-wrap gap-2"> <div className="flex flex-wrap gap-2">
{['Next.js', 'Nuxt', 'SvelteKit', 'Remix', 'Rails', 'Django', 'FastAPI', 'Go Fiber', 'NestJS', 'Laravel', 'Spring Boot', 'Elixir/Phoenix'].map(t => ( {['Next.js','Nuxt','SvelteKit','Remix','Rails','Django','FastAPI','Go Fiber','NestJS','Laravel','Spring Boot','Elixir/Phoenix','Bun'].map(t => (
<span key={t} className="px-3 py-1.5 rounded-lg text-sm font-mono glass" <span key={t} className="px-3 py-1.5 rounded-lg text-sm font-mono glass"
style={{color: 'rgba(241,245,249,0.5)', borderColor: 'rgba(255,255,255,0.07)'}}> style={{color:'rgba(161,161,170,0.6)',borderColor:'rgba(255,255,255,0.06)'}}>
{t} {t}
</span> </span>
))} ))}
@ -326,41 +287,41 @@ export default function Home() {
</section> </section>
{/* ── STATS ── */} {/* ── STATS ── */}
<section className="py-16 px-6" style={{borderTop: '1px solid rgba(167,139,250,0.08)'}}> <section className="py-20 px-6" style={{borderTop:'1px solid rgba(139,92,246,0.08)'}}>
<div className="max-w-4xl mx-auto"> <div className="max-w-4xl mx-auto grid grid-cols-2 md:grid-cols-4 gap-5">
<div className="grid grid-cols-2 md:grid-cols-4 gap-6"> {[
{[ {n:'~60s', label:'avg Playground boot'},
{ n: '60s', label: 'avg Playground boot time' }, {n:'∞', label:'Playgrounds per Marquee'},
{ n: '∞', label: 'Playgrounds per Marquee' }, {n:'100%', label:'your infra, your data'},
{ n: '100%', label: 'your infra, your data' }, {n:'0', label:'vendor lock-in'},
{ n: '0', label: 'vendor lock-in' }, ].map(({n, label}) => (
].map(({ n, label }) => ( <div key={label} className="glass rounded-2xl p-6 text-center" style={{borderColor:'rgba(139,92,246,0.12)'}}>
<div key={label} className="text-center glass rounded-2xl p-6"> <div className="font-display text-4xl font-normal mb-1.5 gradient-text" style={{letterSpacing:'-0.02em'}}>{n}</div>
<div className="text-4xl font-black gradient-text mb-2">{n}</div> <div className="text-xs" style={{color:'rgba(161,161,170,0.5)'}}>{label}</div>
<div className="text-xs text-white/40">{label}</div> </div>
</div> ))}
))}
</div>
</div> </div>
</section> </section>
{/* ── CTA ── */} {/* ── CTA ── */}
<section className="py-32 px-6 relative overflow-hidden" style={{borderTop: '1px solid rgba(167,139,250,0.08)'}}> <section className="py-36 px-6 relative overflow-hidden" style={{borderTop:'1px solid rgba(139,92,246,0.08)'}}>
<div className="glow-orb-1" style={{top: '50%', left: '50%', transform: 'translate(-50%,-50%)'}} /> <div className="glow-orb" style={{width:800,height:800,background:'radial-gradient(circle, rgba(139,92,246,0.14) 0%, transparent 70%)',top:'50%',left:'50%',transform:'translate(-50%,-50%)'}} />
<div className="max-w-2xl mx-auto text-center relative z-10"> <div className="max-w-2xl mx-auto text-center relative z-10">
<h2 className="text-5xl md:text-6xl font-black tracking-tight mb-4"> <h2 className="font-display text-5xl md:text-7xl font-normal mb-4" style={{letterSpacing:'-0.02em'}}>
Ready to <span className="gradient-text">fibe</span>? Ready to <em className="gradient-text not-italic">fibe</em>?
</h2> </h2>
<p className="text-white/40 text-lg mb-10">Your first Playground is free. No credit card. No CLI required to start.</p> <p className="text-lg mb-10" style={{color:'rgba(161,161,170,0.65)'}}>
Your first Playground is free. No credit card. No CLI required to start.
</p>
<div className="flex flex-col sm:flex-row gap-3 justify-center"> <div className="flex flex-col sm:flex-row gap-3 justify-center">
<a href="https://next.fibe.live/register" <a href="https://next.fibe.live/register"
className="font-bold px-10 py-4 rounded-xl transition-all hover:scale-[1.02] text-base" className="font-semibold px-10 py-4 rounded-xl transition-all hover:scale-[1.02] hover:brightness-110 text-base"
style={{background: 'linear-gradient(135deg, #a78bfa, #818cf8)', boxShadow: '0 0 40px rgba(167,139,250,0.35)'}}> style={{background:'linear-gradient(135deg, #7c3aed, #a78bfa)', boxShadow:'0 0 50px rgba(139,92,246,0.4)'}}>
Start building — free Start building — free
</a> </a>
<a href="https://github.com/fibegg" <a href="https://github.com/fibegg"
className="border font-semibold px-10 py-4 rounded-xl hover:text-white transition-all text-base glass text-white/50" className="font-medium px-10 py-4 rounded-xl transition-all hover:text-white text-base glass"
style={{borderColor: 'rgba(255,255,255,0.1)'}}> style={{color:'rgba(161,161,170,0.6)',borderColor:'rgba(139,92,246,0.15)'}}>
Explore on GitHub Explore on GitHub
</a> </a>
</div> </div>
@ -368,14 +329,15 @@ export default function Home() {
</section> </section>
{/* ── FOOTER ── */} {/* ── FOOTER ── */}
<footer className="py-10 px-6" style={{borderTop: '1px solid rgba(167,139,250,0.08)'}}> <footer className="py-10 px-6" style={{borderTop:'1px solid rgba(139,92,246,0.08)'}}>
<div className="max-w-7xl mx-auto flex flex-col md:flex-row items-center justify-between gap-4"> <div className="max-w-7xl mx-auto flex flex-col md:flex-row items-center justify-between gap-4">
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<div className="w-6 h-6 rounded-md accent-bg flex items-center justify-center text-xs font-black">f</div> <div className="w-6 h-6 rounded-md flex items-center justify-center text-xs font-black"
<span className="font-bold text-white/60">fibe</span> style={{background:'linear-gradient(135deg, #7c3aed, #a78bfa)'}}>ƒ</div>
<span className="font-semibold" style={{color:'rgba(161,161,170,0.5)'}}>fibe</span>
</div> </div>
<span className="text-sm text-white/25">© 2026 Fibe — Your entire stack, live in seconds.</span> <span className="text-sm" style={{color:'rgba(161,161,170,0.25)'}}>© 2026 Fibe — Your entire stack, live in seconds.</span>
<div className="flex gap-6 text-sm text-white/30"> <div className="flex gap-6 text-sm" style={{color:'rgba(161,161,170,0.35)'}}>
<a href="https://github.com/fibegg" className="hover:text-white transition-colors">GitHub</a> <a href="https://github.com/fibegg" className="hover:text-white transition-colors">GitHub</a>
<a href="https://next.fibe.live" className="hover:text-white transition-colors">App</a> <a href="https://next.fibe.live" className="hover:text-white transition-colors">App</a>
<a href="https://git-next.fibe.live/fibegg" className="hover:text-white transition-colors">Gitea</a> <a href="https://git-next.fibe.live/fibegg" className="hover:text-white transition-colors">Gitea</a>