The public front door for Flyto2 Cloud, Flyto2 Warroom, docs, blog, and AI-search discovery.
Website | Docs | Blog | Open-source engine
Flyto2.com is the public conversion and citation surface for the Flyto2 ecosystem. It explains the open-source execution engine, cloud automation, security war room, templates, pricing, downloads, trust pages, and long-tail SEO pages in 16 locales.
This repository is intentionally optimized for three audiences:
- Developers who want to understand what Flyto2 does and try the open-source engine quickly.
- Security and automation buyers who need trust, pricing, compliance, product boundaries, and contact paths.
- Search, AI answer engines, and crawlers that need stable metadata,
hreflang, sitemap,
robots.txt,llms.txt, and citation-ready summaries.
npm ci
npm run devOpen http://localhost:3000/en for English, or replace en with any supported
locale. Before pushing public copy, run:
npm run verifyThat command runs documentation drift, route and locale contracts, TypeScript, the production build, built-page SEO scoring, and the SEO management gate.
- Public pages for Flyto2 Cloud, Warroom, open source, pricing, security, enterprise, docs, blog, changelog, contact, and comparison routes.
- Long-tail comparison pages for n8n, Zapier, Make, Playwright, LangGraph, Aikido, and Bitsight alternative searches.
- Multilingual route generation for 16 locales.
- Sitemap, canonical URLs, hreflang clusters,
x-default, and AI-readablellms.txt/llms-full.txt. - GitHub/GitLab-facing Markdown standards for the public Flyto2 repositories: see docs/github-gitlab-md-playbook.md.
- Next.js 16.3.2 App Router packaged for Cloudflare Workers with OpenNext
- TypeScript 7.0.2 is the primary compiler; TypeScript 6.0.3 is retained only
through the explicitly named
typescript-legacy-docsalias for legacy documentation generation compatibility. - next-intl for locale routing — 16 locales (
en, zh, cn, ja, ko, de, es, fr, it, pt, hi, id, pl, th, tr, vi) - Tailwind v4 + Motion + lucide-react
- Firebase Web SDK (client-only) for the Q&A forum
- Cloudflare Worker plus static asset binding (HTTPS, caching, edge redirects)
- Deployed by the Cloudflare dashboard Git integration on pushes to
main. GitHub Actions intentionally does not runwrangler deploy, so public repository secrets are not required for Cloudflare deployment.
Use Node.js 22 and npm. Install dependencies from the lockfile:
npm ciFor local forum development, copy .env.example or .env.local.example to
.env.local and fill in the Firebase public web config. Do not commit real API
keys, service-account JSON, access tokens, or moderation credentials.
Start the local Next.js dev server:
npm run devOpen http://localhost:3000/en for the English landing page, or replace en
with any supported locale. Public pages are static and must render enough
server-generated text for SEO, AEO, and GEO crawlers without relying on
client-only hydration.
npm install
npm run dev # http://localhost:3000
npm run typecheck
npm run build # Next.js production output in .next/
npm run build:cf # Cloudflare Worker output in .open-next/NEXT_PUBLIC_FIREBASE_API_KEY: Firebase web API key for the forum client.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN: Firebase auth domain.NEXT_PUBLIC_FIREBASE_PROJECT_ID: Firebase project ID.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET: Firebase storage bucket.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID: Firebase sender ID.NEXT_PUBLIC_FIREBASE_APP_ID: Firebase app ID.GOOGLE_APPLICATION_CREDENTIALS: local-only service account path for moderation scripts.ANTHROPIC_API_KEY: local-only moderation script key.
The site must build without Firebase values. Forum components should degrade without blocking public SEO/GEO pages.
Run the closed loop before release changes. npm run verify already includes
documentation drift, tests, lint/typechecking, the production Next.js build,
and SEO gates; the Cloudflare package and strict source scan remain explicit
release checks:
npm run verify
npm run build:cf
flyto-index verify . --full-scan --strict --jsonnpm run audit:geo checks required public GEO routes, robots.txt,
llms.txt, llms-full.txt, sitemap registration, and AI crawler policy.
CI runs those three commands exactly once after dependency installation, so it
does not repeat checks already owned by npm run verify.
This repo does not expose backend API routes. Its public contract is the page, metadata, and discovery surface:
- localized routes under
app/[locale] app/sitemap.tspublic/robots.txtpublic/llms.txtpublic/llms-full.txtpublic/.well-known/security.txt
app/
layout.tsx # root: fonts + metadata
sitemap.ts # auto-discovers app/[locale]/ + templates + whitepapers
[locale]/
layout.tsx # locale provider, header/footer, hreflang
page.tsx # home
contact/ # Contact page (Organization JSON-LD)
privacy/, terms/, whitepaper/ # legal + content pages
cloud/ # Cloud product
templates/
page.tsx # hub: marketing grid + community grid
[slug]/page.tsx # template detail (SoftwareApplication + FAQPage JSON-LD)
pricing/, download/, integrations/, recipes/, use-cases/,
changelog/, discussions/
code/ # Warroom product (Beta)
security/, pricing/, integrations/, use-cases/, discussions/
components/
layout/ # Header, Footer, LanguageSwitcher, MobileMenu, MegaMenu
sections/ # Hero, ProductPicker, FAQ, CTASection, etc.
ui/ # Button, Tag, Rule
forum/ # Firebase-backed forum
lib/
locales.ts # locale list + native names + region flags
i18n.ts # next-intl request config
nav.ts # productNavGrouped (3 dropdowns: Product / Resources / Community)
templates.ts # community template content database (17 primary + 4 aliases)
seo.ts # pageAlternates() — canonical + hreflang cluster
firebase.ts, forum.ts # forum data layer
whitepapers.ts # whitepaper slug index
cn.ts # classnames helper
messages/
en, zh, cn, ja, ko, de, es, fr,
it, pt, hi, id, pl, th, tr, vi
public/
CNAME, .well-known/, robots.txt, llms.txt, favicon.ico, flags/, assets/
docs/reference/
README.md # generated source and public-contract index
routes.md # every App Router page module
source-*.md # every tracked declaration and source line
- Sitemap:
app/sitemap.tsemits every indexed public route for every supported locale, including template and whitepaper slugs, with full hreflang alternate clusters andx-default. - Per-page canonical: pages call
pageAlternates(path, locale)fromlib/seo.ts. English uses bare canonical paths, localized routes use their locale-prefixed paths, and every page advertises the same 16-locale alternate cluster. - AI-readable files:
public/llms.txtandpublic/llms-full.txtprovide citation-ready summaries for AI search and answer engines. - Crawler policy:
public/robots.txtallows search and user-triggered AI retrieval while blocking AI training crawlers. - GEO observability:
npm run geo:logs -- <access.log>produces JSON, CSV, and Markdown reports for AI crawler access-log evidence. - Cloudflare Worker
flyto-redirectssits in front of the site and 301s historical.htmlURLs to their current directory-style equivalents. Edit the script directly in Cloudflare; it is not in this repo. - Cloudflare AI crawler allowlist is documented in
docs/cloudflare-ai-crawler-allowlist.md. Robots policy alone is not enough when Cloudflare bot/challenge rules return 403 to realtime browse UAs.
- flyto2.com — what this repo ships
- flyto-blog — articles (blog.flyto2.com)
- flyto-docs — product docs (docs.flyto2.com)
Keep public route copy, metadata, sitemap entries, crawler policy, and
AI-readable files in sync. Add or update a handoff under handoffs/ whenever a
release changes the public GEO/AEO/SEO contract.
This website repository does not currently declare a standalone source or
content license. Do not assume that site copy, screenshots, trademarks, or
third-party assets inherit the Apache-2.0 license used by Flyto2 Core. Check the
license in the owning repository or contact team@flyto2.com before reuse.