// Generated by scripts/generate-manifest.mjs. Do not edit by hand.
import type { ManifestCatalog } from '../../manifest-types.js'
export const manifestCatalog: ManifestCatalog = {
"frameworks": [
{
"id": "react",
"name": "React",
"description": "Templates for React",
"version": "0.1.0",
"supportedModes": {
"file-router": {
"displayName": "File Router",
"description": "TanStack Start with file-based routing",
"forceTypescript": true
}
},
"basePackageJSON": {
"name": "",
"private": true,
"type": "module",
"imports": {
"#/*": "./src/*"
},
"scripts": {
"dev": "vite dev --port 3000",
"generate-routes": "tsr generate",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"@tanstack/react-router": "latest",
"@tanstack/react-start": "latest",
"react": "^19.2.0",
"react-dom": "^19.2.0"
},
"devDependencies": {
"@vitejs/plugin-react": "^6.0.1",
"vite": "^8.0.0"
},
"pnpm": {
"onlyBuiltDependencies": [
"esbuild",
"lightningcss"
]
}
},
"optionalPackages": {
"typescript": {
"devDependencies": {
"@types/react": "^19.2.0",
"@types/node": "^22.10.2",
"@types/react-dom": "^19.2.0",
"typescript": "^6.0.2"
}
},
"tailwindcss": {
"dependencies": {
"@tailwindcss/vite": "^4.1.18",
"tailwindcss": "^4.1.18"
}
},
"devtools": {
"dependencies": {
"@tanstack/react-devtools": "latest",
"@tanstack/react-router-devtools": "latest"
},
"devDependencies": {
"@tanstack/devtools-vite": "latest"
}
},
"examples": {
"devDependencies": {
"@tailwindcss/typography": "^0.5.16"
}
},
"file-router": {
"devDependencies": {
"@tanstack/router-cli": "^1.132.0"
}
}
},
"addOns": [
{
"name": "AI",
"description": "Streaming chat UI with model-agnostic backend (OpenAI, Anthropic, etc).",
"phase": "add-on",
"modes": [
"file-router"
],
"type": "add-on",
"category": "tanstack",
"color": "#EC4899",
"priority": 60,
"link": "",
"routes": [
{
"icon": "MessagesSquare",
"url": "/demo/ai-chat",
"name": "Chat",
"path": "src/routes/demo/ai-chat.tsx",
"jsName": "AIChatDemo"
},
{
"icon": "ImageIcon",
"url": "/demo/ai-image",
"name": "Generate Image",
"path": "src/routes/demo/ai-image.tsx",
"jsName": "AIImageDemo"
},
{
"icon": "ChefHat",
"url": "/demo/ai-structured",
"name": "Structured Output",
"path": "src/routes/demo/ai-structured.tsx",
"jsName": "AISturcturedDemo"
}
],
"integrations": [
{
"type": "header-user",
"path": "src/components/demo-AIAssistant.tsx",
"jsName": "TanChatAIAssistant"
}
],
"dependsOn": [
"store"
],
"variables": [],
"id": "ai",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@tanstack/ai": "latest",
"@tanstack/ai-anthropic": "latest",
"@tanstack/ai-client": "latest",
"@tanstack/ai-gemini": "latest",
"@tanstack/ai-ollama": "latest",
"@tanstack/ai-openai": "latest",
"@tanstack/ai-react": "latest",
"highlight.js": "^11.11.1",
"lucide-react": "^0.577.0",
"streamdown": "^2.3.0",
"zod": "^4.3.6"
}
},
"smallLogo": ""
},
{
"name": "Apollo Client",
"description": "Integrate Apollo Client with streaming SSR support for GraphQL data fetching.",
"phase": "add-on",
"modes": [
"file-router"
],
"type": "add-on",
"category": "api",
"color": "#311C87",
"priority": 15,
"link": "https://github.com/apollographql/apollo-client-integrations/tree/main/packages/tanstack-start",
"routes": [
{
"icon": "Network",
"url": "/demo/apollo-client",
"name": "Apollo Client",
"path": "src/routes/demo.apollo-client.tsx",
"jsName": "ApolloClientDemo"
}
],
"id": "apollo-client",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@apollo/client": "^4.1.6",
"@apollo/client-integration-tanstack-start": "^0.14.4-rc.0",
"graphql": "^16.10.0",
"rxjs": "^7.8.2"
}
},
"smallLogo": "\n"
},
{
"name": "Better Auth",
"description": "Self-hosted user accounts and sessions (open source, full control).",
"phase": "add-on",
"type": "add-on",
"category": "auth",
"exclusive": [
"auth"
],
"color": "#000000",
"priority": 26,
"link": "https://www.better-auth.com",
"modes": [
"file-router"
],
"routes": [
{
"url": "/demo/better-auth",
"name": "Better Auth",
"path": "src/routes/demo/better-auth.tsx",
"jsName": "BetterAuthDemo"
}
],
"integrations": [
{
"type": "header-user",
"jsName": "BetterAuthHeader",
"path": "src/integrations/better-auth/header-user.tsx"
}
],
"id": "better-auth",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"better-auth": "^1.5.3"
}
},
"smallLogo": "\n\n"
},
{
"name": "Clerk",
"description": "Hosted user accounts with prebuilt sign-in UI and social providers (managed).",
"phase": "add-on",
"modes": [
"file-router"
],
"type": "add-on",
"category": "auth",
"exclusive": [
"auth"
],
"color": "#6C47FF",
"priority": 150,
"partner": {
"id": "clerk",
"tier": "silver"
},
"link": "https://clerk.com",
"routes": [
{
"url": "/demo/clerk",
"name": "Clerk",
"path": "src/routes/demo.clerk.tsx",
"jsName": "ClerkDemo"
}
],
"integrations": [
{
"type": "header-user",
"jsName": "ClerkHeader",
"path": "src/integrations/clerk/header-user.tsx"
},
{
"type": "provider",
"jsName": "ClerkProvider",
"path": "src/integrations/clerk/provider.tsx"
}
],
"envVars": [
{
"name": "VITE_CLERK_PUBLISHABLE_KEY",
"description": "Clerk publishable key",
"required": true,
"secret": false,
"file": ".env.local"
},
{
"name": "CLERK_SECRET_KEY",
"description": "Clerk secret key",
"required": true,
"secret": true,
"file": ".env.local"
}
],
"id": "clerk",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@clerk/tanstack-react-start": "^1.4.21"
}
},
"smallLogo": "\n"
},
{
"name": "Compiler",
"phase": "setup",
"description": "Auto-memoize components and hooks (fewer re-renders, no manual useMemo/useCallback).",
"link": "https://react.dev/learn/react-compiler",
"modes": [
"code-router",
"file-router"
],
"type": "add-on",
"category": "tooling",
"color": "#61DAFB",
"priority": 50,
"routes": [],
"id": "compiler",
"version": "0.0.0",
"packageAdditions": {
"devDependencies": {
"@rolldown/plugin-babel": "^0.2.3",
"babel-plugin-react-compiler": "^1.0.0"
}
},
"smallLogo": ""
},
{
"name": "Convex",
"description": "Reactive document database with real-time queries and serverless functions.",
"link": "https://convex.dev",
"phase": "add-on",
"type": "add-on",
"category": "database",
"exclusive": [
"database",
"orm"
],
"color": "#EE342F",
"priority": 140,
"modes": [
"file-router"
],
"routes": [
{
"url": "/demo/convex",
"name": "Convex",
"path": "src/routes/demo.convex.tsx",
"jsName": "ConvexDemo"
}
],
"integrations": [
{
"type": "provider",
"path": "src/integrations/convex/provider.tsx",
"jsName": "ConvexProvider"
}
],
"envVars": [
{
"name": "CONVEX_DEPLOYMENT",
"description": "Convex deployment name",
"required": false,
"secret": false,
"file": ".env.local"
},
{
"name": "VITE_CONVEX_URL",
"description": "Convex deployment URL",
"required": true,
"secret": false,
"file": ".env.local"
}
],
"id": "convex",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@convex-dev/react-query": "0.1.0",
"convex": "^1.32.0",
"lucide-react": "^0.577.0"
}
},
"smallLogo": "\n"
},
{
"name": "DB",
"description": "TanStack DB",
"phase": "add-on",
"type": "add-on",
"category": "tanstack",
"color": "#F97316",
"priority": 48,
"modes": [
"file-router"
],
"link": "https://tanstack.com/db/latest",
"dependsOn": [
"tanstack-query"
],
"routes": [
{
"icon": "Database",
"url": "/demo/db-chat",
"name": "DB Chat",
"path": "src/routes/demo.db-chat.tsx",
"jsName": "DBChatDemo"
}
],
"id": "db",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@tanstack/query-db-collection": "latest",
"@tanstack/react-db": "latest",
"zod": "^4.3.6"
}
},
"smallLogo": ""
},
{
"name": "Drizzle",
"description": "Type-safe SQL query builder for Postgres, SQLite, or MySQL.",
"phase": "add-on",
"type": "add-on",
"category": "orm",
"exclusive": [
"orm"
],
"color": "#C026D3",
"priority": 46,
"link": "https://orm.drizzle.team/",
"modes": [
"file-router"
],
"options": {
"database": {
"type": "select",
"label": "Database Provider",
"description": "Choose your database provider",
"default": "postgresql",
"options": [
{
"value": "postgresql",
"label": "PostgreSQL"
},
{
"value": "sqlite",
"label": "SQLite"
},
{
"value": "mysql",
"label": "MySQL"
}
]
}
},
"routes": [
{
"icon": "Database",
"url": "/demo/drizzle",
"name": "Drizzle",
"path": "src/routes/demo/drizzle.tsx",
"jsName": "DemoDrizzle"
}
],
"id": "drizzle",
"version": "0.0.0",
"packageAdditions": {},
"smallLogo": ""
},
{
"name": "Form",
"description": "TanStack Form",
"phase": "add-on",
"type": "add-on",
"category": "tanstack",
"color": "#EAB308",
"priority": 44,
"modes": [
"file-router",
"code-router"
],
"link": "https://tanstack.com/form/latest",
"routes": [
{
"icon": "ClipboardType",
"url": "/demo/form/simple",
"name": "Simple Form",
"path": "src/routes/demo.form.simple.tsx",
"jsName": "FormSimpleDemo"
},
{
"icon": "ClipboardType",
"url": "/demo/form/address",
"name": "Address Form",
"path": "src/routes/demo.form.address.tsx",
"jsName": "FormAddressDemo"
}
],
"shadcnComponents": [
"button",
"select",
"input",
"textarea",
"slider",
"switch",
"label"
],
"id": "form",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@tanstack/react-form": "latest",
"zod": "^4.3.6"
}
},
"smallLogo": ""
},
{
"name": "MCP",
"phase": "setup",
"description": "Expose your app as an MCP server so AI clients (Claude, Cursor) can call into it.",
"link": "https://mcp.dev",
"modes": [
"file-router"
],
"type": "add-on",
"category": "api",
"color": "#10B981",
"priority": 42,
"warning": "MCP is still in development and may change significantly or not be compatible with other add-ons.\nThe MCP implementation does not support authentication.",
"routes": [
{
"icon": "Webhook",
"url": "/demo/mcp-todos",
"name": "MCP",
"path": "src/routes/demo.mcp-todos.tsx",
"jsName": "MCPTodosDemo"
}
],
"id": "mcp",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@modelcontextprotocol/sdk": "^1.27.1",
"zod": "^4.3.6"
}
},
"smallLogo": ""
},
{
"name": "Neon",
"description": "Serverless Postgres (auto-scales to zero, branchable per environment).",
"link": "https://neon.com",
"phase": "add-on",
"type": "add-on",
"category": "database",
"exclusive": [
"database"
],
"color": "#00E599",
"modes": [
"file-router"
],
"routes": [
{
"icon": "Database",
"url": "/demo/neon",
"name": "Neon",
"path": "src/routes/demo.neon.tsx",
"jsName": "NeonDemo"
}
],
"integrations": [
{
"type": "vite-plugin",
"jsName": "neon",
"path": "neon-vite-plugin.ts"
}
],
"id": "neon",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@neondatabase/serverless": "^1.0.2",
"vite-plugin-neon-new": "^0.8.0"
}
},
"smallLogo": ""
},
{
"name": "oRPC",
"description": "Integrate oRPC into your application.",
"phase": "add-on",
"modes": [
"file-router"
],
"link": "https://orpc.unnoq.com/",
"dependsOn": [
"tanstack-query"
],
"type": "add-on",
"category": "api",
"color": "#FF6B6B",
"priority": 34,
"routes": [
{
"icon": "Network",
"url": "/demo/orpc-todo",
"name": "oRPC Todo",
"path": "src/routes/demo.orpc-todo.tsx",
"jsName": "ORPCTodos"
}
],
"id": "oRPC",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@orpc/client": "^1.13.6",
"@orpc/json-schema": "^1.13.6",
"@orpc/openapi": "^1.13.6",
"@orpc/server": "^1.13.6",
"@orpc/tanstack-query": "^1.13.6",
"@orpc/zod": "^1.13.6",
"zod": "^4.3.6"
}
},
"smallLogo": ""
},
{
"name": "Paraglide (i18n)",
"description": "Type-safe i18n with localized routing and message bundles.",
"phase": "add-on",
"modes": [
"file-router"
],
"type": "add-on",
"category": "i18n",
"color": "#14B8A6",
"priority": 30,
"link": "https://github.com/opral/paraglide-js",
"routes": [
{
"icon": "Languages",
"url": "/demo/i18n",
"name": "I18n example",
"path": "src/routes/demo.i18n.tsx",
"jsName": "I18nDemo"
}
],
"integrations": [
{
"type": "header-user",
"path": "src/components/LocaleSwitcher.tsx",
"jsName": "ParaglideLocaleSwitcher"
}
],
"id": "paraglide",
"version": "0.0.0",
"packageAdditions": {
"devDependencies": {
"@inlang/paraglide-js": "^2.13.1"
}
},
"smallLogo": "\n"
},
{
"name": "PostHog",
"description": "Product analytics, session replay, and feature flags",
"phase": "add-on",
"modes": [
"file-router"
],
"type": "add-on",
"category": "analytics",
"color": "#1D4AFF",
"priority": 20,
"link": "https://posthog.com",
"routes": [
{
"icon": "BarChart",
"url": "/demo/posthog",
"name": "PostHog",
"path": "src/routes/demo/posthog.tsx",
"jsName": "PostHogDemo"
}
],
"integrations": [
{
"type": "provider",
"jsName": "PostHogProvider",
"path": "src/integrations/posthog/provider.tsx"
}
],
"id": "posthog",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@posthog/react": "^1.7.0",
"posthog-js": "^1.358.1"
}
}
},
{
"name": "PowerSync",
"description": "Add PowerSync offline sync to your application.",
"phase": "add-on",
"type": "add-on",
"category": "database",
"color": "#2563EB",
"priority": 55,
"link": "https://docs.powersync.com/client-sdk-references/js-web",
"modes": [
"file-router"
],
"envVars": [
{
"name": "VITE_POWERSYNC_URL",
"description": "PowerSync instance URL",
"required": true,
"file": ".env.local"
},
{
"name": "VITE_POWERSYNC_TOKEN",
"description": "Client-visible development token for local testing; VITE_* env vars are exposed to the browser",
"required": false,
"file": ".env.local"
}
],
"integrations": [
{
"type": "vite-plugin",
"path": "powersync-vite-plugin.ts",
"jsName": "powersyncVite",
"code": "powersyncVite()"
},
{
"type": "provider",
"path": "src/integrations/powersync/provider.tsx",
"jsName": "PowerSyncProvider"
}
],
"routes": [
{
"url": "/demo/powersync",
"name": "PowerSync",
"path": "src/routes/demo/powersync.tsx",
"jsName": "PowerSyncDemo"
}
],
"id": "powersync",
"version": "0.0.0",
"packageAdditions": {},
"smallLogo": "\n"
},
{
"name": "Prisma",
"description": "Type-safe database client with schema migrations (Postgres, MySQL, SQLite, MongoDB).",
"phase": "add-on",
"type": "add-on",
"category": "orm",
"exclusive": [
"orm"
],
"color": "#2D3748",
"priority": 120,
"partner": {
"id": "prisma",
"tier": "bronze"
},
"link": "https://www.prisma.io/",
"modes": [
"file-router"
],
"postInitSpecialSteps": [
"post-init-script"
],
"options": {
"database": {
"type": "select",
"label": "Database Provider",
"description": "Choose your database provider",
"default": "postgres",
"options": [
{
"value": "postgres",
"label": "Prisma PostgreSQL"
},
{
"value": "sqlite",
"label": "SQLite"
},
{
"value": "mysql",
"label": "MySQL"
}
]
}
},
"routes": [
{
"icon": "Database",
"url": "/demo/prisma",
"name": "Prisma",
"path": "src/routes/demo/prisma.tsx",
"jsName": "DemoPrisma"
}
],
"id": "prisma",
"version": "0.0.0",
"packageAdditions": {},
"smallLogo": ""
},
{
"name": "Sentry",
"phase": "setup",
"description": "Add Sentry's TanStack Start SDK for server error monitoring and tracing.",
"link": "https://sentry.com/",
"modes": [
"file-router"
],
"type": "add-on",
"category": "monitoring",
"color": "#362D59",
"priority": 130,
"partner": {
"id": "sentry",
"tier": "bronze"
},
"routes": [
{
"url": "/demo/sentry/testing",
"name": "Sentry",
"path": "src/routes/demo.sentry.testing.tsx",
"jsName": "SentryDemo"
}
],
"id": "sentry",
"version": "0.0.0",
"packageAdditions": {},
"smallLogo": ""
},
{
"name": "Shadcn",
"description": "Copy-paste accessible UI components (Tailwind + Radix primitives).",
"phase": "add-on",
"modes": [
"file-router",
"code-router"
],
"link": "https://ui.shadcn.com/",
"type": "add-on",
"category": "styling",
"tailwind": true,
"color": "#000000",
"priority": 30,
"id": "shadcn",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"lucide-react": "^0.577.0",
"tailwind-merge": "^3.0.2",
"tw-animate-css": "^1.3.6"
},
"devDependencies": {
"@tailwindcss/typography": "^0.5.16"
}
},
"smallLogo": "\n"
},
{
"name": "Shopify",
"description": "Headless Shopify storefront — products, cart, Shopify-hosted checkout, and optional customer accounts. Mounts /shop/* routes alongside your existing app.",
"phase": "add-on",
"modes": [
"file-router"
],
"type": "add-on",
"category": "other",
"tailwind": true,
"color": "#5A31F4",
"priority": 80,
"link": "https://shopify.dev/docs/storefronts/headless",
"dependsOn": [
"tanstack-query"
],
"options": {
"customerAccount": {
"type": "select",
"label": "Customer Accounts",
"description": "Add /shop/account/* routes (Shopify Customer Account API, OAuth setup required).",
"default": "disabled",
"options": [
{
"value": "disabled",
"label": "No (skip account routes)"
},
{
"value": "enabled",
"label": "Yes (include OAuth + account dashboard)"
}
]
}
},
"integrations": [
{
"type": "header-user",
"jsName": "ShopifyHeaderCart",
"path": "src/integrations/shopify/header-cart.tsx"
}
],
"routes": [
{
"icon": "ShoppingBag",
"url": "/shop",
"name": "Shop",
"path": "src/routes/shop.index.tsx",
"jsName": "ShopIndex"
},
{
"url": "/shop/cart",
"name": "Cart",
"path": "src/routes/shop.cart.tsx",
"jsName": "ShopCart"
}
],
"envVars": [
{
"name": "SHOPIFY_STORE_DOMAIN",
"description": "Your store's myshopify.com domain. Defaults to Shopify's public Hydrogen demo store.",
"required": false,
"secret": false,
"file": ".env.local"
},
{
"name": "SHOPIFY_STOREFRONT_API_VERSION",
"description": "Storefront API version (e.g. 2026-01).",
"required": false,
"secret": false,
"file": ".env.local"
},
{
"name": "SHOPIFY_PUBLIC_STOREFRONT_TOKEN",
"description": "Public Storefront API token. Defaults to Shopify's public Hydrogen demo token.",
"required": false,
"secret": false,
"file": ".env.local"
},
{
"name": "SHOPIFY_PRIVATE_STOREFRONT_TOKEN",
"description": "Optional private Storefront API token. Higher rate limits + buyer-IP forwarding when set.",
"required": false,
"secret": true,
"file": ".env.local"
},
{
"name": "SHOPIFY_CUSTOMER_ACCOUNT_CLIENT_ID",
"description": "Customer Account API client ID. Required when customerAccount=enabled.",
"required": false,
"secret": true,
"file": ".env.local"
},
{
"name": "SHOPIFY_CUSTOMER_ACCOUNT_SHOP_ID",
"description": "Numeric Shop ID (Shopify admin > Settings > Customer accounts). Required when customerAccount=enabled.",
"required": false,
"secret": false,
"file": ".env.local"
},
{
"name": "SHOPIFY_CUSTOMER_ACCOUNT_REDIRECT_URI",
"description": "OAuth callback URL. Defaults to http://localhost:3000/shop/account/callback.",
"required": false,
"secret": false,
"file": ".env.local"
},
{
"name": "SHOPIFY_SESSION_SECRET",
"description": "32+ char secret used to sign customer session cookies. Required when customerAccount=enabled.",
"required": false,
"secret": true,
"file": ".env.local"
}
],
"id": "shopify",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@shopify/hydrogen-react": "^2026.1.0",
"valibot": "^1.0.0"
}
},
"smallLogo": "\n"
},
{
"name": "Store",
"description": "Add TanStack Store to your application.",
"phase": "add-on",
"link": "https://tanstack.com/store/latest",
"type": "add-on",
"category": "tanstack",
"color": "#B89A56",
"priority": 22,
"modes": [
"file-router",
"code-router"
],
"routes": [
{
"icon": "Store",
"url": "/demo/store",
"name": "Store",
"path": "src/routes/demo.store.tsx",
"jsName": "StoreDemo"
}
],
"integrations": [
{
"type": "devtools",
"path": "src/lib/demo-store-devtools.tsx",
"jsName": "StoreDevtools"
}
],
"id": "store",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@tanstack/react-store": "latest",
"@tanstack/store": "latest"
},
"devDependencies": {
"@tanstack/devtools-event-client": "latest"
}
},
"smallLogo": ""
},
{
"name": "Storybook",
"description": "Integrate Storybook into your application.",
"phase": "add-on",
"modes": [
"file-router"
],
"link": "https://storybook.js.org/",
"type": "add-on",
"category": "tooling",
"color": "#FF4785",
"priority": 1,
"command": {
"command": "npx",
"args": [
"storybook",
"init",
"-y",
"--no-dev"
]
},
"id": "storybook",
"version": "0.0.0",
"packageAdditions": {},
"smallLogo": ""
},
{
"name": "Strapi",
"description": "Headless CMS with admin UI (self-hosted, content models in TypeScript).",
"link": "https://strapi.io/",
"phase": "add-on",
"type": "add-on",
"category": "cms",
"color": "#4945FF",
"priority": 110,
"modes": [
"file-router"
],
"routes": [
{
"url": "/demo/strapi",
"name": "Strapi Articles",
"path": "src/routes/demo/strapi.tsx",
"jsName": "StrapiArticles"
}
],
"id": "strapi",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@strapi/client": "^1.6.1",
"lucide-react": "^0.577.0",
"react-markdown": "^9.0.1",
"remark-gfm": "^4.0.0",
"use-debounce": "^10.1.0"
}
},
"smallLogo": "\n"
},
{
"name": "T3Env",
"description": "Validate process.env at build time (catch missing/wrong env vars before runtime).",
"phase": "add-on",
"type": "add-on",
"category": "tooling",
"color": "#6366F1",
"priority": 29,
"link": "https://github.com/t3-oss/t3-env",
"modes": [
"file-router",
"code-router"
],
"id": "t3env",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@t3-oss/env-core": "^0.13.10",
"zod": "^4.3.6"
}
},
"smallLogo": "\n"
},
{
"name": "tRPC",
"description": "Integrate tRPC into your application.",
"phase": "add-on",
"modes": [
"file-router"
],
"link": "https://trpc.io/",
"dependsOn": [
"tanstack-query"
],
"type": "add-on",
"category": "api",
"color": "#2596BE",
"priority": 27,
"routes": [
{
"icon": "Network",
"url": "/demo/trpc-todo",
"name": "tRPC Todo",
"path": "src/routes/demo.trpc-todo.tsx",
"jsName": "TRPCTodos"
}
],
"id": "tRPC",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@trpc/client": "^11.11.0",
"@trpc/server": "^11.11.0",
"@trpc/tanstack-react-query": "^11.11.0",
"superjson": "^2.2.2",
"zod": "^4.3.6"
}
},
"smallLogo": ""
},
{
"name": "Table",
"description": "Integrate TanStack Table into your application.",
"phase": "add-on",
"modes": [
"file-router",
"code-router"
],
"link": "https://tanstack.com/table/latest",
"type": "add-on",
"category": "tanstack",
"color": "#06B6D4",
"priority": 28,
"routes": [
{
"icon": "Table",
"url": "/demo/table",
"name": "TanStack Table",
"path": "src/routes/demo.table.tsx",
"jsName": "TableDemo"
}
],
"id": "table",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@faker-js/faker": "^10.3.0",
"@tanstack/match-sorter-utils": "latest",
"@tanstack/react-table": "latest"
}
},
"smallLogo": ""
},
{
"name": "Query",
"description": "Integrate TanStack Query into your application.",
"phase": "add-on",
"modes": [
"file-router",
"code-router"
],
"type": "add-on",
"category": "tanstack",
"color": "#EF4444",
"priority": 10,
"link": "https://tanstack.com/query/latest",
"routes": [
{
"icon": "Network",
"url": "/demo/tanstack-query",
"name": "TanStack Query",
"path": "src/routes/demo/tanstack-query.tsx",
"jsName": "TanStackQueryDemo"
}
],
"integrations": [
{
"type": "devtools",
"path": "src/integrations/tanstack-query/devtools.tsx",
"jsName": "TanStackQueryDevtools"
}
],
"id": "tanstack-query",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@tanstack/react-query": "latest",
"@tanstack/react-query-devtools": "latest",
"@tanstack/react-router-ssr-query": "latest"
}
},
"smallLogo": ""
},
{
"name": "WorkOS",
"description": "Enterprise SSO, SAML, and directory sync (good for B2B apps).",
"phase": "add-on",
"modes": [
"file-router"
],
"type": "add-on",
"category": "auth",
"exclusive": [
"auth"
],
"color": "#6363F1",
"priority": 160,
"partner": {
"id": "workos",
"tier": "silver"
},
"link": "https://workos.com",
"routes": [
{
"icon": "CircleUserRound",
"url": "/demo/workos",
"name": "WorkOS",
"path": "src/routes/demo.workos.tsx",
"jsName": "WorkOSDemo"
}
],
"integrations": [
{
"type": "header-user",
"jsName": "WorkOSHeader",
"path": "src/components/workos-user.tsx"
},
{
"type": "provider",
"jsName": "WorkOSProvider",
"path": "src/integrations/workos/provider.tsx"
}
],
"envVars": [
{
"name": "WORKOS_CLIENT_ID",
"description": "WorkOS client ID",
"required": true,
"secret": false,
"file": ".env.local"
},
{
"name": "WORKOS_API_KEY",
"description": "WorkOS API key",
"required": true,
"secret": true,
"file": ".env.local"
},
{
"name": "WORKOS_REDIRECT_URI",
"description": "AuthKit callback URL",
"required": true,
"default": "http://localhost:3000/api/auth/callback",
"secret": false,
"file": ".env.local"
},
{
"name": "WORKOS_COOKIE_PASSWORD",
"description": "Session cookie encryption password (at least 32 characters)",
"required": true,
"secret": true,
"file": ".env.local"
},
{
"name": "WORKOS_API_HOSTNAME",
"description": "WorkOS API hostname",
"required": false,
"default": "api.workos.com",
"secret": false,
"file": ".env.local"
}
],
"id": "workos",
"version": "0.0.0",
"packageAdditions": {
"engines": {
"node": ">=22.11.0"
},
"dependencies": {
"@workos-inc/node": "^10.8.0",
"@workos/authkit-tanstack-react-start": "^0.11.0"
}
},
"smallLogo": "\n"
},
{
"name": "Biome",
"description": "Biome toolchain support.",
"phase": "setup",
"type": "toolchain",
"category": "tooling",
"exclusive": [
"linter"
],
"color": "#60A5FA",
"priority": 2,
"modes": [
"code-router",
"file-router"
],
"link": "https://biomejs.dev",
"id": "biome",
"version": "0.0.0",
"packageAdditions": {
"scripts": {
"format": "biome format",
"lint": "biome lint",
"check": "biome check"
},
"devDependencies": {
"@biomejs/biome": "2.4.5"
}
},
"smallLogo": "\n\n"
},
{
"name": "ESLint",
"description": "ESLint + Prettier toolchain support.",
"phase": "setup",
"type": "toolchain",
"category": "tooling",
"exclusive": [
"linter"
],
"color": "#4B32C3",
"priority": 0,
"modes": [
"code-router",
"file-router"
],
"link": "https://eslint.org",
"id": "eslint",
"version": "0.0.0",
"packageAdditions": {
"scripts": {
"lint": "eslint",
"format": "prettier --write . && eslint --fix",
"check": "prettier --check ."
},
"devDependencies": {
"@tanstack/eslint-config": "latest",
"eslint": "^9.20.0",
"prettier": "^3.8.1"
}
},
"smallLogo": "\n\n"
},
{
"name": "Events",
"description": "A pastry conference website with speakers, sessions, schedule, and AI assistant built with content-collections and TanStack Start for Netlify.",
"phase": "example",
"modes": [
"file-router"
],
"type": "example",
"category": "other",
"color": "#F59E0B",
"priority": 10,
"link": "",
"routes": [
{
"url": "/",
"path": "src/routes/index.tsx",
"jsName": "EventsHome"
},
{
"url": "/schedule",
"path": "src/routes/schedule.index.tsx",
"name": "Schedule",
"jsName": "SchedulePage"
},
{
"url": "/speakers",
"path": "src/routes/speakers.index.tsx",
"name": "Speakers",
"jsName": "SpeakersPage"
},
{
"url": "/speakers/$slug",
"path": "src/routes/speakers.$slug.tsx",
"jsName": "SpeakerDetail"
},
{
"url": "/talks",
"path": "src/routes/talks.index.tsx",
"name": "Sessions",
"jsName": "TalksPage"
},
{
"url": "/talks/$slug",
"path": "src/routes/talks.$slug.tsx",
"jsName": "TalkDetail"
},
{
"url": "/api/remy-chat",
"path": "src/routes/api.remy-chat.ts",
"jsName": "RemyChatAPI"
}
],
"integrations": [
{
"type": "header-user",
"path": "src/components/RemyButton",
"jsName": "RemyButton"
},
{
"type": "vite-plugin",
"import": "import contentCollections from '@content-collections/vite'",
"code": "contentCollections()"
}
],
"dependsOn": [],
"variables": [],
"id": "events",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@tanstack/ai": "latest",
"@tanstack/ai-anthropic": "latest",
"@tanstack/ai-client": "latest",
"@tanstack/ai-gemini": "latest",
"@tanstack/ai-ollama": "latest",
"@tanstack/ai-openai": "latest",
"@tanstack/ai-react": "latest",
"@tanstack/store": "latest",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"lucide-react": "^0.577.0",
"marked": "^15.0.8",
"streamdown": "^2.3.0",
"tailwind-merge": "^3.0.2",
"tailwindcss-animate": "^1.0.7",
"zod": "^4.3.6"
},
"devDependencies": {
"@content-collections/core": "^0.13.1",
"@content-collections/vite": "^0.3.0"
}
}
},
{
"name": "Resume",
"description": "Professional resume template with content-collections and shadcn UI components for Netlify.",
"phase": "example",
"modes": [
"file-router"
],
"type": "example",
"category": "other",
"color": "#8B5CF6",
"priority": 10,
"link": "",
"routes": [
{
"url": "/",
"path": "src/routes/index.tsx",
"jsName": "ResumeHome"
}
],
"integrations": [
{
"type": "header-user",
"path": "src/components/ResumeAssistantButton",
"jsName": "ResumeAssistantButton"
},
{
"type": "vite-plugin",
"import": "import contentCollections from '@content-collections/vite'",
"code": "contentCollections()"
}
],
"dependsOn": [],
"variables": [],
"id": "resume",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@radix-ui/react-checkbox": "^1.2.2",
"@radix-ui/react-hover-card": "^1.1.10",
"@radix-ui/react-separator": "^1.1.4",
"@radix-ui/react-slot": "^1.2.0",
"@tanstack/ai": "latest",
"@tanstack/ai-anthropic": "latest",
"@tanstack/ai-client": "latest",
"@tanstack/ai-gemini": "latest",
"@tanstack/ai-ollama": "latest",
"@tanstack/ai-openai": "latest",
"@tanstack/ai-react": "latest",
"@tanstack/store": "latest",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"lucide-react": "^0.577.0",
"marked": "^15.0.8",
"streamdown": "^2.3.0",
"tailwind-merge": "^3.0.2",
"tailwindcss-animate": "^1.0.7",
"zod": "^4.3.6"
},
"devDependencies": {
"@content-collections/core": "^0.13.1",
"@content-collections/vite": "^0.3.0"
}
}
},
{
"name": "Shopify Storefront",
"description": "A polished Shopify storefront starter — TanStack Start + Shopify Storefront API + optional customer accounts. Hosted checkout, deploy anywhere.",
"phase": "example",
"modes": [
"file-router"
],
"type": "example",
"category": "other",
"color": "#5A31F4",
"priority": 5,
"link": "https://shopify.dev/docs/storefronts/headless",
"dependsOn": [
"shopify"
],
"default": true,
"routes": [
{
"url": "/",
"path": "src/routes/index.tsx",
"jsName": "ShopHome"
}
],
"integrations": [],
"variables": [],
"id": "shopify-storefront",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {}
}
},
{
"name": "Cloudflare",
"description": "Deploy to Cloudflare Workers (edge runtime, KV/D1/R2 bindings).",
"link": "https://developers.cloudflare.com/workers/vite-plugin/",
"phase": "add-on",
"modes": [
"file-router",
"code-router"
],
"type": "deployment",
"category": "deploy",
"exclusive": [
"deploy"
],
"color": "#F38020",
"priority": 200,
"partner": {
"id": "cloudflare",
"tier": "gold"
},
"integrations": [
{
"type": "vite-plugin",
"import": "import { cloudflare } from '@cloudflare/vite-plugin'",
"code": "cloudflare({ viteEnvironment: { name: 'ssr' } })"
}
],
"id": "cloudflare",
"version": "0.0.0",
"packageAdditions": {},
"smallLogo": ""
},
{
"name": "Netlify",
"description": "Deploy to Netlify (Functions and Edge Functions, GitHub-driven).",
"link": "https://docs.netlify.com",
"phase": "add-on",
"modes": [
"file-router",
"code-router"
],
"type": "deployment",
"category": "deploy",
"exclusive": [
"deploy"
],
"color": "#00C7B7",
"priority": 180,
"partner": {
"id": "netlify",
"tier": "gold"
},
"integrations": [
{
"type": "vite-plugin",
"import": "import netlify from '@netlify/vite-plugin-tanstack-start'",
"code": "netlify()"
}
],
"id": "netlify",
"version": "0.0.0",
"packageAdditions": {
"devDependencies": {
"@netlify/vite-plugin-tanstack-start": "^1.2.15"
},
"pnpm": {
"onlyBuiltDependencies": [
"sharp"
]
}
},
"smallLogo": ""
},
{
"name": "Nitro (agnostic)",
"description": "Generic Nitro adapter (deploy to any Node-compatible host).",
"link": "https://v3.nitro.build/",
"phase": "add-on",
"modes": [
"file-router",
"code-router"
],
"type": "deployment",
"category": "deploy",
"exclusive": [
"deploy"
],
"color": "#ECDC5A",
"priority": 0,
"integrations": [
{
"type": "vite-plugin",
"import": "import { nitro } from 'nitro/vite'",
"code": "nitro({ rollupConfig: { external: [/^@sentry\\//] } })"
}
],
"default": true,
"id": "nitro",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"nitro": "3.0.260610-beta"
}
},
"smallLogo": "\n\n"
},
{
"name": "Railway",
"description": "Deploy to Railway (full-stack PaaS for Node + databases).",
"link": "https://railway.com/",
"phase": "add-on",
"modes": [
"file-router",
"code-router"
],
"type": "deployment",
"category": "deploy",
"exclusive": [
"deploy"
],
"color": "#9B4DCA",
"priority": 160,
"partner": {
"id": "railway",
"tier": "gold"
},
"integrations": [
{
"type": "vite-plugin",
"import": "import { nitro } from 'nitro/vite'",
"code": "nitro({ rollupConfig: { external: [/^@sentry\\//] } })"
}
],
"id": "railway",
"version": "0.0.0",
"packageAdditions": {}
},
{
"name": "Render",
"description": "Deploy to Render (full-stack cloud platform with GitHub integration).",
"link": "https://render.com/",
"phase": "add-on",
"modes": [
"file-router"
],
"type": "deployment",
"supportedPackageManagers": [
"npm",
"yarn",
"pnpm",
"bun"
],
"category": "deploy",
"exclusive": [
"deploy"
],
"color": "#46E3B7",
"priority": 150,
"partner": {
"id": "render",
"tier": "gold"
},
"integrations": [
{
"type": "vite-plugin",
"import": "import { nitro } from 'nitro/vite'",
"code": "nitro({ rollupConfig: { external: [/^@sentry\\//] } })"
}
],
"id": "render",
"version": "0.0.0",
"packageAdditions": {}
},
{
"name": "Vercel",
"description": "Deploy to Vercel (Functions, static assets, and Git previews).",
"link": "https://vercel.com/docs/frameworks/full-stack/tanstack-start",
"phase": "add-on",
"modes": [
"file-router"
],
"type": "deployment",
"supportedPackageManagers": [
"npm",
"yarn",
"pnpm",
"bun"
],
"category": "deploy",
"exclusive": [
"deploy"
],
"color": "#000000",
"priority": 140,
"partner": {
"id": "vercel",
"tier": "gold"
},
"integrations": [
{
"type": "vite-plugin",
"import": "import { nitro } from 'nitro/vite'",
"code": "nitro()"
}
],
"id": "vercel",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"nitro": "3.0.260610-beta"
}
}
}
]
},
{
"id": "solid",
"name": "Solid",
"description": "Solid templates for Tanstack Router Applications",
"version": "0.1.0",
"supportedModes": {
"file-router": {
"displayName": "File Router",
"description": "TanStack Start with file-based routing",
"forceTypescript": true
}
},
"basePackageJSON": {
"name": "app-ts",
"private": true,
"type": "module",
"scripts": {
"dev": "vite dev --port 3000",
"generate-routes": "tsr generate",
"build": "vite build",
"start": "node .output/server/index.mjs",
"preview": "vite preview"
},
"dependencies": {
"@tanstack/solid-router": "latest",
"@tanstack/solid-start": "latest",
"solid-js": "^1.9.12"
},
"devDependencies": {
"vite-plugin-solid": "^2.11.12",
"vite": "^8.0.0"
},
"pnpm": {
"onlyBuiltDependencies": [
"esbuild",
"lightningcss"
]
}
},
"optionalPackages": {
"typescript": {
"devDependencies": {
"typescript": "^6.0.2"
}
},
"tailwindcss": {
"dependencies": {
"@tailwindcss/vite": "^4.1.18",
"tailwindcss": "^4.1.18"
}
},
"devtools": {
"dependencies": {
"@tanstack/solid-router-devtools": "latest"
},
"devDependencies": {
"@tanstack/devtools-vite": "latest"
}
},
"file-router": {
"devDependencies": {
"@tanstack/router-cli": "^1.133.21"
}
}
},
"addOns": [
{
"name": "Better Auth",
"description": "Self-hosted user accounts and sessions (open source, full control).",
"phase": "add-on",
"type": "add-on",
"category": "auth",
"exclusive": [
"auth"
],
"color": "#000000",
"link": "https://www.better-auth.com/",
"modes": [
"file-router"
],
"routes": [
{
"url": "/demo/better-auth",
"name": "Better Auth",
"path": "src/routes/demo.better-auth.tsx",
"jsName": "BetterAuthDemo"
}
],
"integrations": [
{
"type": "header-user",
"jsName": "BetterAuthHeader",
"path": "src/integrations/better-auth/header-user.tsx"
}
],
"id": "better-auth",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"better-auth": "^1.5.3"
}
},
"smallLogo": "\n\n"
},
{
"name": "Convex",
"description": "Reactive document database with real-time queries and serverless functions.",
"link": "https://convex.dev",
"phase": "add-on",
"type": "add-on",
"category": "database",
"exclusive": [
"database",
"orm"
],
"color": "#EE342F",
"modes": [
"file-router"
],
"routes": [
{
"url": "/demo/convex",
"name": "Convex",
"path": "src/routes/demo.convex.tsx",
"jsName": "ConvexDemo"
}
],
"integrations": [
{
"type": "provider",
"path": "src/integrations/convex/provider.tsx",
"jsName": "ConvexProvider"
}
],
"id": "convex",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"convex": "^1.32.0",
"convex-solidjs": "^0.0.3",
"lucide-solid": "^0.577.0"
}
},
"smallLogo": "\n"
},
{
"name": "Form",
"description": "TanStack Form",
"phase": "add-on",
"link": "https://tanstack.com/form/latest",
"modes": [
"file-router",
"code-router"
],
"type": "add-on",
"category": "tanstack",
"color": "#EAB308",
"routes": [
{
"url": "/demo/form",
"name": "Form",
"path": "src/routes/demo.form.tsx",
"jsName": "FormDemo"
}
],
"id": "form",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@tanstack/solid-form": "latest"
}
},
"smallLogo": ""
},
{
"name": "Sentry",
"phase": "setup",
"description": "Add Sentry for error monitoring and crash reporting (requires Start).",
"link": "https://sentry.com/",
"modes": [
"file-router"
],
"type": "add-on",
"category": "monitoring",
"color": "#362D59",
"partner": {
"id": "sentry",
"tier": "bronze"
},
"routes": [
{
"url": "/demo/sentry/bad-event-handler",
"name": "Sentry",
"path": "src/routes/demo.sentry.bad-event-handler.tsx",
"jsName": "SentryBadEventHandlerDemo"
}
],
"id": "sentry",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@sentry/solid": "^10.67.0"
}
},
"smallLogo": ""
},
{
"name": "Solid-UI",
"description": "Copy-paste accessible UI components for Solid (Tailwind + Radix-style primitives).",
"phase": "add-on",
"link": "https://ui.shadcn.com/",
"modes": [
"file-router",
"code-router"
],
"type": "add-on",
"category": "styling",
"tailwind": true,
"color": "#000000",
"id": "solid-ui",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@fontsource/inter": "^5.1.1",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"tailwind-merge": "^3.0.2",
"tailwindcss-animate": "^1.0.7"
}
},
"smallLogo": ""
},
{
"name": "Store",
"description": "Add TanStack Store to your application.",
"phase": "add-on",
"modes": [
"file-router",
"code-router"
],
"type": "add-on",
"category": "tanstack",
"color": "#B89A56",
"link": "https://tanstack.com/store/latest",
"routes": [
{
"url": "/demo/store",
"name": "Store",
"path": "src/routes/demo.store.tsx",
"jsName": "StoreDemo"
}
],
"id": "store",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@tanstack/solid-store": "latest",
"@tanstack/store": "latest"
}
},
"smallLogo": ""
},
{
"name": "Strapi",
"description": "Headless CMS with admin UI (self-hosted, content models in TypeScript).",
"link": "https://strapi.io/",
"phase": "add-on",
"type": "add-on",
"category": "cms",
"color": "#4945FF",
"modes": [
"file-router"
],
"routes": [
{
"url": "/demo/strapi",
"name": "Strapi",
"path": "src/routes/demo.strapi.tsx",
"jsName": "StrapiDemo"
}
],
"id": "strapi",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@strapi/client": "^1.6.1"
}
},
"smallLogo": "\n"
},
{
"name": "T3Env",
"description": "Validate process.env at build time (catch missing/wrong env vars before runtime).",
"phase": "add-on",
"link": "https://github.com/t3-oss/t3-env",
"type": "add-on",
"category": "tooling",
"color": "#6366F1",
"modes": [
"file-router",
"code-router"
],
"id": "t3env",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@t3-oss/env-core": "^0.13.10",
"zod": "^4.3.6"
}
},
"smallLogo": "\n"
},
{
"name": "TanStack Query",
"description": "Integrate TanStack Query into your application.",
"phase": "add-on",
"modes": [
"file-router"
],
"type": "add-on",
"category": "tanstack",
"color": "#EF4444",
"link": "https://tanstack.com/query/latest",
"routes": [
{
"url": "/demo/tanstack-query",
"name": "TanStack Query",
"path": "src/routes/demo.tanstack-query.tsx",
"jsName": "TanStackQueryDemo"
}
],
"integrations": [
{
"type": "provider",
"path": "src/integrations/tanstack-query/provider.tsx",
"jsName": "TanStackQueryProvider"
},
{
"type": "header-user",
"path": "src/integrations/tanstack-query/header-user.tsx",
"jsName": "TanStackQueryHeaderUser"
}
],
"id": "tanstack-query",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"@tanstack/solid-query": "latest",
"@tanstack/solid-query-devtools": "latest"
}
},
"smallLogo": ""
},
{
"name": "Biome",
"description": "Biome toolchain support.",
"phase": "setup",
"type": "toolchain",
"category": "tooling",
"exclusive": [
"linter"
],
"color": "#60A5FA",
"modes": [
"code-router",
"file-router"
],
"link": "https://biomejs.dev",
"id": "biome",
"version": "0.0.0",
"packageAdditions": {
"scripts": {
"format": "biome format",
"lint": "biome lint",
"check": "biome check"
},
"devDependencies": {
"@biomejs/biome": "2.4.5"
}
},
"smallLogo": "\n\n"
},
{
"name": "ESLint",
"description": "ESLint + Prettier toolchain support.",
"phase": "setup",
"type": "toolchain",
"category": "tooling",
"exclusive": [
"linter"
],
"color": "#4B32C3",
"modes": [
"code-router",
"file-router"
],
"link": "https://eslint.org",
"id": "eslint",
"version": "0.0.0",
"packageAdditions": {
"scripts": {
"lint": "eslint",
"format": "prettier --write . && eslint --fix",
"check": "prettier --check ."
},
"devDependencies": {
"@tanstack/eslint-config": "latest",
"eslint": "^9.20.0",
"prettier": "^3.8.1"
}
},
"smallLogo": "\n\n"
},
{
"name": "TanStack Chat",
"description": "A chat example that uses TanStack Start and TanStack Store. Features chat with Anthropic Sonnet, chat history and custom prompts.",
"phase": "example",
"type": "example",
"category": "other",
"color": "#00D1B2",
"modes": [
"file-router"
],
"link": "",
"routes": [
{
"url": "/example/chat",
"name": "Chat"
}
],
"dependsOn": [
"solid-ui",
"store"
],
"id": "tanchat",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"highlight.js": "^11.11.1",
"lucide-solid": "^0.577.0",
"markdown-it": "^14.1.0"
}
}
},
{
"name": "Cloudflare",
"description": "Deploy to Cloudflare Workers (edge runtime, KV/D1/R2 bindings).",
"link": "https://developers.cloudflare.com/workers/vite-plugin/",
"phase": "add-on",
"modes": [
"file-router",
"code-router"
],
"type": "deployment",
"category": "deploy",
"exclusive": [
"deploy"
],
"color": "#F38020",
"priority": 200,
"partner": {
"id": "cloudflare",
"tier": "gold"
},
"integrations": [
{
"type": "vite-plugin",
"import": "import { cloudflare } from '@cloudflare/vite-plugin'",
"code": "cloudflare({ viteEnvironment: { name: 'ssr' } })"
}
],
"id": "cloudflare",
"version": "0.0.0",
"packageAdditions": {},
"smallLogo": ""
},
{
"name": "Netlify",
"description": "Deploy to Netlify (Functions and Edge Functions, GitHub-driven).",
"link": "https://docs.netlify.com",
"phase": "add-on",
"modes": [
"file-router",
"code-router"
],
"type": "deployment",
"category": "deploy",
"exclusive": [
"deploy"
],
"color": "#00C7B7",
"priority": 180,
"partner": {
"id": "netlify",
"tier": "gold"
},
"integrations": [
{
"type": "vite-plugin",
"import": "import netlify from '@netlify/vite-plugin-tanstack-start'",
"code": "netlify()"
}
],
"id": "netlify",
"version": "0.0.0",
"packageAdditions": {
"devDependencies": {
"@netlify/vite-plugin-tanstack-start": "^1.2.15"
},
"pnpm": {
"onlyBuiltDependencies": [
"sharp"
]
}
},
"smallLogo": ""
},
{
"name": "Nitro (agnostic)",
"description": "Generic Nitro adapter (deploy to any Node-compatible host).",
"link": "https://v3.nitro.build/",
"phase": "add-on",
"modes": [
"file-router",
"code-router"
],
"type": "deployment",
"category": "deploy",
"exclusive": [
"deploy"
],
"color": "#ECDC5A",
"integrations": [
{
"type": "vite-plugin",
"import": "import { nitro } from 'nitro/vite'",
"code": "nitro()"
}
],
"default": true,
"id": "nitro",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"nitro": "3.0.260610-beta"
}
},
"smallLogo": "\n\n"
},
{
"name": "Railway",
"description": "Deploy to Railway (full-stack PaaS for Node + databases).",
"link": "https://railway.com/",
"phase": "add-on",
"modes": [
"file-router",
"code-router"
],
"type": "deployment",
"category": "deploy",
"exclusive": [
"deploy"
],
"color": "#9B4DCA",
"priority": 160,
"partner": {
"id": "railway",
"tier": "gold"
},
"integrations": [
{
"type": "vite-plugin",
"import": "import { nitro } from 'nitro/vite'",
"code": "nitro()"
}
],
"id": "railway",
"version": "0.0.0",
"packageAdditions": {
"scripts": {
"start": "node .output/server/index.mjs"
},
"dependencies": {
"nitro": "3.0.260610-beta"
}
}
},
{
"name": "Render",
"description": "Deploy to Render (full-stack cloud platform with GitHub integration).",
"link": "https://render.com/",
"phase": "add-on",
"modes": [
"file-router"
],
"type": "deployment",
"supportedPackageManagers": [
"npm",
"yarn",
"pnpm",
"bun"
],
"category": "deploy",
"exclusive": [
"deploy"
],
"color": "#46E3B7",
"priority": 150,
"partner": {
"id": "render",
"tier": "gold"
},
"integrations": [
{
"type": "vite-plugin",
"import": "import { nitro } from 'nitro/vite'",
"code": "nitro()"
}
],
"id": "render",
"version": "0.0.0",
"packageAdditions": {
"scripts": {
"start": "node .output/server/index.mjs"
},
"dependencies": {
"nitro": "3.0.260610-beta"
}
}
},
{
"name": "Vercel",
"description": "Deploy to Vercel (Functions, static assets, and Git previews).",
"link": "https://vercel.com/docs/frameworks/full-stack/tanstack-start",
"phase": "add-on",
"modes": [
"file-router"
],
"type": "deployment",
"supportedPackageManagers": [
"npm",
"yarn",
"pnpm",
"bun"
],
"category": "deploy",
"exclusive": [
"deploy"
],
"color": "#000000",
"priority": 140,
"partner": {
"id": "vercel",
"tier": "gold"
},
"integrations": [
{
"type": "vite-plugin",
"import": "import { nitro } from 'nitro/vite'",
"code": "nitro()"
}
],
"id": "vercel",
"version": "0.0.0",
"packageAdditions": {
"dependencies": {
"nitro": "3.0.260610-beta"
}
}
}
]
}
]
}