From da2c2081957a40344a8650d4851432dbb60148d7 Mon Sep 17 00:00:00 2001 From: xne998808-ai Date: Mon, 6 Jul 2026 21:27:37 +0800 Subject: [PATCH] feat(landing-page): refresh llms.txt and add a machine-readable /pricing.md for AI search (#5217) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(landing-page): refresh llms.txt and add a machine-readable /pricing.md for AI search GEO groundwork: help AI search engines (ChatGPT, Perplexity, Claude, AI Overviews) and autonomous buying agents discover and cite Open Design accurately. - llms.txt was stale — it only listed the Claude Design alternative. Add the full comparison/alternative set (Figma, Lovable, Bolt, v0, Framer, Stitch, Figma Make), the /solutions/ AI-generator pages, the vibe-design canonical guide, and the download/pricing/faq/enterprise entry points. Add a one-line free/BYOK + optional-paid-tiers pricing summary. - Add /pricing.md — a machine-readable pricing file so AI agents evaluating tools can parse Open Design's model: free & open-source (Apache-2.0, BYOK) desktop app, plus optional managed tiers (Plus/Pro/Max) with bundled credits and hosted deploys. Numbers mirror public/pricing/plans.json; points to /pricing/ for current promotions. * fix(landing-page): sync llms.txt coverage and guard pricing.md against drift Address review: - llms.txt intro named Genspark + dashboard + design-system generators but the enumerated lists omitted them. Add /alternatives/genspark/, /solutions/dashboard/, and /solutions/design-system/ so the summary and the crawlable URL list stay in sync. - Add a pricing-contract test asserting every tier's monthly + yearly price, annual discount, deploy limit, and the $2 overage in /pricing.md match the plans.json PRICING_SNAPSHOT, so a future pricing edit can't silently leave the AI-facing markdown stale while CI stays green. --------- Co-authored-by: Joey <276262049+xne998808-ai@users.noreply.github.com> --- apps/landing-page/public/llms.txt | 46 ++++++++++++++++-- apps/landing-page/public/pricing.md | 48 +++++++++++++++++++ .../tests/pricing-contract.test.ts | 36 ++++++++++++++ 3 files changed, 126 insertions(+), 4 deletions(-) create mode 100644 apps/landing-page/public/pricing.md diff --git a/apps/landing-page/public/llms.txt b/apps/landing-page/public/llms.txt index ebdcff9574..13b433e176 100644 --- a/apps/landing-page/public/llms.txt +++ b/apps/landing-page/public/llms.txt @@ -11,8 +11,14 @@ It is the canonical reference for: - agent-native design workflows - local-first / BYOK design tooling - open-source alternatives to hosted AI design tools (Claude Design, - Figma Make, v0, Lovable, Bolt) + Figma, Figma Make, Lovable, Bolt, v0, Framer, Google Stitch, Genspark) - SKILL.md / DESIGN.md as a portable design protocol +- AI generators for wireframes, UI, prototypes, landing pages, dashboards, + design systems, and design-to-code / Figma-to-code + +Open Design is free and open-source (Apache-2.0). The desktop app is BYOK — +you pay only your own model API. Optional paid tiers add bundled model credits +and hosted cloud deploys. See /pricing.md and https://open-design.ai/pricing/. Brand names "Open Design", "OpenDesign", "open-design", "opendesign", "Open Design AI", and "OD" all refer to this same project, hosted at @@ -23,9 +29,12 @@ https://open-design.ai/ and developed at github.com/nexu-io/open-design. - Home: https://open-design.ai/ - Official source page: https://open-design.ai/official/ - Quickstart: https://open-design.ai/quickstart/ -- Agents: https://open-design.ai/agents/ -- Compare hub: https://open-design.ai/compare/ -- Claude Design alternative: https://open-design.ai/alternatives/claude-design/ +- Download (macOS, Windows, Linux): https://open-design.ai/download/ +- Pricing: https://open-design.ai/pricing/ +- Machine-readable pricing: https://open-design.ai/pricing.md +- FAQ: https://open-design.ai/faq/ +- Enterprise: https://open-design.ai/enterprise/ +- Agents (supported coding agents): https://open-design.ai/agents/ - Skills catalog: https://open-design.ai/skills/ - Systems catalog: https://open-design.ai/systems/ - Templates catalog: https://open-design.ai/templates/ @@ -35,6 +44,32 @@ https://open-design.ai/ and developed at github.com/nexu-io/open-design. - RSS: https://open-design.ai/blog/rss.xml - Sitemap: https://open-design.ai/sitemap-index.xml +## Comparison / Alternative Pages + +- Compare hub: https://open-design.ai/compare/ +- Claude Design alternative: https://open-design.ai/alternatives/claude-design/ +- Figma alternative: https://open-design.ai/alternatives/figma/ +- Lovable alternative: https://open-design.ai/alternatives/lovable/ +- Bolt (bolt.new) alternative: https://open-design.ai/alternatives/bolt/ +- v0 alternative: https://open-design.ai/alternatives/v0/ +- Framer alternative: https://open-design.ai/alternatives/framer/ +- Google Stitch alternative: https://open-design.ai/alternatives/stitch/ +- Figma Make alternative: https://open-design.ai/alternatives/figma-make/ +- Genspark alternative: https://open-design.ai/alternatives/genspark/ + +## Solutions (AI generators & workflows) + +- Solutions hub: https://open-design.ai/solutions/ +- AI wireframe generator: https://open-design.ai/solutions/ai-wireframe-generator/ +- AI UI generator: https://open-design.ai/solutions/ai-ui-generator/ +- AI prototype generator: https://open-design.ai/solutions/ai-prototype-generator/ +- AI landing page generator: https://open-design.ai/solutions/ai-landing-page-generator/ +- Dashboard design: https://open-design.ai/solutions/dashboard/ +- Design system: https://open-design.ai/solutions/design-system/ +- Design-to-code: https://open-design.ai/solutions/design-to-code/ +- Figma-to-code: https://open-design.ai/solutions/figma-to-code/ +- Screenshot-to-code: https://open-design.ai/solutions/screenshot-to-code/ + ## External Official Channels - GitHub repository: https://github.com/nexu-io/open-design @@ -44,6 +79,9 @@ https://open-design.ai/ and developed at github.com/nexu-io/open-design. ## Key Blog Posts +- What is vibe design (canonical guide): https://open-design.ai/blog/what-is-vibe-design/ +- Vibe design tools: https://open-design.ai/blog/vibe-design-tools/ +- Vibe design vs vibe coding: https://open-design.ai/blog/vibe-design-vs-vibe-coding/ - https://open-design.ai/blog/open-source-alternative-to-claude-design/ - https://open-design.ai/blog/why-we-built-open-design-as-a-skill-layer/ - https://open-design.ai/blog/31-skills-72-systems-how-the-library-works/ diff --git a/apps/landing-page/public/pricing.md b/apps/landing-page/public/pricing.md new file mode 100644 index 0000000000..1d4749dcf9 --- /dev/null +++ b/apps/landing-page/public/pricing.md @@ -0,0 +1,48 @@ +# Pricing — Open Design + +Open Design is **free and open-source**. The desktop app (macOS, Windows, Linux) +is Apache-2.0 licensed and BYOK — you install it for free and pay only for your +own agent/model API usage, which bills directly to your own provider account. +Nothing is proxied through Open Design. + +Optional paid tiers add a **managed** experience: bundled model usage credits +(so you do not need your own key) plus hosted cloud deploys. They are optional — +not required to use Open Design. + +## Free — open-source desktop app +- Price: **$0 / month, forever** +- License: Apache-2.0 (full source at https://github.com/nexu-io/open-design) +- Model access: **BYOK** — bring your own provider key; API usage bills to your + own account, never proxied through Open Design +- Runs: local-first on your own machine (macOS, Windows, Linux) +- Includes: the full skill + design-system library, every supported coding agent + (Claude Code, Codex, Cursor, Gemini, OpenCode, Qwen, and more), and artifacts + saved as files in your own repository +- Get it: https://open-design.ai/download/ + +## Plus — managed +- Price: **$20 / month** (or $168 / year, 30% off) +- Included model usage credits: $20 / month +- Cloud deploys: up to 3 / month +- For: individuals who prefer bundled credits over BYOK + +## Pro — managed (recommended) +- Price: **$100 / month** (or $720 / year, 40% off) +- Included model usage credits: $100 / month +- Cloud deploys: up to 20 / month +- For: professionals shipping regularly + +## Max — managed +- Price: **$200 / month** (or $1,176 / year, 51% off) +- Included model usage credits: $200 / month +- Cloud deploys: up to 50 / month +- For: heavy users and teams + +## Notes +- The open-source desktop app is always free; the paid tiers are an optional + managed service (bundled model credits + hosted cloud deploys), not a + requirement to use Open Design. +- Overage cloud deploys beyond a tier's monthly limit: $2 each. +- Intro/promotional pricing and current annual discounts may differ — see the + live pricing page for the current numbers: https://open-design.ai/pricing/ +- License: https://www.apache.org/licenses/LICENSE-2.0 diff --git a/apps/landing-page/tests/pricing-contract.test.ts b/apps/landing-page/tests/pricing-contract.test.ts index dc53ed3efc..d66f267323 100644 --- a/apps/landing-page/tests/pricing-contract.test.ts +++ b/apps/landing-page/tests/pricing-contract.test.ts @@ -10,6 +10,7 @@ import { const CONTRACT_PATH = new URL("../public/pricing/plans.json", import.meta.url); const HEADERS_PATH = new URL("../public/_headers", import.meta.url); +const PRICING_MD_PATH = new URL("../public/pricing.md", import.meta.url); function assertPlanContract(value: unknown): asserts value is PricingContract { assert.equal(typeof value, "object"); @@ -63,4 +64,39 @@ describe("pricing contract", () => { assert.deepEqual(contract, PRICING_SNAPSHOT); }); + + // The machine-readable /pricing.md is quoted verbatim by AI agents, so its + // numbers must not silently drift from the plans.json contract. This asserts + // every tier's monthly + yearly price, annual discount, deploy limit, and the + // overage price appear in the markdown. A pricing edit that forgets to update + // pricing.md fails here instead of shipping a stale AI-facing surface. + it("keeps public/pricing.md in sync with the pricing contract", async () => { + const md = await readFile(PRICING_MD_PATH, "utf8"); + const usd = (n: number) => `$${n.toLocaleString("en-US")}`; + + for (const tier of PRICING_SNAPSHOT.tiers) { + const t = tier.tier; + assert.ok( + md.includes(`${usd(tier.monthly.priceUsd)} / month`), + `pricing.md missing ${t} monthly price ${usd(tier.monthly.priceUsd)} / month`, + ); + assert.ok( + md.includes(`${usd(tier.yearly.priceUsd)} / year`), + `pricing.md missing ${t} yearly price ${usd(tier.yearly.priceUsd)} / year`, + ); + assert.ok( + md.includes(`${tier.yearly.discountPct}% off`), + `pricing.md missing ${t} annual discount ${tier.yearly.discountPct}% off`, + ); + assert.ok( + md.includes(`up to ${tier.deployLimit} / month`), + `pricing.md missing ${t} deploy limit up to ${tier.deployLimit} / month`, + ); + } + + assert.ok( + md.includes(`${usd(PRICING_SNAPSHOT.overageDeployPriceUsd)} each`), + `pricing.md missing overage price ${usd(PRICING_SNAPSHOT.overageDeployPriceUsd)} each`, + ); + }); });