stack/packages/stack-shared/src/apps/apps-config.ts
Mantra 68ae6d1f1c
[codex] Add TanStack Start SDK integration (#1399)
## Summary

- Adds the generated `@stackframe/tanstack-start` workspace package
registration.
- Adds TanStack Start platform macros/dependencies to the SDK template
and generator.
- Adds TanStack Start cookie/token-store support plus the handler SSR
guard needed by Start.

## Scope

This intentionally excludes Dashboard V2 routes, hooks, components, app
shell logic, and dashboard API type additions. Those stay in the
existing dashboard PR/branch.

## Validation

- `pnpm install --lockfile-only --ignore-scripts`
- `pnpm install --ignore-scripts`
- `pnpm -C packages/template lint
src/components-page/stack-handler-client.tsx src/lib/cookie.ts
src/lib/stack-app/apps/implementations/client-app-impl.ts`

Package typecheck was attempted with `pnpm -C packages/template
typecheck`, but the clean worktree lacks generated package declaration
outputs for workspace dependencies such as `@stackframe/stack-shared`
and `@stackframe/stack-ui`. Per repo instructions, package
builds/codegen are not run by agents.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* TanStack Start integration: published SDK package, example demo app,
dashboard onboarding flow, framework-aware CTAs/docs, and a
TanStack-specific provider for client-only auth routes.
* Improved client/server auth: safer runtime guards and consistent
cookie/token-store behavior across SSR and client.

* **Documentation**
* New Integrations guide and expanded getting-started/setup docs with
TanStack Start examples and env/key guidance.

* **Chores**
* Template, build, tooling, and demo config updates to support the new
platform.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-05-08 10:59:16 -07:00

166 lines
4.0 KiB
TypeScript

type AppTag = {
displayName: string,
};
export const ALL_APP_TAGS = {
"expert": {
displayName: "Expert",
},
"integration": {
displayName: "Integrations",
},
"auth": {
displayName: "Authentication",
},
"developers": {
displayName: "For Developers",
},
"security": {
displayName: "Security",
},
"operations": {
displayName: "For Operations",
},
"gtm": {
displayName: "Go-to-market",
},
"comms": {
displayName: "Communications",
},
"automation": {
displayName: "Automation",
},
"storage": {
displayName: "Storage & Databases",
},
"various": {
displayName: "Various",
},
} as const satisfies Record<string, AppTag>;
type App = {
displayName: string,
subtitle: string,
tags: (keyof typeof ALL_APP_TAGS)[],
stage: "alpha" | "beta" | "stable",
};
export type AppId = keyof typeof ALL_APPS;
export const ALL_APPS = {
"authentication": {
displayName: "Authentication",
subtitle: "User sign-in and account management",
tags: ["auth", "security"],
stage: "stable",
},
"fraud-protection": {
displayName: "Fraud Protection",
subtitle: "Protect your project from fraud and abuse",
tags: ["auth", "security"],
stage: "stable",
},
"onboarding": {
displayName: "Onboarding",
subtitle: "Configure user onboarding requirements",
tags: ["auth"],
stage: "alpha",
},
"teams": {
displayName: "Teams",
subtitle: "Team collaboration and management",
tags: ["auth", "security"],
stage: "stable",
},
"rbac": {
displayName: "RBAC",
subtitle: "Role-based access control and permissions",
tags: ["auth", "security"],
stage: "stable",
},
"api-keys": {
displayName: "API Keys",
subtitle: "API key generation and management",
tags: ["auth", "security", "developers"],
stage: "stable",
},
"payments": {
displayName: "Payments",
subtitle: "Payment processing and subscription management",
tags: ["operations", "gtm"],
stage: "beta",
},
"emails": {
displayName: "Emails",
subtitle: "Email template configuration and management",
tags: ["comms"],
stage: "stable",
},
"email-api": {
displayName: "Email API",
subtitle: "Programmatic email sending and delivery",
tags: ["comms", "developers", "expert"],
stage: "alpha",
},
"data-vault": {
displayName: "Data Vault",
subtitle: "Secure storage for sensitive user data",
tags: ["security", "storage"],
stage: "beta",
},
"webhooks": {
displayName: "Webhooks",
subtitle: "Real-time event notifications and integrations",
tags: ["developers"],
stage: "stable",
},
"tv-mode": {
displayName: "TV mode",
subtitle: "Dashboard display for large screens",
tags: ["various"],
stage: "alpha",
},
"launch-checklist": {
displayName: "Launch Checklist",
subtitle: "Pre-launch verification and readiness checks",
tags: ["various"],
stage: "stable",
},
"catalyst": {
displayName: "Catalyst",
subtitle: "Project scaffolding and rapid development",
tags: ["various"],
stage: "alpha",
},
"neon": {
displayName: "Neon Integration",
subtitle: "Serverless Postgres database integration",
tags: ["integration", "storage"],
stage: "alpha",
},
"convex": {
displayName: "Convex Integration",
subtitle: "Real-time backend platform integration",
tags: ["integration", "storage"],
stage: "alpha",
},
"vercel": {
displayName: "Vercel Integration",
subtitle: "Deploy your Stack Auth project to Vercel",
tags: ["integration", "developers"],
stage: "stable",
},
"tanstack-start": {
displayName: "TanStack Start",
subtitle: "Use Stack Auth in TanStack Start apps",
tags: ["integration", "developers"],
stage: "alpha",
},
"analytics": {
displayName: "Analytics",
subtitle: "View and explore analytics data",
tags: ["developers", "operations"],
stage: "beta",
},
} as const satisfies Record<string, App>;