Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/pr-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ jobs:
- name: Format check
run: pnpm fmt

- name: Build
run: pnpm build

typo-check:
runs-on: ubuntu-latest
steps:
Expand Down
5 changes: 4 additions & 1 deletion .vitepress/config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@ export default withMermaid(
description: "Platform Documentation",
base: "/",
srcDir: "docs",
ignoreDeadLinks: true,
ignoreDeadLinks: [
// Ignore localhost URLs used in examples
/^http:\/\/localhost/,
],

head: [["link", { rel: "icon", href: "/favicon.png" }]],

Expand Down
1 change: 0 additions & 1 deletion docs/app-shell/api/define-i18n-labels.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,5 +138,4 @@ labels.t("invalid"); // ❌ Type error

## Related

- [Internationalization Guide](../guides/internationalization) - Complete i18n guide
- [defineModule](define-module) - Use labels in modules
1 change: 0 additions & 1 deletion docs/app-shell/api/guards/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -350,4 +350,3 @@ const checkPermission: Guard = async ({ context }) => {
- [hidden()](hidden) - Hide/deny access guard function
- [redirectTo()](redirect-to) - Redirect guard function
- [WithGuard Component](../../components/with-guard) - Component-level guards
- [Guards & Permissions Guide](../../guides/guards-permissions) - Detailed tutorial
2 changes: 0 additions & 2 deletions docs/app-shell/components/app-shell.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,8 +170,6 @@ Settings appear in a dropdown menu in the sidebar header, accessible via the set

Supported locales: `en`, `ja`

[Learn more about Internationalization →](../guides/internationalization)

### errorBoundary

- **Type:** `ErrorBoundaryComponent` (optional)
Expand Down
1 change: 0 additions & 1 deletion docs/app-shell/components/command-palette.md
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,6 @@ The CommandPalette follows these design principles:

- [Modules and Resources](../concepts/modules-and-resources) - Define routes that appear in CommandPalette
- [Routing and Navigation](../concepts/routing-navigation) - Navigation system
- [Guards and Permissions](../guides/guards-permissions) - Control route visibility

## Troubleshooting

Expand Down
1 change: 0 additions & 1 deletion docs/app-shell/components/sidebar-group.md
Original file line number Diff line number Diff line change
Expand Up @@ -455,7 +455,6 @@ Without `to`, only the chevron is clickable (for expand/collapse).
## Related Concepts

- [Sidebar Navigation](../concepts/sidebar-navigation) - Sidebar customization guide
- [Internationalization](../guides/internationalization) - Multi-language support

## API Reference

Expand Down
1 change: 0 additions & 1 deletion docs/app-shell/components/with-guard.md
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,6 @@ const checkPermission: Guard = async ({ context }) => {

## Related Concepts

- [Guards and Permissions](../guides/guards-permissions) - Comprehensive guard guide
- [Modules and Resources](../concepts/modules-and-resources) - Route-level guards

## API Reference
Expand Down
6 changes: 3 additions & 3 deletions docs/app-shell/concepts/authentication.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ The above code will:
- Show the `guardComponent` while loading or when unauthenticated
- Handle token management and session persistence automatically

See the [API](api.md#authprovider) for more details.
See the [useAuth](../api/use-auth) for more details.

## Authentication Hook

Expand Down Expand Up @@ -89,7 +89,7 @@ The `authState` object contains:
| `isAuthenticated` | `boolean` | Whether user is authenticated |
| `user` | `User \| null` | Current user object (null if not authenticated) |

See the [API](api.md#useauth) for more details.
See the [useAuth API](../api/use-auth) for more details.

## Extending User Type

Expand Down Expand Up @@ -244,7 +244,7 @@ function App() {
| `getAppUri()` | `() => string` | Returns the `appUri` used to create this client |
| `fetch` | `typeof fetch` | Authenticated fetch with built-in DPoP proof generation and token refresh |

See the [API](api.md#createauthclient) for more details.
See the [useAuth API](../api/use-auth) for more details.

## Integration with AppShell

Expand Down
4 changes: 2 additions & 2 deletions docs/app-shell/concepts/modules-and-resources.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ The same applies to resources: a `defineResource()` call without a `component` m

Guards on component-less modules and resources execute correctly. For example, a `redirectTo()` guard will fire as expected. If all guards return `pass()`, the route falls back to a 404 (since there is no component to render).

> Read more about [client-side navigation](routing-and-navigation) in AppShell apps
> Read more about [client-side navigation](routing-navigation) in AppShell apps

## Route Guards

Expand All @@ -117,7 +117,7 @@ Both modules and resources support `guards` - an array of functions that control
- Reusability: Share common guards across routes
- Semantic constraints: Clear `pass()`, `hidden()`, or `redirectTo()` results

See the [Route Guards documentation](api.md#route-guards) in the API reference for full details.
See the [Route Guards documentation](../api/guards/overview) in the API reference for full details.

### Guard Examples

Expand Down
2 changes: 1 addition & 1 deletion docs/getting-started/core-concepts/services.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ Job orchestration service (Preview):
- **Conditional branching**
- **Retry and error handling**

[Learn more about Workflow →](/guides/workflow)
[Learn more about Workflow →](/guides/workflow/)

### Secret Manager

Expand Down
2 changes: 1 addition & 1 deletion docs/guides/executor/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,4 +125,4 @@ You can view the number of attempts for each job created for an executor in the

For more details on the number of attempts, refer to the [Verify the trigger](/tutorials/setup-executor/event-based-trigger#5verifythetrigger) section of the event-based trigger tutorial.

Additionally, executor operations are subject to a recursive call depth limit of 10 levels when triggering other platform services. See [Platform Limits](/reference/platform-limits#recursive-call-detection) for more details.
Additionally, executor operations are subject to a recursive call depth limit of 10 levels when triggering other platform services. See [Platform Limits](/reference/platform/platform-limits#recursive-call-detection) for more details.
4 changes: 2 additions & 2 deletions docs/guides/executor/workflow-operation.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ doc_type: guide

The Workflow operation enables triggering workflows from the Executor service. This operation type is ideal for automatically starting workflows in response to events, webhooks, or scheduled tasks.

For more details on workflows, refer to the [Workflow Service](/guides/workflow) documentation.
For more details on workflows, refer to the [Workflow Service](/guides/workflow/) documentation.

## Configuration Example

Expand Down Expand Up @@ -105,7 +105,7 @@ Workflow operations are ideal for:

## Related Documentation

- [Workflow Service Overview](/guides/workflow)
- [Workflow Service Overview](/guides/workflow/)
- [Creating Workflows](/guides/workflow/creating-workflows)
- [Triggering Workflows](/guides/workflow/triggering-workflow)
- [Monitoring Executions](/guides/workflow/monitoring-executions)
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/function/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ query {
}
```

Function operations are subject to a recursive call depth limit of 10 levels when calling other platform services. See [Platform Limits](/reference/platform-limits#recursive-call-detection) for more details.
Function operations are subject to a recursive call depth limit of 10 levels when calling other platform services. See [Platform Limits](/reference/platform/platform-limits#recursive-call-detection) for more details.

## Using the "user" variable

Expand Down
12 changes: 6 additions & 6 deletions docs/guides/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,16 @@ Comprehensive guides for building applications on Tailor Platform.
## Core Platform Guides

- [Application](application.md) - Create application manifests and API endpoints for your services
- [Pipeline](pipeline.md) - Build custom GraphQL resolvers with business logic and data transformations
- [Resolver](resolver.md) - Build custom GraphQL resolvers with business logic and data transformations
- [Events](events.md) - Event types and payloads for building dynamic workflows and automations
- [Secret Manager](secretmanager.md) - Securely manage API keys, tokens, and credentials with versioning
- [Static Website Hosting](static-website-hosting.md) - Deploy single-page applications with CDN caching and access control

## Service-Specific Guides

- [TailorDB](tailordb/) - Database schema, fields, relationships, permissions, hooks, and auto-generated APIs
- [Auth](auth/) - Authentication setup, app login, auth connections, and identity provider integrations
- [Executor](executor/) - Event-based, webhook, and scheduled triggers with various operations
- [Function](function/) - Custom function development, TailorDB access, debugging, and examples
- [TailorDB](tailordb/overview) - Database schema, fields, relationships, permissions, hooks, and auto-generated APIs
- [Auth](auth/overview) - Authentication setup, app login, auth connections, and identity provider integrations
- [Executor](executor/overview) - Event-based, webhook, and scheduled triggers with various operations
- [Function](function/overview) - Custom function development, TailorDB access, debugging, and examples
- [Workflow](workflow/) - Creating workflows, monitoring executions, and triggering mechanisms
- [Integration](integration/) - Third-party integrations including Shopify, QuickBooks, ShipStation, and more
- [Integration](integration/overview) - Third-party integrations including Shopify, QuickBooks, ShipStation, and more
2 changes: 1 addition & 1 deletion docs/guides/tailordb/hooks.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ You can perform calculations using other fields within the same record. For exam
2. Adding user context:

Hooks allow the addition of current user context to the record. For instance, a field like `createdById` can be populated with the `user.id`.\
Additionally, you can utilize user attributes, an array of UUIDs configured in the `AttributesFields` in the Auth service. A typical use case for `user.attributes` involves validation. Refer to this [example](/guides/tailordb/validations/#exampledemonstratinghowtouseuserattributes).
Additionally, you can utilize user attributes, an array of UUIDs configured in the `AttributesFields` in the Auth service. A typical use case for `user.attributes` involves validation. Refer to this [example](/guides/tailordb/validations#exampledemonstratinghowtouseuserattributes).

Furthermore, the field updates itself whenever a new record is created or an existing one is updated.\
This ensures data consistency without manual recalculations, similar to calculated fields in a database, and helps you avoid writing complex logic in [Pipeline](/guides/resolver).
Expand Down
7 changes: 5 additions & 2 deletions docs/sdk/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ Learn how to build apps with the Tailor Platform SDK.

### Service Guides

- [Services](services/) - Core platform services including Auth, Resolver, TailorDB, Workflow, and more
- [CLI](cli/) - Command-line interface tools for managing applications, auth, secrets, users, and workflows
- [Auth](services/auth) - Authentication service configuration
- [TailorDB](services/tailordb) - Database service configuration
- [Resolver](services/resolver) - Custom GraphQL resolver service
- [Executor](services/executor) - Event-driven automation service
- [Workflow](services/workflow) - Job orchestration service
- [Generator](generator/) - Code generation tools for builtin and custom generators
2 changes: 1 addition & 1 deletion docs/sdk/services/resolver.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Resolvers provide:

## Comparison with Tailor Platform Pipeline Resolver

The SDK's Resolver is a simplified version of Tailor Platform's [Pipeline Resolver](/guides/pipeline).
The SDK's Resolver is a simplified version of Tailor Platform's [Pipeline Resolver](/guides/resolver).

| Pipeline Resolver | SDK Resolver |
| ---------------------------------------- | --------------------------------- |
Expand Down
2 changes: 1 addition & 1 deletion docs/sdk/services/workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Workflows provide:
- Access to TailorDB via Kysely query builder
- Job triggering to compose multi-step logic

For the official Tailor Platform documentation, see [Workflow Guide](/guides/workflow).
For the official Tailor Platform documentation, see [Workflow Guide](/guides/workflow/).

## Workflow Rules

Expand Down
6 changes: 3 additions & 3 deletions docs/tutorials/develop-from-scratch/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ Learn how to build a complete application on the Tailor Platform from the ground

After completing a develop-from-scratch tutorial, explore:

- [Data Schema Management](../manage-data-schema/) - Advanced schema patterns
- [Setup Authentication](../setup-auth/) - Identity providers and OAuth2
- [Data Schema Management](../manage-data-schema/overview) - Advanced schema patterns
- [Setup Authentication](../setup-auth/overview) - Identity providers and OAuth2
- [Resolvers](../resolver) - Custom business logic
- [Executors](../setup-executor/) - Event-driven automation
- [Executors](../setup-executor/overview) - Event-driven automation
- [Application Endpoints](../app-endpoint) - Expose your services

## Need Help?
Expand Down
2 changes: 1 addition & 1 deletion docs/tutorials/manage-data-schema/create-data-schema.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ With Tailor Platform's TailorDB, you can easily add new types (data models) to y

This tutorial demonstrates how to create a new data schema using the SDK.

- See [Core Concepts](/getting-started/core-concepts) to get an overview of Workspace, Organization, Application and Service.
- See [Core Concepts](/getting-started/core-concepts/) to get an overview of Workspace, Organization, Application and Service.
- To follow along with this tutorial, first complete the [SDK Quickstart](../../sdk/quickstart) and the [Data Schema Basics](data-schema-basics) tutorial.

## Tutorial Steps
Expand Down
2 changes: 1 addition & 1 deletion docs/tutorials/manage-data-schema/modify-data-schema.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Tailor Platform makes it easy to modify data schemas. With TailorDB, you can mod

This tutorial demonstrates how to add a new field to an existing data type using the SDK.

- See [Core Concepts](/getting-started/core-concepts) to get an overview of Workspace, Organization, Application and Service.
- See [Core Concepts](/getting-started/core-concepts/) to get an overview of Workspace, Organization, Application and Service.
- To follow along with this tutorial, first complete the [SDK Quickstart](../../sdk/quickstart) and the [Data Schema Basics](data-schema-basics) tutorial.

## TailorDB
Expand Down
2 changes: 1 addition & 1 deletion docs/tutorials/manage-data-schema/validate-field-data.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Accurate and valid data is essential to ensure the success of any application. T

This tutorial demonstrates how to apply data validation rules to your fields using the SDK.

- See [Core Concepts](/getting-started/core-concepts) to get an overview of Workspace, Organization, Application and Service.
- See [Core Concepts](/getting-started/core-concepts/) to get an overview of Workspace, Organization, Application and Service.
- To follow along with this tutorial, first complete the [SDK Quickstart](../../sdk/quickstart) and the [Data Schema Basics](data-schema-basics) tutorial.

## Tutorial Steps
Expand Down
2 changes: 1 addition & 1 deletion docs/tutorials/setup-auth/setup-identity-provider.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ The [Auth service](/guides/auth/overview) works with an identity provider (IdP)
## Prerequisite

- Complete [Quickstart](/getting-started/quickstart) 
- See [Core concepts](/getting-started/core-concepts) to get an overview of Workspace, Organization, Application and Service.
- See [Core concepts](/getting-started/core-concepts/) to get an overview of Workspace, Organization, Application and Service.

Before configuring the Auth service for authentication, you need to set up an identity provider.

Expand Down