import Layout from "@/components/Layout"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { useAuth } from "@/contexts/AuthContext"; import { useToast } from "@/hooks/use-toast"; import { useRef, useState } from "react"; import { Link } from "react-router-dom"; import { Flame, BarChart3, Layers, Shield, Handshake, Building2, Target, Rocket, } from "lucide-react"; type ThesisPoint = { icon: JSX.Element; title: string; desc: string }; export default function Investors() { const { user, profile, updateProfile } = useAuth(); const { toast } = useToast(); const formRef = useRef(null); const [name, setName] = useState(""); const [email, setEmail] = useState(""); const [amount, setAmount] = useState(""); const [accredited, setAccredited] = useState(false); const [message, setMessage] = useState(""); const [submitting, setSubmitting] = useState(false); const isClientRealm = (profile as any)?.user_type === "client"; const scrollToForm = () => formRef.current?.scrollIntoView({ behavior: "smooth", block: "start" }); const submit = async () => { if (!email.trim()) { toast({ variant: "destructive", description: "Email is required" }); return; } setSubmitting(true); try { const resp = await fetch("/api/investors/interest", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ name, email, amount, accredited, message }), }); if (!resp.ok) throw new Error("Failed to submit"); toast({ title: "Thanks!", description: "We’ll follow up with next steps.", }); setName(""); setEmail(""); setAmount(""); setMessage(""); setAccredited(false); } catch (e: any) { toast({ variant: "destructive", description: e?.message || "Try again later", }); } finally { setSubmitting(false); } }; const activateClientRealm = async () => { try { await updateProfile({ user_type: "client" as any }); toast({ title: "Realm set", description: "Consulting realm activated" }); } catch (e: any) { toast({ variant: "destructive", description: e?.message || "Could not update realm", }); } }; const thesis: ThesisPoint[] = [ { icon: , title: "Three Engines", desc: "Studios (services), Platform (community), and Labs (R&D) compound value together.", }, { icon: , title: "Trust & Quality", desc: "Security-first engineering and measurable delivery keep churn low and NPS high.", }, { icon: , title: "Focused Markets", desc: "High-signal segments: games, real-time apps, and experience platforms.", }, ]; const kpis = [ { kpi: "50+", label: "Projects shipped" }, { kpi: "10x", label: "Perf improvements" }, { kpi: "99.9%", label: "Uptime targets" }, { kpi: "<30d", label: "MVP timelines" }, ]; return (
{/* Hero */}
Investor Relations

AeThex | Building With Conviction

We craft reliable, loved software and the platform that powers creators. Explore our thesis, traction, and how to participate in compliant offerings.

{/* Thesis */}

Investment Thesis

Software creation is shifting to collaborative, real-time networks. AeThex aligns world-class services, platform, and research to accelerate outcomes for builders and brands.

{thesis.map((point) => ( {point.icon} {point.title} {point.desc} ))}
{/* KPIs */}
{kpis.map((m) => (
{m.kpi}
{m.label}
))}
{/* Interest + Realm */}
Investor interest Request our investor packet and updates setName(e.target.value)} /> setEmail(e.target.value)} /> setAmount(e.target.value)} />