88 lines · 3.5 KB
import { createFileRoute, Link } from "@tanstack/react-router";
import { MarketingHero } from "~/components/marketing/MarketingHero";
import { LOCAL_DEV, SELF_HOST_REQUIREMENTS, SELF_HOST_STEPS } from "~/lib/marketing/self-host";
import { SOURCE_URL } from "~/lib/marketing/site";
import { buttonClass } from "~/ui/Button";
import { CodeBlock } from "~/ui/CodeBlock";
import { PageContainer } from "~/ui/PageContainer";
import { Panel } from "~/ui/Panel";
import { ExternalLink } from "~/ui/TextLink";
import { seo } from "~/utils/seo";

export const Route = createFileRoute("/self-host")({
  head: ({ match }) => ({
    meta: seo({
      origin: match.context.publicUrl,
      path: "/self-host",
      title: "Self-host · gitfor",
      description: "Run your own gitfor instance: requirements, setup, deploy and runners.",
    }),
  }),
  component: SelfHostPage,
});

function SelfHostPage() {
  return (
    <>
      <MarketingHero
        title="Self-host gitfor"
        lede="gitfor is open source under 0BSD. Deploy it to your own Cloudflare account, and your repositories, issues, logs and artifacts are stored there."
        actions={
          <>
            <a href={SOURCE_URL} rel="noreferrer" className={buttonClass("primary")}>
              View the source
            </a>
            <Link to="/features" className={buttonClass("secondary")}>
              See the features
            </Link>
          </>
        }
      />