import { useState, useRef, useEffect } from 'react' import { createRoot } from 'react-dom/client' import { ArrowRight, Shield, Zap, Globe, Lock, Code, Server } from 'lucide-react' import Layout from '@public/layouts' import { Button } from '@public/components/ui/button' import { Card } from '@public/components/ui/card' function App() { const [showForm, setShowForm] = useState(false) const inputRef = useRef(null) useEffect(() => { if (showForm) { setTimeout(() => inputRef.current?.focus(), 500) } }, [showForm]) return ( <>
{/* Header */}
wisp.place
{/* Hero Section */}
Built on AT Protocol

Your Website.Your Control. Lightning Fast.

Host static sites in your AT Protocol account. You keep ownership and control. We just serve them fast through our CDN.

{ e.preventDefault() try { const handle = inputRef.current?.value const res = await fetch( '/api/auth/signin', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ handle }) } ) if (!res.ok) throw new Error( 'Request failed' ) const data = await res.json() if (data.url) { window.location.href = data.url } else { alert('Unexpected response') } } catch (error) { console.error( 'Login failed:', error ) alert('Authentication failed') } }} className="space-y-3" >
{/* How It Works */}

How it works

01

Upload your static site

Your HTML, CSS, and JavaScript files are stored in your AT Protocol account as gzipped blobs and a manifest record.

02

We serve it globally

Wisp.place reads your site from your account and delivers it through our CDN for fast loading anywhere.

03

You stay in control

Update or remove your site anytime through your AT Protocol account. No lock-in, no middleman ownership.

{/* Features Grid */}

Why Wisp.place?

Static site hosting that respects your ownership

{[ { icon: Shield, title: 'You Own Your Content', description: 'Your site lives in your AT Protocol account. Move it to another service anytime, or take it offline yourself.' }, { icon: Zap, title: 'CDN Performance', description: 'We cache and serve your site from edge locations worldwide for fast load times.' }, { icon: Lock, title: 'No Vendor Lock-in', description: 'Your data stays in your account. Switch providers or self-host whenever you want.' }, { icon: Code, title: 'Simple Deployment', description: 'Upload your static files and we handle the rest. No complex configuration needed.' }, { icon: Server, title: 'AT Protocol Native', description: 'Built for the decentralized web. Your site has a verifiable identity on the network.' }, { icon: Globe, title: 'Custom Domains', description: 'Use your own domain name or a wisp.place subdomain. Your choice, either way.' } ].map((feature, i) => (

{feature.title}

{feature.description}

))}
{/* CTA Section */}

Ready to deploy?

Host your static site on your own AT Protocol account today

{/* Footer */}
) } const root = createRoot(document.getElementById('elysia')!) root.render( )