···11+export { CTASection } from "./cta-section";
22+
+113
app/components/faq/faq-section.tsx
···11+"use client";
22+33+import { useState } from "react";
44+import { Heading } from "@/components/heading";
55+import { Paragraph } from "@/components/paragraph";
66+import { MinusIcon, PlusIcon } from "lucide-react";
77+88+type FaqItem = {
99+ id: string;
1010+ question: string;
1111+ answer: string;
1212+};
1313+1414+const FAQ_ITEMS: FaqItem[] = [
1515+ {
1616+ id: "web3-vs-traditional",
1717+ question: "Why is your Web3 hosting better than traditional hosting?",
1818+ answer:
1919+ "Unlike traditional hosting, eny.space offers decentralized infrastructure designed for uptime, security, and scalability. Your projects are backed by blockchain-based guarantees, reducing single points of failure and giving you the resilience you need to grow.",
2020+ },
2121+ {
2222+ id: "choose-plan",
2323+ question: "How do I know which pricing plan is right for me?",
2424+ answer:
2525+ "Start with the plan that matches your expected storage and traffic. You can upgrade at any time without downtime, and our team can help you right-size based on your current and projected usage.",
2626+ },
2727+ {
2828+ id: "secure-platform",
2929+ question: "What makes your platform secure for hosting my Web3 project?",
3030+ answer:
3131+ "We combine audited smart contract infrastructure with strong network isolation, encryption in transit and at rest, and continuous monitoring. This layered approach helps protect your data and on-chain assets from common attack vectors.",
3232+ },
3333+ {
3434+ id: "switch-plans",
3535+ question: "Can I switch plans later if my needs change?",
3636+ answer:
3737+ "Yes. You can move between plans at any time. Billing is prorated, and your deployments stay online during the switch so you can scale up or down without interruptions.",
3838+ },
3939+ {
4040+ id: "time-to-deploy",
4141+ question: "How soon can I deploy my Web3 project on eny.space?",
4242+ answer:
4343+ "Most teams deploy in minutes. Connect your wallet or Git repository, choose a plan, and follow the guided setup. Our onboarding flow is optimized so you can go from zero to live as quickly as possible.",
4444+ },
4545+];
4646+4747+export function FAQSection() {
4848+ const [openId, setOpenId] = useState<string | null>(FAQ_ITEMS[0]?.id ?? null);
4949+5050+ return (
5151+ <section
5252+ id="faq"
5353+ className="relative w-full bg-neutral-950 px-4 py-20 sm:px-6 sm:py-24"
5454+ >
5555+ <div className="mx-auto max-w-4xl text-center">
5656+ <Heading
5757+ as="h2"
5858+ className="text-2xl font-semibold tracking-tight text-white sm:text-3xl md:text-4xl"
5959+ >
6060+ Frequently Asked Questions
6161+ </Heading>
6262+ <Paragraph className="mt-4 text-sm text-white/70 sm:text-base">
6363+ All the details you need about the product and billing. If you can't
6464+ find what you're looking for, feel free to{" "}
6565+ <span className="font-semibold text-white">
6666+ reach out to our friendly team
6767+ </span>
6868+ .
6969+ </Paragraph>
7070+ </div>
7171+7272+ <div className="mx-auto mt-10 max-w-3xl space-y-3 sm:mt-12">
7373+ {FAQ_ITEMS.map((item) => {
7474+ const isOpen = openId === item.id;
7575+7676+ return (
7777+ <div
7878+ key={item.id}
7979+ className={[
8080+ "overflow-hidden rounded-2xl border border-white/10 bg-neutral-900/40 transition-colors",
8181+ isOpen ? "bg-neutral-900/80" : "hover:bg-neutral-900/60",
8282+ ].join(" ")}
8383+ >
8484+ <button
8585+ type="button"
8686+ onClick={() => setOpenId(isOpen ? null : item.id)}
8787+ className="flex w-full cursor-pointer items-center justify-between gap-4 px-5 py-4 text-left"
8888+ aria-expanded={isOpen}
8989+ >
9090+ <span className="text-sm font-medium text-white sm:text-base">
9191+ {item.question}
9292+ </span>
9393+ <span className="flex size-7 items-center justify-center rounded-full bg-white/8 text-white">
9494+ {isOpen ? (
9595+ <MinusIcon className="size-4" aria-hidden />
9696+ ) : (
9797+ <PlusIcon className="size-4" aria-hidden />
9898+ )}
9999+ </span>
100100+ </button>
101101+102102+ {isOpen && (
103103+ <div className="border-t border-white/10 px-5 pb-5 pt-3 text-sm text-white/75">
104104+ {item.answer}
105105+ </div>
106106+ )}
107107+ </div>
108108+ );
109109+ })}
110110+ </div>
111111+ </section>
112112+ );
113113+}
+2
app/components/faq/index.ts
···11+export { FAQSection } from "./faq-section";
22+
···11-import type { Metadata } from "next";
22-33-import Link from "next/link";
11+import { Hero } from "@/components/hero/hero";
22+import { LogoBar } from "@/components/logo-bar";
33+import { FeaturesSection } from "@/components/features";
44+import { PricingSection } from "@/components/pricing";
55+import { TestimonialsSection } from "@/components/testimonials";
66+import { FAQSection } from "@/components/faq";
77+import { CTASection } from "@/components/cta";
4855-export const metadata: Metadata = {
66- title: "eny.space – your data, your space, use it enywhere",
77-};
88-99-export default function IndexPage(): JSX.Element {
99+export default function Page() {
1010 return (
1111- <main>
1212- <h1>Your own custom PDS in seconds</h1>
1313- <h2>One-click ATProto hosting with eny.space</h2>
1414- <p>
1515- We're building a managed ATProto Personal Data Server (PDS)
1616- platform so you can focus on your product while we handle the
1717- infrastructure, scaling, and compliance.
1818- </p>
1919-2020- <h3>What's coming soon</h3>
2121- <ul>
2222- <li>One-click provisioning of dedicated ATProto PDS instances</li>
2323- <li>Automatic backups and seamless upgrades</li>
2424- <li>Usage-based pricing with clear, predictable costs</li>
2525- </ul>
2626-2727- <h3>Be the first to know</h3>
2828- <p>
2929- We're onboarding early adopters now. If you're building on
3030- ATProto and want reliable managed hosting, we'd love to hear from
3131- you.
3232- </p>
3333-3434- <p>
3535- <Link href="mailto:hello@krekeny.com?subject=I%27d%20like%20early%20access%20to%20eny.space%20PDS">
3636- Request early access
3737- </Link>
3838- </p>
3939- </main>
1111+ <>
1212+ <Hero />
1313+ <LogoBar />
1414+ <FeaturesSection />
1515+ <PricingSection />
1616+ <TestimonialsSection />
1717+ <FAQSection />
1818+ <CTASection />
1919+ </>
4020 );
4121}