diff --git a/docs/develop/dotnet/index.mdx b/docs/develop/dotnet/index.mdx index ff63c16eac..0a9cf4a647 100644 --- a/docs/develop/dotnet/index.mdx +++ b/docs/develop/dotnet/index.mdx @@ -12,164 +12,120 @@ tags: - Temporal SDKs --- -import * as Components from '@site/src/components'; - - - ![.NET SDK Banner](/img/assets/banner-dotnet-temporal.png) -:::info .NET SPECIFIC RESOURCES -Build Temporal Applications with the .NET SDK. - -**Temporal .NET Technical Resources:** -- [.NET Quickstart](https://docs.temporal.io/develop/dotnet/set-up-your-local-dotnet) -- [.NET API Documentation](https://dotnet.temporal.io/api/) -- [.NET SDK Code Samples](https://github.com/temporalio/samples-dotnet) -- [.NET SDK GitHub](https://github.com/temporalio/sdk-dotnet) -- [Temporal 101 in .NET Free Course](https://learn.temporal.io/courses/temporal_101/dotnet/) - -**Get Connected with the Temporal .NET Community:** - -- [Temporal .NET Community Slack](https://temporalio.slack.com/archives/C012SHMPDDZ) -- [.NET SDK Forum](https://community.temporal.io/tag/dotnet-sdk) - ::: - -## [Core Application](/develop/dotnet/core-application) - -Use the essential components of a Temporal Application (Workflows, Activities, and Workers) to build and run a Temporal application. - -- [Develop a basic Workflow Definition](/develop/dotnet/core-application#develop-workflow): Workflows are the fundamental unit of a Temporal Application, and it all starts with the development of a Workflow Definition. -- [Develop a basic Activity Definition](/develop/dotnet/core-application#develop-activity): One of the primary things that Workflows do is orchestrate the execution of Activities. -- [Start an Activity from a Workflow](/develop/dotnet/core-application#activity-execution): Calls to spawn Activity Executions are written within a Workflow Definition. -- [Run a Worker Process](/develop/dotnet/core-application#run-worker-process): The Worker Process is where Workflow Functions and Activity Functions are executed. -- [Set a Dynamic Workflow](/develop/dotnet/core-application#set-a-dynamic-workflow): Set a Workflow that can be invoked dynamically at runtime. -- [Set a Dynamic Activity](/develop/dotnet/core-application#set-a-dynamic-activity): Set an Activity that can be invoked dynamically at runtime. - -## [Temporal Client](/develop/dotnet/temporal-client) - -Connect to a Temporal Service and start a Workflow Execution. - -- [Create a Temporal Client](/develop/dotnet/temporal-client#create-a-client): Learn to instantiate and configure a client to interact with the Temporal Service. -- [Connect to Temporal Cloud](/develop/dotnet/temporal-client#connect-to-temporal-cloud): Securely connect to the Temporal Cloud for a fully managed service. -- [Start a Workflow](/develop/dotnet/temporal-client#start-workflow): Initiate Workflows seamlessly via the .NET SDK. -- [Get Workflow results](/develop/dotnet/temporal-client#get-workflow-results): Retrieve and process the results of your Workflows efficiently. - -## [Testing](/develop/dotnet/testing-suite) - -Set up the testing suite and test Workflows and Activities. - -- [Test frameworks](/develop/dotnet/testing-suite#test-frameworks): Testing provides a framework to facilitate Workflow and integration testing. -- [Testing Workflows](/develop/dotnet/testing-suite#testing-workflows): Ensure the functionality and reliability of your Workflows. -- [Testing Activities](/develop/dotnet/testing-suite#test-activities): Validate the execution and outcomes of your Activities. -- [Replay test](/develop/dotnet/testing-suite#replay): Replay recreates the exact state of a Workflow Execution. - -## [Failure detection](/develop/dotnet/failure-detection) - -Explore how your application can detect failures using timeouts and automatically attempt to mitigate them with retries. - -- [Workflow timeouts](/develop/dotnet/failure-detection#workflow-timeouts): Each Workflow timeout controls the maximum duration of a different aspect of a Workflow Execution. -- [Workflow retries](/develop/dotnet/failure-detection#workflow-retries): A Workflow Retry Policy can be used to retry a Workflow Execution in the event of a failure. -- [Activity timeouts](/develop/dotnet/failure-detection#activity-timeouts): Each Activity timeout controls the maximum duration of a different aspect of an Activity Execution. -- [Set an Activity Retry Policy](/develop/dotnet/failure-detection#activity-retries): Define retry logic for Activities to handle failures. -- [Heartbeat an Activity](/develop/dotnet/failure-detection#activity-heartbeats): An Activity Heartbeat is a ping from the Worker that is executing the Activity to the Temporal Service. -- [Heartbeat Timeout](/develop/dotnet/failure-detection#heartbeat-timeout): A Heartbeat Timeout works in conjunction with Activity Heartbeats. - -## [Workflow message passing](/develop/go/message-passing) - -Send messages to and read the state of Workflow Executions. - -### Signals - -- [Define Signal](/develop/dotnet/message-passing#signals): A Signal is a message sent to a running Workflow Execution. -- [Send a Signal from a Temporal Client](/develop/dotnet/message-passing#send-signal-from-client): Send a Signal to a Workflow from a Temporal Client. -- [Send a Signal from a Workflow](/develop/dotnet/message-passing#send-signal-from-workflow): Send a Signal to another Workflow from within a Workflow, this would also be called an External Signal. -- [Signal-With-Start](/develop/dotnet/message-passing#signal-with-start): Start a Workflow and send it a Signal in a single operation used from the Client. -- [Dynamic Handler](/develop/dotnet/message-passing#dynamic-handler): Dynamic Handlers provide flexibility to handle cases where the names of Workflows, Activities, Signals, or Queries aren't known at run time. -- [Set a Dynamic Signal](/develop/dotnet/message-passing#set-a-dynamic-signal): A Dynamic Signal in Temporal is a Signal that is invoked dynamically at runtime if no other Signal with the same input is registered. - -### Queries - -- [Define a Query](/develop/dotnet/message-passing#queries): A Query is a synchronous operation that is used to get the state of a Workflow Execution. -- [Send Queries](/develop/dotnet/message-passing#send-query): Queries are sent from the Temporal Client. -- [Set a Dynamic Query](/develop/dotnet/message-passing#set-a-dynamic-signal): A Dynamic Query in Temporal is a Query that is invoked dynamically at runtime if no other Query with the same name is registered. - -### Updates - -- [Define an Update](/develop/dotnet/message-passing#updates): An Update is an operation that can mutate the state of a Workflow Execution and return a response. -- [Send an Update](/develop/dotnet/message-passing#send-update-from-client): An Update is sent from the Temporal Client. - -## [Interrupt a Workflow](/develop/dotnet/cancellation) - -Interrupt a Workflow Execution with a Cancel or Terminate action. - -- [Cancel a Workflow](/develop/dotnet/cancellation#cancellation): Interrupt a Workflow Execution and its Activities through Workflow cancellation. -- [Terminate a Workflow](/develop/dotnet/cancellation#termination): Interrupt a Workflow Execution and its Activities through Workflow termination. - -## [Asynchronous Activity completion](/develop/dotnet/asynchronous-activity) - -Complete Activities asynchronously. - -- [Asynchronous Activity](/develop/dotnet/asynchronous-activity): Asynchronous Activity completion enables the Activity Function to return without the Activity Execution completing. - -## [Versioning](/develop/dotnet/versioning) - -Change Workflow Definitions without causing non-deterministic behavior in running Workflows. - -- [Use the .NET SDK Patching API](/develop/dotnet/versioning#patching): Patching Workflows using the .NET SDK. - -## [Observability](/develop/dotnet/observability) - -Configure and use the Temporal Observability APIs. - -- [Emit Metrics](/develop/dotnet/observability#metrics): Each Temporal SDK is capable of emitting an optional set of metrics from either the Client or the Worker process. -- [Set up Tracing](/develop/dotnet/observability#tracing): Explains how the Go SDK supports tracing and custom context propagation. -- [Log from a Workflow](/develop/dotnet/observability#logging): Send logs and errors to a logging service, so that when things go wrong, you can see what happened. -- [Use Visibility APIs](/develop/dotnet/observability#visibility): The term Visibility, within the Temporal Platform, refers to the subsystems and APIs that enable an operator to view Workflow Executions that currently exist within a Terminal Service. - -## [Debugging](/develop/dotnet/debugging) - -Explore various ways to debug your application. - -- [Debug in a development environment](/develop/dotnet/debugging#debug-in-a-development-environment): In addition to the normal development tools of logging and a debugger, you can also see what’s happening in your Workflow by using the Web UI and the Temporal CLI. -- [Debug in a development production](/develop/dotnet/debugging#debug-in-a-development-production): Debug production Workflows using the Web UI, the Temporal CLI, Replays, Tracing, or Logging. - -## [Schedules](/develop/dotnet/schedules) - -Run Workflows on a schedule and delay the start of a Workflow. - -- [Schedule a Workflow](/develop/dotnet/schedules#schedule-a-workflow) - - [Create a Scheduled Workflow](/develop/dotnet/schedules#create-a-workflow): Create a new schedule for a scheduled Workflow. - - [Backfill a Scheduled Workflow](/develop/dotnet/schedules#backfill-a-scheduled-workflow): Backfills a past time range of actions for a scheduled Workflow. - - [Delete a Scheduled Workflow](/develop/dotnet/schedules#delete-a-scheduled-workflow): Deletes a schedule for a scheduled Workflow. - - [Describe a Scheduled Workflow](/develop/dotnet/schedules#describe-a-scheduled-workflow): Get schedule configuration and current state for a scheduled Workflow. - - [List a Scheduled Workflow](/develop/dotnet/schedules#list-a-scheduled-workflow): List a schedule for a scheduled Workflow. - - [Pause a Scheduled Workflow](/develop/dotnet/schedules#pause-a-scheduled-workflow): Pause a schedule for a scheduled Workflow. - - [Trigger a Scheduled Workflow](/develop/dotnet/schedules#trigger-a-scheduled-workflow): Triggers an immediate action for a scheduled Workflow. - - [Update a Scheduled Workflow](/develop/dotnet/schedules#update-a-scheduled-workflow): Updates a schedule with a new definition for a scheduled Workflow. -- [Use Start Delay](/develop/dotnet/schedules#start-delay): Start delay functionality if you need to delay the execution of the Workflow without the need for regular launches. - -## [Data encryption](/develop/dotnet/converters-and-encryption) - -Use compression, encryption, and other data handling by implementing custom converters and codecs. - -- [Use a custom Payload Codec](/develop/dotnet/converters-and-encryption#custom-payload-codec): Create a custom PayloadCodec implementation and define your encryption/compression and decryption/decompression logic. -- [Use a custom Payload Converter](/develop/dotnet/converters-and-encryption#custom-payload-converter): A custom data converter can be set via the `DataConverter` option when creating a client. - -## [Durable Timers](/develop/go/timers) - -Use Timers to make a Workflow Execution pause or "sleep" for seconds, minutes, days, months, or years. - -- [Sleep](/develop/dotnet/durable-timers): A Timer lets a Workflow sleep for a fixed time period. - -## [Child Workflows](/develop/dotnet/child-workflows) - -Explore how to spawn a Child Workflow Execution and handle Child Workflow Events. - -- [Start a Child Workflow Execution](/develop/dotnet/child-workflows): A Child Workflow Execution is a Workflow Execution that is scheduled from within another Workflow using a Child Workflow API. -- [Set a Parent Close Policy](/develop/dotnet/child-workflows#parent-close-policy): A Parent Close Policy determines what happens to a Child Workflow Execution if its Parent changes to a Closed status. - -## [Continue-As-New](/develop/dotnet/continue-as-new) - -Continue the Workflow Execution with a new Workflow Execution using the same Workflow ID. - -- [Continue-As-New](/develop/dotnet/continue-as-new): Continue-As-New enables a Workflow Execution to close successfully and create a new Workflow Execution in a single atomic operation if the number of Events in the Event History is becoming too large. +# .NET SDK resources + +
+
+
+

Technical Resources

+ +
+
+

Community

+ +
+
+
+ +
+
+

Core Application

+

Use the essential components of a Temporal Application (Workflows, Activities, and Workers) to build and run a Temporal application.

+
+ +
+

Temporal Client

+

Connect to a Temporal Service and start a Workflow Execution.

+
+ +
+

Testing

+

Set up the testing suite and test Workflows and Activities.

+
+ +
+

Failure detection

+

Explore how your application can detect failures using timeouts and automatically attempt to mitigate them with retries.

+
+ +
+

Workflow message passing

+

Send messages to and read the state of Workflow Executions.

+
+ +
+

Interrupt a Workflow

+

Interrupt a Workflow Execution with a Cancel or Terminate action.

+
+ +
+

Asynchronous Activity completion

+

Complete Activities asynchronously.

+
+ +
+

Versioning

+

Change Workflow Definitions without causing non-deterministic behavior in running Workflows.

+
+ +
+

Observability

+

Configure and use the Temporal Observability APIs.

+
+ +
+

Debugging

+

Explore various ways to debug your application.

+
+ +
+

Schedules

+

Run Workflows on a schedule and delay the start of a Workflow.

+
+ +
+

Data encryption

+

Use compression, encryption, and other data handling by implementing custom converters and codecs.

+
+ +
+

Temporal Nexus

+

Connect durable executions within and across Namespaces using a Nexus Endpoint, a Nexus Service contract, and Nexus Operations.

+
+ +
+

Durable Timers

+

Use Timers to make a Workflow Execution pause or "sleep" for seconds, minutes, days, months, or years.

+
+ +
+

Child Workflows

+

Explore how to spawn a Child Workflow Execution and handle Child Workflow Events.

+
+ +
+

Continue-As-New

+

Continue the Workflow Execution with a new Workflow Execution using the same Workflow ID.

+
+ +
+

Side Effects

+

Use Side Effects in Workflows.

+
+ +
+

Manage Namespaces

+

Create and manage Namespaces.

+
+
diff --git a/docs/develop/go/index.mdx b/docs/develop/go/index.mdx index 7d1a038c35..5a785fcfe8 100644 --- a/docs/develop/go/index.mdx +++ b/docs/develop/go/index.mdx @@ -11,175 +11,130 @@ tags: - Temporal SDKs --- -import * as Components from '@site/src/components'; - ![Go SDK Banner](/img/assets/banner-go-temporal.png) -:::info GO SPECIFIC RESOURCES -Build Temporal Applications with the Go SDK. - -**Temporal Go Technical Resources:** - -- [Go SDK Quickstart - Setup Guide](https://docs.temporal.io/develop/go/set-up-your-local-go) -- [Go API Documentation](https://pkg.go.dev/go.temporal.io/sdk) -- [Go SDK Code Samples](https://github.com/temporalio/samples-go) -- [Go SDK GitHub](https://github.com/temporalio/sdk-go) -- [Temporal 101 in Go Free Course](https://learn.temporal.io/courses/temporal_101/go/) - -**Get Connected with the Temporal Go Community:** - -- [Temporal Go Community Slack](https://temporalio.slack.com/archives/CTDTU3J4T) -- [Go SDK Forum](https://community.temporal.io/tag/go-sdk) - ::: - -## [Core Application](/develop/go/core-application) - -Use the essential components of a Temporal Application (Workflows, Activities, and Workers) to build and run a Temporal application. - -- [How to develop a basic Workflow](/develop/go/core-application#develop-workflows) -- [How to develop an Activity Definition in Go](/develop/go/core-application#activity-definition) -- [How to start an Activity Execution](/develop/go/core-application#activity-execution) -- [How to develop a Worker in Go](/develop/go/core-application#develop-worker) -- [How to run a Temporal Cloud Worker](/develop/go/core-application#run-a-temporal-cloud-worker) - -## [Temporal Client](/develop/go/temporal-clients) - -Connect to a Temporal Service and start a Workflow Execution. - -- [Connect to development Temporal Service](/develop/go/temporal-clients#connect-to-development-service) -- [Connect to Temporal Cloud](/develop/go/temporal-clients#connect-to-temporal-cloud) -- [Start Workflow Execution](/develop/go/temporal-clients#start-workflow-execution) -- [How to start a Workflow Execution](/develop/go/temporal-clients#start-workflow-execution) - -## [Multithreading](/develop/go/go-sdk-multithreading) - -Safely use multithreading with the Go SDK. - -## [Testing](/develop/go/testing-suite) - -Set up the testing suite and test Workflows and Activities. - -- [Test frameworks](/develop/go/testing-suite#test-frameworks) -- [Test setup](/develop/go/testing-suite#test-setup) -- [Testing Activities](/develop/go/testing-suite#test-activities) -- [Mock and override Activities](/develop/go/testing-suite#mock-and-override-activities) -- [Testing Workflows](/develop/go/testing-suite#test-workflows) -- [How to Replay a Workflow Execution](/develop/go/testing-suite#replay) - -## [Failure detection feature guide](/develop/go/failure-detection) - -Explore how your application can detect failures using timeouts and automatically attempt to mitigate them with retries. - -- [Workflow timeouts](/develop/go/failure-detection#workflow-timeouts) -- [How to set Activity timeouts](/develop/go/failure-detection#activity-timeouts) -- [How to Heartbeat an Activity](/develop/go/failure-detection#activity-heartbeats) - -## [Workflow message passing](/develop/go/message-passing) - -Send messages to and read the state of Workflow Executions. - -- [How to develop with Signals](/develop/go/message-passing#signals) -- [How to develop with Queries](/develop/go/message-passing#queries) -- [How to develop with Updates](/develop/go/message-passing#updates) - -## [Interrupt a Workflow feature guide](/develop/go/cancellation) - -Interrupt a Workflow Execution with a Cancel or Terminate action. - -- [Handle a Workflow Cancellation Request](/develop/go/cancellation#handle-cancellation-in-workflow): Interrupt a Workflow Execution and its Activities through Workflow cancellation. -- [Request Cancellation](/develop/go/cancellation#request-cancellation) - -## [Asynchronous Activity completion](/develop/go/asynchronous-activity-completion) - -Complete Activities asynchronously. - -- [How to asynchronously complete an Activity](/develop/go/asynchronous-activity-completion) - -## [Versioning](/develop/go/versioning) - -Change Workflow Definitions without causing non-deterministic behavior in running Workflows. - -- [Temporal Go SDK Versioning APIs](/develop/go/versioning#patching) -- [Runtime checking](/develop/go/versioning#runtime-checking) - -## [Observability](/develop/go/observability) - -Configure and use the Temporal Observability APIs. - -- [How to emit metrics](/develop/go/observability#metrics) -- [Tracing and Context Propagation](/develop/go/observability#tracing-and-context-propogation) -- [How to log from a Workflow](/develop/go/observability#logging) -- [How to use Visibility APIs](/develop/go/observability#visibility) - -## [Debugging](/develop/go/debugging) - -Explore various ways to debug your application. - -- [How to debug in a development environment](/develop/go/debugging#debug-in-a-development-environment) -- [How to debug in a production environment](/develop/go/debugging#debug-in-a-production-environment) -- [How to test Workflow Definitions in Go](/develop/go/debugging#testing-and-debugging) - -## [Schedules](/develop/go/schedules) - -Run Workflows on a schedule and delay the start of a Workflow. - -- [How to Schedule a Workflow](/develop/go/schedules#schedule-a-workflow) -- [How to use Temporal Cron Jobs](/develop/go/schedules#temporal-cron-jobs) - -## [Data encryption](/develop/go/converters-and-encryption) - -Use compression, encryption, and other data handling by implementing custom converters and codecs. - -- [How to use a custom Payload Codec in Go](/develop/go/converters-and-encryption#custom-payload-codec) -- [How to use custom payload conversion](/develop/go/converters-and-encryption#custom-payload-conversion) -- [How to use a custom Payload Converter in Go](/develop/go/converters-and-encryption#custom-payload-converter) - -## Temporal Nexus - -The [Temporal Nexus](/develop/go/nexus) feature guide shows how to use Temporal Nexus to connect durable executions within and across Namespaces using a Nexus Endpoint, a Nexus Service contract, and Nexus Operations. - -- [Create a Nexus Endpoint to route requests from caller to handler](/develop/go/nexus#create-nexus-endpoint) -- [Define the Nexus Service contract](/develop/go/nexus#define-nexus-service-contract) -- [Develop a Nexus Service and Operation handlers](/develop/go/nexus#develop-nexus-service-operation-handlers) -- [Develop a caller Workflow that uses a Nexus Service](/develop/go/nexus#develop-caller-workflow-nexus-service) -- [Make Nexus calls across Namespaces with a dev Server](/develop/go/nexus#nexus-calls-across-namespaces-dev-server) -- [Make Nexus calls across Namespaces in Temporal Cloud](/develop/go/nexus#nexus-calls-across-namespaces-temporal-cloud) - -## [Durable Timers](/develop/go/timers) - -Use Timers to make a Workflow Execution pause or "sleep" for seconds, minutes, days, months, or years. - -- [Set a Timer](/develop/go/timers) - -## [Child Workflows](/develop/go/child-workflows) - -Explore how to spawn a Child Workflow Execution and handle Child Workflow Events. - -- [How to start a Child Workflow Execution](/develop/go/child-workflows#child-workflows) - -## [Continue-As-New](/develop/go/continue-as-new) - -Continue the Workflow Execution with a new Workflow Execution using the same Workflow ID. - -- [How to Continue-As-New](/develop/go/continue-as-new) - -## [Worker Sessions](/develop/go/sessions) - -Use Worker Session APIs. - -- [Enable Sessions for a Worker](/develop/go/sessions#enable-sessions) -- [Change the maximum concurrent Sessions of a Worker](/develop/go/sessions#max-concurrent-sessions) -- [Create a Worker Session](/develop/go/sessions#create-a-session) - -## [Side Effects](/develop/go/side-effects) - -Use Side Effects in Workflows. - -- [Side Effects](/develop/go/side-effects) - -## [Manage Namespaces](/develop/go/namespaces) - -Create and manage Namespaces. - -- [Register Namespaces](/develop/go/namespaces#register-namespace) -- [Manage Namespaces](/develop/go/namespaces#manage-namespaces) +# Go SDK resources + +
+
+
+

Technical Resources

+ +
+
+

Community

+ +
+
+
+ +
+
+

Core Application

+

Use the essential components of a Temporal Application (Workflows, Activities, and Workers) to build and run a Temporal application.

+
+ +
+

Temporal Client

+

Connect to a Temporal Service and start a Workflow Execution.

+
+ +
+

Testing

+

Set up the testing suite and test Workflows and Activities.

+
+ +
+

Failure Detection

+

Explore how your application can detect failures using timeouts and automatically attempt to mitigate them with retries.

+
+ +
+

Workflow message passing

+

Send messages to and read the state of Workflow Executions.

+
+ +
+

Interrupt a Workflow

+

Interrupt a Workflow Execution with a Cancel or Terminate action.

+
+ +
+

Asynchronous Activity completion

+

Complete Activities asynchronously.

+
+ +
+

Versioning

+

Change Workflow Definitions without causing non-deterministic behavior in running Workflows.

+
+ +
+

Observability

+

Configure and use the Temporal Observability APIs.

+
+ +
+

Debugging

+

Explore various ways to debug your application.

+
+ +
+

Schedules

+

Run Workflows on a schedule and delay the start of a Workflow.

+
+ +
+

Data encryption

+

Use compression, encryption, and other data handling by implementing custom converters and codecs.

+
+ +
+

Temporal Nexus

+

Connect durable executions within and across Namespaces using a Nexus Endpoint, a Nexus Service contract, and Nexus Operations.

+
+ +
+

Durable Timers

+

Use Timers to make a Workflow Execution pause or "sleep" for seconds, minutes, days, months, or years.

+
+ +
+

Child Workflows

+

Explore how to spawn a Child Workflow Execution and handle Child Workflow Events.

+
+ +
+

Continue-As-New

+

Continue the Workflow Execution with a new Workflow Execution using the same Workflow ID.

+
+ +
+

Worker Sessions

+

Use Worker Session APIs.

+
+ +
+

Side Effects

+

Use Side Effects in Workflows.

+
+ +
+

Manage Namespaces

+

Create and manage Namespaces.

+
+ +
+

Multithreading

+

Safely use multithreading with the Go SDK.

+
+
diff --git a/docs/develop/index.mdx b/docs/develop/index.mdx index 37ebc77f56..916f295243 100644 --- a/docs/develop/index.mdx +++ b/docs/develop/index.mdx @@ -3,18 +3,258 @@ id: index title: Develop durable applications with Temporal SDKs description: Discover comprehensive Temporal SDK feature guides and API references. Enhance your Temporal Application development with Ruby, Go, Java, PHP, Python, TypeScript, and .NET. sidebar_label: Development +hide_table_of_contents: true --- -import { SdkLogos } from '@site/src/components'; +import { SdkLogos } from '@site/src/components/elements/SdkLogos'; -The Temporal SDK developer guides provide a comprehensive overview of the structures, primitives, and features used in [Temporal Application](/temporal#temporal-application) development. +## 100% Open Source - +Temporal SDKs provide the foundation for building reliable distributed applications. +Each SDK is designed to help you implement durable Workflows, Activities, and Workers with native language support and comprehensive tooling. -- Go SDK [developer guide](/develop/go) and [API reference](http://t.mp/go-api) -- Java SDK [developer guide](/develop/java) and [API reference](http://t.mp/java-api) -- PHP SDK [developer guide](/develop/php) and [API reference](https://php.temporal.io/namespaces/temporal.html) -- Python SDK [developer guide](/develop/python) and [API reference](https://python.temporal.io) -- TypeScript SDK [developer guide](/develop/typescript) and [API reference](https://typescript.temporal.io) -- .NET SDK [developer guide](/develop/dotnet) and [API reference](https://dotnet.temporal.io/) -- Ruby SDK [developer guide](/develop/ruby) and [API reference](https://ruby.temporal.io/) +
+
+
+
+
+

Go SDK

+ Go SDK +
+ +
+
+
+

Java SDK

+ Java SDK +
+ +
+
+
+

TypeScript SDK

+ TypeScript SDK +
+ +
+
+
+

Python SDK

+ Python SDK +
+ +
+
+
+

PHP SDK

+ PHP SDK +
+ +
+
+
+

.NET SDK

+ .NET SDK +
+ +
+
+
+

Ruby SDK

+ Ruby SDK +
+ +
+
+
+
+ + diff --git a/docs/develop/java/index.mdx b/docs/develop/java/index.mdx index 72519450f9..661eef734c 100644 --- a/docs/develop/java/index.mdx +++ b/docs/develop/java/index.mdx @@ -11,160 +11,120 @@ tags: - Temporal SDKs --- -import * as Components from '@site/src/components'; - ![Java SDK Banner](/img/assets/banner-java-temporal.png) -:::info JAVA SPECIFIC RESOURCES -Build Temporal Applications with the Java SDK. - -**Temporal Java Technical Resources:** - -- [Java SDK Quickstart - Setup Guide](https://docs.temporal.io/develop/java/set-up-your-local-java) -- [Java API Documentation](https://javadoc.io/doc/io.temporal/temporal-sdk) -- [Java SDK Code Samples](https://github.com/temporalio/samples-java) -- [Java SDK GitHub](https://github.com/temporalio/sdk-java) -- [Temporal 101 in Java Free Course](https://learn.temporal.io/courses/temporal_101/java/) - -**Get Connected with the Temporal Java Community:** - -- [Temporal Java Community Slack](https://temporalio.slack.com/archives/CTT84KXK9) -- [Java SDK Forum](https://community.temporal.io/tag/java-sdk) - ::: - -## [Core application](/develop/java/core-application) - -Use the essential components of a Temporal Application (Workflows, Activities, and Workers) to build and run a Temporal application. - -- [How to develop a Workflow Definition in Java](/develop/java/core-application#develop-workflows) -- [How to develop a basic Activity](/develop/java/core-application#develop-activities) -- [How to start an Activity Execution](/develop/java/core-application#activity-execution) -- [How to develop a Worker Program in Java](/develop/java/core-application#run-a-dev-worker) - -## [Temporal Client](/develop/java/temporal-clients) - -Connect to a Temporal Service and start a Workflow Execution. - -- [Connect to a development Temporal Service](/develop/java/temporal-clients#connect-to-development-service) -- [Connect to a custom Namespace](/develop/java/temporal-clients#connect-to-custom-namespace) -- [Connect to Temporal Cloud](/develop/java/temporal-clients#connect-to-temporal-cloud) -- [Start a Workflow Execution](/develop/java/temporal-clients#start-workflow-execution) - -## [Testing](/develop/java/testing-suite) - -Set up the testing suite and test Workflows and Activities. - -- [Test frameworks](/develop/java/testing-suite#test-frameworks) -- [Test Activities](/develop/java/testing-suite#test-activities) -- [Testing Workflows](/develop/java/testing-suite#test-workflows) -- [How to Replay a Workflow Execution](/develop/java/testing-suite#replay) - -## [Failure detection](/develop/java/failure-detection) - -Explore how your application can detect failures using timeouts and automatically attempt to mitigate them with retries. - -- [Workflow timeouts](/develop/java/failure-detection#workflow-timeouts) -- [How to set Activity timeouts](/develop/java/failure-detection#activity-timeouts) -- [How to Heartbeat an Activity](/develop/java/failure-detection#activity-heartbeats) - -## [Workflow message passing](/develop/java/message-passing) - -Send messages to and read the state of Workflow Executions. - -- [How to develop with Signals](/develop/java/message-passing#signals) -- [How to develop with Queries](/develop/java/message-passing#queries) -- [What is a Dynamic Handler?](/develop/java/message-passing#dynamic-handler) -- [How to develop with Updates](/develop/java/message-passing#updates) - -## [Asynchronous Activity completion](/develop/java/asynchronous-activity-completion) - -Complete Activities asynchronously. - -- [How to asynchronously complete an Activity](/develop/java/asynchronous-activity-completion) - -## [Versioning](/develop/java/versioning) - -Change Workflow Definitions without causing non-deterministic behavior in running Workflows. - -- [Temporal Java SDK Versioning APIs](/develop/java/versioning#patching) - -## [Observability](/develop/java/observability) - -Configure and use the Temporal Observability APIs. - -- [How to emit metrics](/develop/java/observability#metrics) -- [How to setup Tracing](/develop/java/observability#tracing) -- [How to log from a Workflow](/develop/java/observability#logging) -- [How to use Visibility APIs](/develop/java/observability#visibility) - -## [Debugging](/develop/java/debugging) - -Explore various ways to debug your application. - -- [How to debug in a development environment](/develop/java/debugging#debug-in-a-development-environment) -- [How to debug in a production environment](/develop/java/debugging#debug-in-a-production-environment) - -## [Schedules](/develop/java/schedules) - -Run Workflows on a schedule and delay the start of a Workflow. - -- [How to Schedule a Workflow](/develop/java/schedules#schedule-a-workflow) -- [How to set a Cron Schedule in Java](/develop/java/schedules#cron-schedule) - -## [Data encryption](/develop/java/converters-and-encryption) - -Use compression, encryption, and other data handling by implementing custom converters and codecs. - -- [How to use a custom Payload Codec in Java](/develop/java/converters-and-encryption#custom-payload-codec) -- [How to use custom Payload conversion](/develop/java/converters-and-encryption#custom-payload-conversion) - -## Temporal Nexus - -The [Temporal Nexus](/develop/java/nexus) feature guide shows how to use Temporal Nexus to connect Durable Executions within and across Namespaces using a Nexus Endpoint, a Nexus Service contract, and Nexus Operations. - -- [Create a Nexus Endpoint to route requests from caller to handler](/develop/java/nexus#create-nexus-endpoint) -- [Define the Nexus Service contract](/develop/java/nexus#define-nexus-service-contract) -- [Develop a Nexus Service and Operation handlers](/develop/java/nexus#develop-nexus-service-operation-handlers) -- [Develop a caller Workflow that uses a Nexus Service](/develop/java/nexus#develop-caller-workflow-nexus-service) -- [Make Nexus calls across Namespaces with a development Server](/develop/java/nexus#nexus-calls-across-namespaces-dev-server) -- [Make Nexus calls across Namespaces in Temporal Cloud](/develop/java/nexus#nexus-calls-across-namespaces-temporal-cloud) - -## [Interrupt a Workflow feature guide](/develop/java/cancellation) - -Interrupt a Workflow Execution with a Cancel or Terminate action. - -- [Cancel a Workflow](/develop/java/cancellation#cancellation) -- [Terminate a Workflow](/develop/java/cancellation#termination) -- [Cancel an Activity from a Workflow](/develop/java/cancellation#cancel-activity) - -## [Child Workflows](/develop/java/child-workflows) - -Explore how to spawn a Child Workflow Execution and handle Child Workflow Events. - -- [Start a Child Workflow Execution](/develop/java/child-workflows#start-child-workflow) -- [Set a Parent Close Policy](/develop/java/child-workflows#parent-close-policy) - -## [Continue-As-New](/develop/java/continue-as-new) - -Continue the Workflow Execution with a new Workflow Execution using the same Workflow ID. - -- [Continue a Workflow as New](/develop/java/continue-as-new) - -## [Durable Timers](/develop/java/timers) - -Use Timers to make a Workflow Execution pause or "sleep" for seconds, minutes, days, months, or years. - -- [What is a Timer?](/develop/java/timers#timers) - -## [Side Effects](/develop/java/side-effects) - -Use Side Effects in Workflows. - -- [Side Effects](/develop/java/side-effects#side-effects) - -## [Manage Namespaces](/develop/java/namespaces) - -Create and manage Namespaces. - -- [Create a Namespace](/develop/java/namespaces#register-namespace) -- [Manage Namespaces](/develop/java/namespaces#manage-namespaces) +# Java SDK resources + +
+
+
+

Technical Resources

+ +
+
+

Community

+ +
+
+
+ +
+
+

Core application

+

Use the essential components of a Temporal Application (Workflows, Activities, and Workers) to build and run a Temporal application.

+
+ +
+

Temporal Client

+

Connect to a Temporal Service and start a Workflow Execution.

+
+ +
+

Testing

+

Set up the testing suite and test Workflows and Activities.

+
+ +
+

Failure detection

+

Explore how your application can detect failures using timeouts and automatically attempt to mitigate them with retries.

+
+ +
+

Workflow message passing

+

Send messages to and read the state of Workflow Executions.

+
+ +
+

Interrupt a Workflow

+

Interrupt a Workflow Execution with a Cancel or Terminate action.

+
+ +
+

Asynchronous Activity completion

+

Complete Activities asynchronously.

+
+ +
+

Versioning

+

Change Workflow Definitions without causing non-deterministic behavior in running Workflows.

+
+ +
+

Observability

+

Configure and use the Temporal Observability APIs.

+
+ +
+

Debugging

+

Explore various ways to debug your application.

+
+ +
+

Schedules

+

Run Workflows on a schedule and delay the start of a Workflow.

+
+ +
+

Data encryption

+

Use compression, encryption, and other data handling by implementing custom converters and codecs.

+
+ +
+

Temporal Nexus

+

Connect durable executions within and across Namespaces using a Nexus Endpoint, a Nexus Service contract, and Nexus Operations.

+
+ +
+

Durable Timers

+

Use Timers to make a Workflow Execution pause or "sleep" for seconds, minutes, days, months, or years.

+
+ +
+

Child Workflows

+

Explore how to spawn a Child Workflow Execution and handle Child Workflow Events.

+
+ +
+

Continue-As-New

+

Continue the Workflow Execution with a new Workflow Execution using the same Workflow ID.

+
+ +
+

Side Effects

+

Use Side Effects in Workflows.

+
+ +
+

Manage Namespaces

+

Create and manage Namespaces.

+
+
diff --git a/docs/develop/php/index.mdx b/docs/develop/php/index.mdx index e1ab5c5a24..0095f9258b 100644 --- a/docs/develop/php/index.mdx +++ b/docs/develop/php/index.mdx @@ -11,129 +11,113 @@ tags: - Temporal SDKs --- -import * as Components from '@site/src/components'; - ![PHP SDK Banner](/img/assets/banner-php-temporal.png) -:::info PHP SPECIFIC RESOURCES -Build Temporal Applications with the PHP SDK. - -**Temporal PHP Technical Resources:** - -- [PHP API Documentation](https://php.temporal.io) -- [PHP SDK Code Samples](https://github.com/temporalio/samples-php) -- [PHP SDK GitHub](https://github.com/temporalio/sdk-php) - -**Get Connected with the Temporal PHP Community:** - -- [Temporal PHP Community Slack](https://temporalio.slack.com/archives/C01LK9FAMM0) -- [PHP SDK Forum](https://community.temporal.io/tag/php-sdk) - ::: - -## [Core Application](/develop/php/core-application) - -Use the essential components of a Temporal Application (Workflows, Activities, and Workers) to build and run a Temporal application. - -- [How to develop a basic Workflow](/develop/php/core-application#develop-workflows) -- [How to develop a basic Activity](/develop/php/core-application#develop-activities) -- [How to start an Activity Execution](/develop/php/core-application#activity-execution) -- [How to run Worker Processes](/develop/php/core-application#run-a-dev-worker) - -## [Temporal Client](/develop/php/temporal-clients) - -Connect to a Temporal Service and start a Workflow Execution. - -- [How to connect a Temporal Client to a Temporal Service](/develop/php/temporal-clients#connect-to-a-dev-cluster) -- [How to connect a Temporal Client to a Temporal Cloud](/develop/php/temporal-clients#connect-to-temporal-cloud) -- [How to start a Workflow Execution](/develop/php/temporal-clients#start-workflow-execution) -- [Advanced connection options](/develop/php/temporal-clients#advanced-connection-options) - -## [Testing](/develop/php/testing-suite) - -Set up the testing suite to test Workflows and Activities. - -- [Testing Activities](/develop/php/testing-suite#test-activities) -- [Testing Workflows](/develop/php/testing-suite#test-workflows) -- [How to Replay a Workflow Execution](/develop/php/testing-suite#replay) - -## [Failure detection](/develop/php/failure-detection) - -Explore how your application can detect failures using timeouts and automatically attempt to mitigate them with retries. - -- [Workflow timeouts](/develop/php/failure-detection#workflow-timeouts) -- [How to set Activity timeouts](/develop/php/failure-detection#activity-timeouts) -- [How to Heartbeat an Activity](/develop/php/failure-detection#activity-heartbeats) - -## [Workflow message passing](/develop/php/message-passing) - -Send messages to read the state of Workflow Executions. - -- [How to develop with Signals](/develop/php/message-passing#signals) -- [How to develop with Queries](/develop/php/message-passing#queries) -- [How to develop with Updates](/develop/php/message-passing#updates) -- [Message handler patterns](/develop/php/message-passing#message-handler-patterns) -- [Message handler troubleshooting](/develop/php/message-passing#message-handler-troubleshooting) -- [How to develop with Dynamic Handlers](/develop/php/message-passing#dynamic-handler) - -## [Interrupt a Workflow feature guide](/develop/php/cancellation) - -Interrupt a Workflow Execution with a Cancel or Terminate action. - -- [Cancel an Activity from a Workflow](/develop/php/cancellation#cancel-an-activity) - -## [Versioning](/develop/php/versioning) - -The PHP SDK [Versioning developer guide](/develop/php/versioning) shows how to Change Workflow Definitions without causing non-deterministic behavior in running Workflows. - -- [How to use the PHP SDK Patching API](/develop/php/versioning#php-sdk-patching-api): Patching Workflows using the PHP SDK. -- [Sanity checking](/develop/php/versioning#runtime-checking) - -## [Asynchronous Activity Completion](/develop/php/asynchronous-activity-completion) - -Complete Activities asynchronously. - -- [How to asynchronously complete an Activity](/develop/php/asynchronous-activity-completion#asynchronous-activity-completion) - -## [Observability](/develop/php/observability) - -Configure and use the Temporal Observability APIs. - -- [How to log from a Workflow](/develop/php/observability#logging) -- [How to use Visibility APIs](/develop/php/observability#visibility) - -## [Debugging](/develop/php/debugging) - -Explore various ways to debug your application. - -- [Debugging](/develop/php/debugging#debug) - -## [Schedules](/develop/php/schedules) - -Run Workflows on a schedule and delay the start of a Workflow. - -- [How to use Start Delay](/develop/php/schedules#start-delay) -- [How to use Temporal Cron Jobs](/develop/php/schedules#temporal-cron-jobs) - -## [Durable Timers](/develop/php/timers) - -Use Timers to make a Workflow Execution pause or "sleep" for seconds, minutes, days, months, or years. - -- [What is a Timer?](/develop/php/timers#timers) - -## [Child Workflows](/develop/php/child-workflows) - -Explore how to spawn a Child Workflow Execution and handle Child Workflow Events. - -- [How to start a Child Workflow Execution](/develop/php/child-workflows#child-workflows) - -## [Continue-As-New](/develop/php/continue-as-new) - -Continue the Workflow Execution with a new Workflow Execution using the same Workflow ID. - -- [How to Continue-As-New](/develop/php/continue-as-new) - -## [Side Effects](/develop/php/side-effects) - -Use Side Effects in Workflows. - -- [How to use Side Effects in PHP](/develop/php/side-effects#side-effects) +# PHP SDK resources + +
+
+
+

Technical Resources

+ +
+
+

Community

+ +
+
+
+ +
+
+

Core Application

+

Use the essential components of a Temporal Application (Workflows, Activities, and Workers) to build and run a Temporal application.

+
+ +
+

Temporal Client

+

Connect to a Temporal Service and start a Workflow Execution.

+
+ +
+

Testing

+

Set up the testing suite and test Workflows and Activities.

+
+ +
+

Failure detection

+

Explore how your application can detect failures using timeouts and automatically attempt to mitigate them with retries.

+
+ +
+

Workflow message passing

+

Send messages to and read the state of Workflow Executions.

+
+ +
+

Interrupt a Workflow

+

Interrupt a Workflow Execution with a Cancel or Terminate action.

+
+ +
+

Asynchronous Activity completion

+

Complete Activities asynchronously.

+
+ +
+

Versioning

+

Change Workflow Definitions without causing non-deterministic behavior in running Workflows.

+
+ +
+

Observability

+

Configure and use the Temporal Observability APIs.

+
+ +
+

Debugging

+

Explore various ways to debug your application.

+
+ +
+

Schedules

+

Run Workflows on a schedule and delay the start of a Workflow.

+
+ +
+

Data encryption

+

Use compression, encryption, and other data handling by implementing custom converters and codecs.

+
+ +
+

Durable Timers

+

Use Timers to make a Workflow Execution pause or "sleep" for seconds, minutes, days, months, or years.

+
+ +
+

Child Workflows

+

Explore how to spawn a Child Workflow Execution and handle Child Workflow Events.

+
+ +
+

Continue-As-New

+

Continue the Workflow Execution with a new Workflow Execution using the same Workflow ID.

+
+ +
+

Side Effects

+

Use Side Effects in Workflows.

+
+ +
+

Manage Namespaces

+

Create and manage Namespaces.

+
+
diff --git a/docs/develop/python/index.mdx b/docs/develop/python/index.mdx index 918318b60b..676bc3d69c 100644 --- a/docs/develop/python/index.mdx +++ b/docs/develop/python/index.mdx @@ -11,150 +11,120 @@ tags: - Temporal SDKs --- -import * as Components from '@site/src/components'; - ![Python SDK Banner](/img/assets/banner-python-temporal.png) -:::info PYTHON SPECIFIC RESOURCES -Build Temporal Applications with the Python SDK. - -**Temporal Python Technical Resources:** - -- [Python SDK Quickstart - Setup Guide](https://docs.temporal.io/develop/python/set-up-your-local-python) -- [Python API Documentation](https://python.temporal.io) -- [Python SDK Code Samples](https://github.com/temporalio/samples-python) -- [Python SDK Github](https://github.com/temporalio/sdk-python) -- [Temporal 101 in Python Free Course](https://learn.temporal.io/courses/temporal_101/python/) - -**Get Connected with the Temporal Python Community:** - -- [Temporal Python Community Slack](https://app.slack.com/client/TNWA8QCGZ) -- [Python SDK Forum](https://community.temporal.io/tag/python-sdk) - ::: - -## [Core Application](/develop/python/core-application) - -Use the essential components of a Temporal Application (Workflows, Activities, and Workers) to build and run a Temporal application. - -- [Develop a Basic Workflow](/develop/python/core-application#develop-workflows) -- [Develop a Basic Activity](/develop/python/core-application#develop-activities) -- [Start an Activity Execution](/develop/python/core-application#activity-execution) -- [Run Worker Processes](/develop/python/core-application#run-a-dev-worker) - -## [Temporal Client](/develop/python/temporal-clients) - -Connect to a Temporal Service and start a Workflow Execution. - -- [Connect to Development Temporal Service](/develop/python/temporal-clients#connect-to-development-service) -- [Connect a Temporal Client to a Temporal Service](/develop/python/temporal-clients#connect-to-a-dev-cluster) -- [Connect to Temporal Cloud](/develop/python/temporal-clients#connect-to-temporal-cloud) -- [Start a Workflow Execution](/develop/python/temporal-clients#start-workflow-execution) - -## [Python SDK Sandbox](/develop/python/python-sdk-sandbox) - -Use third-party Python modules without non-deterministic behavior. - -## [Python SDK sync vs. async implementations](/develop/python/python-sdk-sync-vs-async) - -Implement synchronous or asynchronous Activities. - -## [Testing](/develop/python/testing-suite) - -Set up the testing suite and test Workflows and Activities. - -- [Test Frameworks](/develop/python/testing-suite#test-frameworks) -- [Testing Activities](/develop/python/testing-suite#test-activities) -- [Testing Workflows](/develop/python/testing-suite#test-workflows) -- [How to Replay a Workflow Execution](/develop/python/testing-suite#replay) - -## [Failure detection](/develop/python/failure-detection) - -Explore how your application can detect failures using timeouts and automatically attempt to mitigate them with retries. - -- [Workflow Timeouts](/develop/python/failure-detection#workflow-timeouts) -- [Set Activity Timeouts](/develop/python/failure-detection#activity-timeouts) -- [Heartbeat an Activity](/develop/python/failure-detection#activity-heartbeats) - -## [Workflow message passing](/develop/python/message-passing) - -Send messages to and read the state of Workflow Executions. - -- [Develop with Signals](/develop/python/message-passing#signals) -- [Develop with Queries](/develop/python/message-passing#queries) -- [Develop with Updates](/develop/python/message-passing#updates) -- [What is a Dynamic Handler](/develop/python/message-passing#dynamic-handler) - -## [Interrupt a Workflow feature guide](/develop/python/cancellation) - -Interrupt a Workflow Execution with a Cancel or Terminate action. - -- [Cancel a Workflow](/develop/python/cancellation#cancellation) -- [Terminate a Workflow](/develop/python/cancellation#termination) -- [Cancel an Activity from a Workflow](/develop/python/cancellation#cancel-activity) - -## [Asynchronous Activity completion](/develop/python/asynchronous-activity-completion) - -Complete Activities asynchronously. - -- [Asynchronously Complete an Activity](/develop/python/asynchronous-activity-completion) - -## [Versioning](/develop/python/versioning) - -Change Workflow Definitions without causing non-deterministic behavior in running Workflows. - -- [Introduction to Versioning](/develop/python/versioning) -- [How to Use the Patching API](/develop/python/versioning#patching) - -## [Observability](/develop/python/observability) - -Configure and use the Temporal Observability APIs. - -- [Emit Metrics](/develop/python/observability#metrics) -- [Set up tracing](/develop/python/observability#tracing) -- [Log from a Workflow](/develop/python/observability#logging) -- [Use Visibility APIs](/develop/python/observability#visibility) - -## [Debugging](/develop/python/debugging) - -Explore various ways to debug your application. - -- [Debugging](/develop/python/debugging) - -## [Schedules](/develop/python/schedules) - -Run Workflows on a schedule and delay the start of a Workflow. - -- [Schedule a Workflow](/develop/python/schedules#schedule-a-workflow) -- [Temporal Cron Jobs](/develop/python/schedules#temporal-cron-jobs) -- [Start Delay](/develop/python/schedules#start-delay) - -## [Data encryption](/develop/python/converters-and-encryption) - -Use compression, encryption, and other data handling by implementing custom converters and codecs. - -- [Custom Payload Codec](/develop/python/converters-and-encryption#custom-payload-codec) -- [Payload Conversion](/develop/python/converters-and-encryption#payload-conversion) - -## [Durable Timers](/develop/python/timers) - -Use Timers to make a Workflow Execution pause or "sleep" for seconds, minutes, days, months, or years. - -- [Sleep](/develop/python/timers) - -## [Child Workflows](/develop/python/child-workflows) - -Explore how to spawn a Child Workflow Execution and handle Child Workflow Events. - -- [Start a Child Workflow Execution](/develop/python/child-workflows) - -## [Continue-As-New](/develop/python/continue-as-new) - -Continue the Workflow Execution with a new Workflow Execution using the same Workflow ID. - -- [Continue-As-New](/develop/python/continue-as-new) - -## [Interceptors](/develop/python/interceptors) - -Manage inbound and outbound SDK calls, enhance tracing, and add authorization to your Workflows and Activities. - -- [Interceptors](/develop/python/interceptors) +# Python SDK resources + +
+
+
+

Technical Resources

+ +
+
+

Community

+ +
+
+
+ +
+
+

Core Application

+

Use the essential components of a Temporal Application (Workflows, Activities, and Workers) to build and run a Temporal application.

+
+ +
+

Temporal Client

+

Connect to a Temporal Service and start a Workflow Execution.

+
+ +
+

Testing

+

Set up the testing suite and test Workflows and Activities.

+
+ +
+

Failure detection

+

Explore how your application can detect failures using timeouts and automatically attempt to mitigate them with retries.

+
+ +
+

Workflow message passing

+

Send messages to and read the state of Workflow Executions.

+
+ +
+

Interrupt a Workflow

+

Interrupt a Workflow Execution with a Cancel or Terminate action.

+
+ +
+

Asynchronous Activity completion

+

Complete Activities asynchronously.

+
+ +
+

Versioning

+

Change Workflow Definitions without causing non-deterministic behavior in running Workflows.

+
+ +
+

Observability

+

Configure and use the Temporal Observability APIs.

+
+ +
+

Debugging

+

Explore various ways to debug your application.

+
+ +
+

Schedules

+

Run Workflows on a schedule and delay the start of a Workflow.

+
+ +
+

Data encryption

+

Use compression, encryption, and other data handling by implementing custom converters and codecs.

+
+ +
+

Temporal Nexus

+

Connect durable executions within and across Namespaces using a Nexus Endpoint, a Nexus Service contract, and Nexus Operations.

+
+ +
+

Durable Timers

+

Use Timers to make a Workflow Execution pause or "sleep" for seconds, minutes, days, months, or years.

+
+ +
+

Child Workflows

+

Explore how to spawn a Child Workflow Execution and handle Child Workflow Events.

+
+ +
+

Continue-As-New

+

Continue the Workflow Execution with a new Workflow Execution using the same Workflow ID.

+
+ +
+

Side Effects

+

Use Side Effects in Workflows.

+
+ +
+

Manage Namespaces

+

Create and manage Namespaces.

+
+
diff --git a/docs/develop/typescript/index.mdx b/docs/develop/typescript/index.mdx index 1486685249..b84604584c 100644 --- a/docs/develop/typescript/index.mdx +++ b/docs/develop/typescript/index.mdx @@ -11,138 +11,120 @@ tags: - Temporal SDKs --- -import * as Components from '@site/src/components'; - ![TypeScript SDK Banner](/img/assets/banner-typescript-temporal.png) -:::info TYPESCRIPT SPECIFIC RESOURCES -Build Temporal Applications with the TypeScript SDK. - -**Temporal TypeScript Technical Resources:** - -- [TypeScript SDK Quickstart - Setup Guide](https://docs.temporal.io/develop/typescript/set-up-your-local-typescript) -- [TypeScript API Documentation](https://typescript.temporal.io) -- [TypeScript SDK Code Samples](https://github.com/temporalio/samples-typescript) -- [TypeScript SDK GitHub](https://github.com/temporalio/sdk-typescript) -- [Temporal 101 in TypeScript Free Course](https://learn.temporal.io/courses/temporal_101/typescript/) - -**Get Connected with the Temporal TypeScript Community:** - -- [Temporal TypeScript Community Slack](https://temporalio.slack.com/archives/C01DKSMU94L) -- [TypeScript SDK Forum](https://community.temporal.io/tag/typescript-sdk) - ::: - -## [Core application](/develop/typescript/core-application) - -Use the essential components of a Temporal Application (Workflows, Activities, and Workers) to build and run a Temporal application. - -- [Develop a Basic Workflow](/develop/typescript/core-application#develop-workflows) -- [Develop a Basic Activity](/develop/typescript/core-application#develop-activities) -- [Start an Activity Execution](/develop/typescript/core-application#activity-execution) -- [Run Worker Processes](/develop/typescript/core-application#run-a-dev-worker) - -## [Temporal Client](/develop/typescript/temporal-clients) - -Connect to a Temporal Service and start a Workflow Execution. - -- [Connect to Development Temporal Service](/develop/typescript/temporal-clients#connect-to-development-service) -- [Connect to Temporal Cloud](/develop/typescript/temporal-clients#connect-to-temporal-cloud) -- [Start a Workflow Execution](/develop/typescript/temporal-clients#start-workflow-execution) - -## [Testing](/develop/typescript/testing-suite) - -Set up the testing suite and test Workflows and Activities. - -- [Test Frameworks](/develop/typescript/testing-suite#test-frameworks) -- [Testing Activities](/develop/typescript/testing-suite#test-activities) -- [Testing Workflows](/develop/typescript/testing-suite#test-workflows) -- [How to Replay a Workflow Execution](/develop/typescript/testing-suite#replay) - -## [Failure detection](/develop/typescript/failure-detection) - -Explore how your application can detect failures using timeouts and automatically attempt to mitigate them with retries. - -- [Workflow Timeouts](/develop/typescript/failure-detection#workflow-timeouts) -- [Set Activity Timeouts](/develop/typescript/failure-detection#activity-timeouts) -- [Heartbeat an Activity](/develop/typescript/failure-detection#activity-heartbeats) - -## [Workflow message passing](/develop/typescript/message-passing) - -Send messages to and read the state of Workflow Executions. - -- [Develop with Signals](/develop/typescript/message-passing#signals) -- [Develop with Queries](/develop/typescript/message-passing#queries) -- [What is a Dynamic Handler](/develop/typescript/message-passing#dynamic-handler) - -## [Interrupt a Workflow feature guide](/develop/typescript/cancellation) - -Interrupt a Workflow Execution with a Cancel or Terminate action. - -- [Cancellation scopes in Typescript](/develop/typescript/cancellation#cancellation-scopes) - -## [Asynchronous Activity Completion](/develop/typescript/asynchronous-activity-completion) - -Complete Activities asynchronously. - -- [Asynchronously Complete an Activity](/develop/typescript/asynchronous-activity-completion) - -## [Versioning](/develop/typescript/versioning) - -Change Workflow Definitions without causing non-deterministic behavior in running Workflows. - -- [Introduction to Versioning](/develop/typescript/versioning) -- [How to Use the Patching API](/develop/typescript/versioning#patching) - -## [Observability](/develop/typescript/observability) - -Configure and use the Temporal Observability APIs. - -- [Emit Metrics](/develop/typescript/observability#metrics) -- [Setup Tracing](/develop/typescript/observability#tracing) -- [Log from a Workflow](/develop/typescript/observability#logging) -- [Use Visibility APIs](/develop/typescript/observability#visibility) - -## [Debugging](/develop/typescript/debugging) - -Explore various ways to debug your application. - -- [Debugging](/develop/typescript/debugging) - -## [Schedules](/develop/typescript/schedules) - -Run Workflows on a schedule and delay the start of a Workflow. - -- [Schedule a Workflow](/develop/typescript/schedules#schedule-a-workflow) -- [Temporal Cron Jobs](/develop/typescript/schedules#temporal-cron-jobs) -- [How to use Start Delay](/develop/typescript/schedules#start-delay) - -## [Data encryption](/develop/typescript/converters-and-encryption) - -Use compression, encryption, and other data handling by implementing custom converters and codecs. - -- [Custom Payload Codec](/develop/typescript/converters-and-encryption#custom-payload-conversion) - -## [Durable Timers](/develop/typescript/timers) - -Use Timers to make a Workflow Execution pause or "sleep" for seconds, minutes, days, months, or years. - -- [What is a Timer](/develop/typescript/timers) - -## [Child Workflows](/develop/typescript/child-workflows) - -Explore how to spawn a Child Workflow Execution and handle Child Workflow Events. - -- [Start a Child Workflow Execution](/develop/typescript/child-workflows) - -## [Continue-As-New](/develop/typescript/continue-as-new) - -Continue the Workflow Execution with a new Workflow Execution using the same Workflow ID. - -- [Continue-As-New](/develop/typescript/continue-as-new) - -## [Interceptors](/develop/typescript/interceptors) - -Manage inbound and outbound SDK calls, enhance tracing, and add authorization to your Workflows and Activities. - -- [How to implement interceptors](/develop/typescript/interceptors#interceptors) -- [Register an interceptor](/develop/typescript/interceptors#register-interceptor) +# TypeScript SDK resources + +
+
+
+

Technical Resources

+ +
+
+

Community

+ +
+
+
+ +
+
+

Core application

+

Use the essential components of a Temporal Application (Workflows, Activities, and Workers) to build and run a Temporal application.

+
+ +
+

Temporal Client

+

Connect to a Temporal Service and start a Workflow Execution.

+
+ +
+

Testing

+

Set up the testing suite and test Workflows and Activities.

+
+ +
+

Failure detection

+

Explore how your application can detect failures using timeouts and automatically attempt to mitigate them with retries.

+
+ +
+

Workflow message passing

+

Send messages to and read the state of Workflow Executions.

+
+ +
+

Interrupt a Workflow

+

Interrupt a Workflow Execution with a Cancel or Terminate action.

+
+ +
+

Asynchronous Activity completion

+

Complete Activities asynchronously.

+
+ +
+

Versioning

+

Change Workflow Definitions without causing non-deterministic behavior in running Workflows.

+
+ +
+

Observability

+

Configure and use the Temporal Observability APIs.

+
+ +
+

Debugging

+

Explore various ways to debug your application.

+
+ +
+

Schedules

+

Run Workflows on a schedule and delay the start of a Workflow.

+
+ +
+

Data encryption

+

Use compression, encryption, and other data handling by implementing custom converters and codecs.

+
+ +
+

Temporal Nexus

+

Connect durable executions within and across Namespaces using a Nexus Endpoint, a Nexus Service contract, and Nexus Operations.

+
+ +
+

Durable Timers

+

Use Timers to make a Workflow Execution pause or "sleep" for seconds, minutes, days, months, or years.

+
+ +
+

Child Workflows

+

Explore how to spawn a Child Workflow Execution and handle Child Workflow Events.

+
+ +
+

Continue-As-New

+

Continue the Workflow Execution with a new Workflow Execution using the same Workflow ID.

+
+ +
+

Side Effects

+

Use Side Effects in Workflows.

+
+ +
+

Manage Namespaces

+

Create and manage Namespaces.

+
+
diff --git a/docs/encyclopedia/index.mdx b/docs/encyclopedia/index.mdx index 3c9b5df817..1e90ea996e 100644 --- a/docs/encyclopedia/index.mdx +++ b/docs/encyclopedia/index.mdx @@ -9,22 +9,82 @@ keywords: [Temporal](/evaluate/why-temporal) provides developers a suite of effective tools for building reliable applications at scale. -The following Encyclopedia pages describe the concepts, components, and features of Temporal in detail: +
+ The following Encyclopedia pages describe the concepts, components, and features of Temporal in detail: +
-- [Temporal](/temporal) -- [Temporal SDKs](/encyclopedia/temporal-sdks) -- [Workflows](/workflows) -- [Activities](/activities) -- [Detecting application failures](/encyclopedia/detecting-application-failures) -- [Workers](/workers) -- [Event History](/encyclopedia/event-history/) -- [Workflow Message Passing](/encyclopedia/workflow-message-passing/) -- [Child Workflows](/child-workflows) -- [Visibility](/visibility) -- [Temporal Service](/temporal-service) -- [Namespaces](/namespaces) -- [Temporal Nexus](/nexus) -- [Data conversion](/dataconversion) +
+
+

Temporal

+

Core concepts and overview of the Temporal platform for building reliable distributed applications.

+ Learn more → +
+
+

Temporal SDKs

+

Software development kits that provide APIs and tools for building Temporal applications.

+ Learn more → +
+
+

Workflows

+

Durable functions that coordinate Activities and maintain state across failures and restarts.

+ Learn more → +
+
+

Activities

+

Functions that interact with external systems and can be retried independently of Workflows.

+ Learn more → +
+
+

Detecting application failures

+

Mechanisms for identifying and handling failures in distributed Temporal applications.

+ Learn more → +
+
+

Workers

+

Processes that execute Workflow and Activity code, polling for tasks from the Temporal Service.

+ Learn more → +
+
+

Event History

+

Complete record of all events that occurred during a Workflow Execution's lifetime.

+ Learn more → +
+
+

Workflow Message Passing

+

Communication patterns including Signals, Queries, and Updates for Workflow interactions.

+ Learn more → +
+
+

Child Workflows

+

Workflows that are started by other Workflows, enabling composition and modularity.

+ Learn more → +
+
+

Visibility

+

Tools and APIs for observing and querying the state of Workflow Executions.

+ Learn more → +
+
+

Temporal Service

+

The backend service that manages Workflow state, task distribution, and durability.

+ Learn more → +
+
+

Namespaces

+

Logical isolation boundaries for organizing Workflows, Activities, and other resources.

+ Learn more → +
+
+

Temporal Nexus

+

Service framework for building and operating resilient service APIs with Temporal.

+ Learn more → +
+
+

Data conversion

+

Mechanisms for serializing, deserializing, and transforming data in Temporal applications.

+ Learn more → +
+
For a complete list of Temporal terms, see the [Glossary](/glossary). diff --git a/docs/evaluate/development-production-features/index.mdx b/docs/evaluate/development-production-features/index.mdx index 4fe83b65b0..33ab71846e 100644 --- a/docs/evaluate/development-production-features/index.mdx +++ b/docs/evaluate/development-production-features/index.mdx @@ -25,23 +25,87 @@ keywords: - queries --- -Through a Temporal SDK, Temporal provides a wide range of features that enable developers to build applications that serve a wide range of use cases. +import { CallToAction } from '@site/src/components/elements/CallToAction'; -- **[Core application primitives](/evaluate/development-production-features/core-application)**: Develop and run your application with Workflows, Activities, and Workers. -- **[Testing suite](/evaluate/development-production-features/testing-suite)**: Each Temporal SDK comes with a testing suite that enables developers to test their applications as they would any other. -- **[Scheduled Workflows](/evaluate/development-production-features/schedules)**: Start a business process at a specific time or on a given time interval. -- **[Interrupt a Workflow](/evaluate/development-production-features/interrupt-workflow)**: Cancel or terminate a business process (Workflow) that is already in progress and compensate for any steps already taken. -- **Runtime safeguards**: Prevent avoidable errors and issues from executing during runtime. -- **[Failure detection and mitigation](/evaluate/development-production-features/failure-detection)**: Detect failures with timeouts and configure automatic retries to mitigate them. -- **[Temporal Nexus](/evaluate/nexus)**: Connect Temporal Applications across (and within) isolated Namespaces for improved modularity, security, debugging, and fault isolation. Nexus supports cross-team, cross-domain, and multi-region use cases. -- **[Workflow message passing](/evaluate/development-production-features/workflow-message-passing)**: Build responsive applications that react to events at runtime and enable data retrieval from ongoing Workflows. -- **Versioning**: Support multiple versions of your business logic for long-running business processes. -- **[Observability](/evaluate/development-production-features/observability)**: List business process, view their state, and set up dashboards with metrics. -- **[Debugging](/evaluate/development-production-features/debugging)**: Surface errors and step through code to find issues. -- **[Data encryption](/evaluate/development-production-features/data-encryption)**: Transform data and protect the privacy of the users of your application. -- **[Throughput composability](/evaluate/development-production-features/throughput-composability)**: Breakup business processes by data streams, team ownership, or other organization factors. -- **[Cloud Automation](/evaluate/development-production-features/cloud-automation)**: Simplify cloud management and boost security with Temporal's Cloud Automation. -- **[Low Latency](/evaluate/development-production-features/low-latency)**: Making your applications faster, more performant, and more efficient. -- **[Multi-tenancy](/evaluate/development-production-features/multi-tenancy)**: Enhances efficiency and cost-effectiveness. +# Features -For detailed information on Temporal feature release stages and criteria, see this [Product Release Stages Guide](/evaluate/development-production-features/release-stages). +
+ The Temporal SDK provides a comprehensive suite of features designed to make building reliable, scalable applications easier than ever. Explore the full feature set below. +
+ +
+
+

Core application

+

Workflows, Activities, and Workers form the foundation of every Temporal application.

+ Learn more → +
+
+

Failure detection

+

Automatic detection and handling of failures, with timeouts and retry policies.

+ Learn more → +
+
+

Composability

+

Partition and compose business logic with Child Workflows for scalable throughput.

+ Learn more → +
+
+

Temporal Nexus

+

Connect applications and teams across namespaces for modular, secure architectures.

+ Learn more → +
+
+

Workflow message passing

+

Signals, Queries, and Updates enable dynamic, real-time interaction with running Workflows.

+ Learn more → +
+
+

Debugging

+

Powerful debugging tools, including replay debugging and state inspection.

+ Learn more → +
+
+

Interrupt a Workflow

+

Cancel or terminate a Workflow in progress and compensate for completed steps.

+ Learn more → +
+
+

Testing suite

+

Comprehensive testing tools for unit, integration, and end-to-end testing.

+ Learn more → +
+
+

Observability

+

Metrics, tracing, logging, and visibility into your application state.

+ Learn more → +
+
+

Data encryption

+

End-to-end encryption for your workflow data, ensuring sensitive information remains secure.

+ Learn more → +
+
+

Schedules

+

Schedule Workflows to run at specific times or intervals, with cron and custom logic support.

+ Learn more → +
+
+

Cloud automation

+

Automate cloud infrastructure management, including provisioning, scaling, and maintenance tasks.

+ Learn more → +
+
+

Low latency

+

Optimized for low-latency operations, ensuring your workflows run as quickly as possible.

+ Learn more → +
+
+

Multi-tenancy

+

Support for multiple tenants in a single Temporal cluster, with isolation and resource management.

+ Learn more → +
+
+ + + For detailed information about feature release stages and criteria, see our Product Release Stages Guide. + diff --git a/docs/evaluate/index.mdx b/docs/evaluate/index.mdx index e8a3d32665..19b933ccaa 100644 --- a/docs/evaluate/index.mdx +++ b/docs/evaluate/index.mdx @@ -2,25 +2,172 @@ id: index title: Evaluate Temporal sidebar_label: Evaluate -description: Temporal enhances distributed application development with clear code structure, fault-tolerance, and execution guarantees, trusted by thousands for mission-critical workloads. -collapsed: false -toc_max_heading_level: 4 -keywords: - - evaluate temporal - - temporal - - what is temporal - - introduction to temporal -tags: - - Temporal +description: Temporal is a developer-first, open source platform that ensures the successful execution of services and applications. --- -Temporal is designed to make developing distributed applications a delightful experience. -Developers benefit from a clear approach to structure their code and visibility into the state of their application. -Applications benefit from fault-tolerance and execution guarantees. -Thousands of companies of all sizes are leveraging Temporal's capabilities for both mission critical and standard workloads. +Temporal is a developer-first, open source platform that ensures the successful execution of services and applications. -- [Why Temporal](/evaluate/why-temporal) -- [Development and production features](/evaluate/development-production-features) -- [Use cases](/evaluate/use-cases-design-patterns) -- [Temporal Cloud](/cloud) -- [Security](/security) +## Who is Temporal for? + +- Backend engineers +- Platform engineers +- SRE/DevOps, infrastructure engineers +- Architects + +## What problems does Temporal solve? + +
+
+
+

Compensating transactions (saga pattern)

+

Handle failures across distributed services with compensating transactions

+
+
+ +
+
+

Human-in-the-loop

+

Integrate human decision making into automated processes

+
+
+ +
+
+

Long-running workflows

+

Build reliable processes that run for days or months

+
+
+ +
+
+

Microservice orchestration

+

Coordinate multiple services and handle failures gracefully

+
+
+ +
+
+

Reliable scheduling

+

Schedule and manage recurring tasks with guaranteed execution

+
+
+ +
+
+

Distributed transactions

+

Maintain data consistency across multiple services

+
+
+
+ + +## What programming languages are supported? + +Temporal allows you to develop with durable execution in different languages and multiple languages can be used to build single services, enabling polyglot development. + +
+ + Go SDK + + + Java SDK + + + TypeScript SDK + + + Python SDK + + + PHP SDK + + + .NET SDK + + + Ruby SDK + +
+ + +## Self-Hosted or Fully-Managed Service + +Temporal is fully open source. You can self-host the Temporal Service or use Temporal Cloud, our fully-managed SaaS offering. + + + +
+ +
+ Next: + Understanding Temporal +
+
→
+
+
+ + diff --git a/docs/index.mdx b/docs/index.mdx index 26a8cce630..3078239698 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -1,14 +1,829 @@ --- id: index -title: Temporal Platform Documentation -sidebar_label: Documentation Home -description: Explore Temporal's comprehensive documentation to build, scale, and manage reliable, fault-tolerant workflows with Workflow-as-Code solutions. +title: Temporal Documentation +sidebar_label: Home +description: Temporal is the open source platform that guarantees the successful execution of services and applications using the power of durable execution. +hide_table_of_contents: true --- - - Temporal Platform Documentation - +
+
+

Build applications that never fail

+

+ Temporal is an open-source platform for building reliable applications. + Temporal delivers crash-proof execution by guaranteeing that applications resume exactly where they left off after crashes, network failures, or infrastructure outages, whether that happens seconds, days, or even years later. +

+

+ Temporal enables developers to focus on building features that drive the business while ensuring that mission-critical processes such as order fulfillment, customer onboarding, and payment processing never fail or disappear, regardless of what goes wrong. +

+ + Quickstart → + +
-import { Intro } from '@site/src/components'; +
+ +
+ Code icon + Code icon +
+
+

Developer Guide

+

Dive into everything you need to know about building Temporal applications.

+
+
- + + + +
+ Rocket icon + Rocket icon +
+
+

Deploy your Workflows

+

Deploy your Temporal Application to your environment, Self-Host the Temporal Service or use Temporal Cloud.

+
+
+ + +
+ Education icon + Education icon +
+
+

Enroll in Temporal 101 and 102

+

Learn the fundamentals with comprehensive courses and become a Temporal expert.

+
+
+ + + + +
+ Cloud icon + Cloud icon +
+
+

Get started for free with $1000 in credits

+

Sign up for Temporal Cloud and let us host the Temporal Service for you.

+
+
+
+
+ + + +
+ +
+ Slack + Slack +
+

Slack Community

+

Join us on temporal.io/slack and chat with us directly.

+
+ + +
+ Book + Book +
+

Developer Forum

+

Ask questions, search solutions, and learn from other developers.

+
+ + +
+ Message + Message +
+

Ask AI

+

Try our Ask AI button for instant answers and personalized help.

+
+
+ + diff --git a/docs/security.mdx b/docs/security.mdx index 6afd52b099..c90f380163 100644 --- a/docs/security.mdx +++ b/docs/security.mdx @@ -11,20 +11,137 @@ tags: - Security --- -:::info Temporal Technologies' general company security +Find security information for your Temporal deployment, whether you're using Temporal Cloud or self-hosting. -For information about the general security habits of Temporal Technologies, see our [trust page](https://trust.temporal.io). +
+ +
+

Company Security

+

Learn about Temporal Technologies' general security practices, compliance certifications, and organizational security measures.

+
+
-::: + +
+

Temporal Cloud Security

+

Explore the security features of our SaaS offering, including mTLS, end-to-end encryption, and enterprise compliance.

+
+
-:::info Temporal Cloud (SaaS) security + +
+

Self-Hosted Security

+

Discover how to deploy and secure your own Temporal Platform infrastructure with production-ready best practices.

+
+
-For information about the security features of our SaaS offering, Temporal Cloud, see our [Cloud security page](/cloud/security). -::: + +
+

Temporal Cloud Security Whitepaper

+

Learn how Temporal Cloud provides provable security by design - orchestrating encrypted workflows without ever accessing your sensitive data.

+
+
+
-:::info Self-hosted security -For information about how to self-host a secure Temporal Platform, see the [Self-hosted security page](/self-hosted-guide/security). -::: + diff --git a/docusaurus.config.js b/docusaurus.config.js index 07ec6a7ea9..4a44d86095 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -27,7 +27,8 @@ module.exports = async function createConfigAsync() { clientModules: ["./src/client/remote-amplitude-analytics.js"], themeConfig: { colorMode: { - defaultMode: "light", + defaultMode: 'dark', + respectPrefersColorScheme: false, disableSwitch: false, // switchConfig: { // darkIcon: "🌙", diff --git a/sidebars.js b/sidebars.js index 1fd2d955d4..0ff4626f84 100644 --- a/sidebars.js +++ b/sidebars.js @@ -21,36 +21,23 @@ module.exports = { type: "doc", id: "evaluate/development-production-features/index", }, + items: [], + }, + { + type: "category", + label: "Product release stages", + collapsed: true, + link: { + type: "doc", + id: "evaluate/development-production-features/release-stages", + }, items: [ - "evaluate/development-production-features/core-application", - "evaluate/development-production-features/failure-detection", - "evaluate/development-production-features/throughput-composability", - "evaluate/development-production-features/nexus", - "evaluate/development-production-features/workflow-message-passing", - "evaluate/development-production-features/debugging", - "evaluate/development-production-features/interrupt-workflow", - "evaluate/development-production-features/testing-suite", - "evaluate/development-production-features/observability", - "evaluate/development-production-features/data-encryption", - "evaluate/development-production-features/schedules", - "evaluate/development-production-features/cloud-automation", - "evaluate/development-production-features/low-latency", - "evaluate/development-production-features/multi-tenancy", { - type: "category", - label: "Product release stages", - collapsed: true, - link: { - type: "doc", - id: "evaluate/development-production-features/release-stages", - }, - items: [ - { - type: "link", - label: "Change-log", - href: "https://temporal.io/change-log", - }, - ], + type: "link", + label: "Change-log", + + + href: "https://temporal.io/change-log", }, ], }, @@ -89,7 +76,6 @@ module.exports = { ], }, "security", - "evaluate/use-cases-design-patterns", ], }, { diff --git a/src/components/elements/features.module.css b/src/components/elements/features.module.css new file mode 100644 index 0000000000..5163f7b764 --- /dev/null +++ b/src/components/elements/features.module.css @@ -0,0 +1,91 @@ +.features-intro { + font-size: 1.2rem; + line-height: 1.6; + color: var(--ifm-color-emphasis-700); + margin-bottom: 2rem; + max-width: 800px; + } + + .feature-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 1.5rem; + margin-bottom: 3rem; + } + + .feature-card { + background: var(--ifm-card-background-color); + border-radius: 8px; + padding: 1.5rem; + transition: all 0.3s ease; + border: 1px solid var(--ifm-color-emphasis-200); + display: flex; + flex-direction: column; + } + + .feature-card:hover { + transform: translateY(-5px); + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); + border-color: var(--ifm-color-primary); + } + + .feature-icon { + font-size: 2rem; + margin-bottom: 1rem; + } + + .feature-card h3 { + font-size: 1.25rem; + margin-bottom: 0.75rem; + color: var(--ifm-color-emphasis-900); + } + + .feature-card p { + color: var(--ifm-color-emphasis-600); + margin-bottom: 1rem; + } + + .feature-link { + color: var(--ifm-color-primary); + text-decoration: none; + font-weight: 500; + display: inline-flex; + align-items: center; + transition: color 0.2s ease; + } + + .feature-link:hover { + color: var(--ifm-color-primary-darker); + text-decoration: none; + } + + .release-stages-note { + margin: 2rem 0; + padding: 1rem; + background: var(--ifm-color-emphasis-100); + border-radius: 8px; + font-size: 0.9rem; + color: var(--ifm-color-emphasis-700); + } + + /* Dark mode adjustments */ + [data-theme='dark'] .feature-card { + background: var(--ifm-background-color); + border-color: var(--ifm-color-emphasis-300); + } + + [data-theme='dark'] .feature-card:hover { + border-color: var(--ifm-color-primary); + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); + } + + /* Responsive adjustments */ + @media (max-width: 768px) { + .feature-grid { + grid-template-columns: 1fr; + } + + .features-intro { + font-size: 1.1rem; + } + } \ No newline at end of file diff --git a/src/components/experimental/TemporalDocsLanding.js b/src/components/experimental/TemporalDocsLanding.js new file mode 100644 index 0000000000..d269416b18 --- /dev/null +++ b/src/components/experimental/TemporalDocsLanding.js @@ -0,0 +1,302 @@ +import React, { useEffect } from "react"; +import { useColorMode } from "@docusaurus/theme-common"; +import "/src/css/landing.css"; + +const Icon = ({ children }) => ( + + {children} + +); + +const TemporalDocsLanding = () => { + const { setColorMode } = useColorMode(); + + // Set dark mode as default + useEffect(() => { + setColorMode('dark'); + }, []); + + const sections = [ + { + title: "Getting started", + icon: ( + + + + ), + items: [ + { title: "Understanding Temporal", link: "/concepts/what-is-temporal" }, + { title: "Why Temporal", link: "/concepts/why-temporal" }, + { title: "Setup your Local Dev Env", link: "https://learn.temporal.io/getting_started/" }, + { title: "Run your First Temporal App", link: "https://learn.temporal.io/getting_started/" }, + { title: "Build a Temporal App from Scratch", link: "https://learn.temporal.io/getting_started/" }, + { title: "Take a free course", link: "https://learn.temporal.io/courses/" } + ] + }, + { + title: "Develop", + icon: ( + + + + ), + items: [ + { title: "Go SDK Developer Guide", link: "/develop/go" }, + { title: "Java SDK Developer Guide", link: "/develop/java" }, + { title: "PHP SDK Developer Guide", link: "/develop/php" }, + { title: "Python SDK Developer Guide", link: "/develop/python" }, + { title: "TypeScript SDK Developer Guide", link: "/develop/typescript" }, + { title: ".NET SDK Developer Guide", link: "/develop/dotnet" }, + { title: "Ruby SDK README", link: "https://github.com/temporalio/sdk-ruby#readme" } + ] + }, + { + title: "Deploy", + icon: ( + + + + ), + items: [ + { title: "Self-Host", link: "https://docs.temporal.io/develop/" }, + { title: "Worker Performance", link: "https://docs.temporal.io/develop/worker-performance" }, + { title: "Production Checklist", link: "https://docs.temporal.io/self-hosted-guide/production-checklist" }, + { title: "Migrate to Temporal Cloud", link: "https://docs.temporal.io/production-deployments/migration" } + ] + }, + { + title: "Temporal Cloud", + icon: ( + + + + ), + items: [ + { title: "Account setup", link: "/cloud/account-setup" }, + { title: "User management", link: "/cloud/users" }, + { title: "Billing and cost", link: "/cloud/billing-and-cost" }, + { title: "Namespace management", link: "/cloud/namespaces" }, + { title: "Pricing", link: "/cloud/pricing" }, + { title: "API keys", link: "/cloud/api-keys" }, + { title: "Audit Logging", link: "/cloud/audit-logging" }, + { title: "Cloud Ops API", link: "/ops" }, + { title: "Temporal Nexus", link: "/cloud/nexus" }, + { title: "Export", link: "/cloud/export" } + ] + } + ]; + + const getUnstuckSection = { + title: "Get unstuck", + icon: ( + + + + + + ), + items: [ + { title: "Resource Library", link: "https://temporal.io/resources" }, + { title: "Ask in Stack", link: "https://t.mp/slack" }, + { title: "Post in Community Forum", link: "https://community.temporal.io" } + ] + }; + + const observabilitySection = { + title: "Monitor", + icon: ( + + + + + ), + items: [ + { title: "Platform Metrics", link: "/references/cluster-metrics" }, + { title: "SDK Metrics", link: "/references/sdk-metrics" }, + { title: "Cloud Metrics", link: "/cloud/metrics" }, + { title: "Setup with Datadog", link: "/cloud/metrics/datadog" }, + { title: "Setup with Prometheus", link: "/cloud/metrics/prometheus-grafana" }, + { title: "Worker Health", link: "/production-deployment/cloud/worker-health" }, + { title: "Service Health", link: "/production-deployment/cloud/service-health" } + ] + }; + + const securitySection = { + title: "Secure", + icon: ( + + + + + + + ), + items: [ + { title: "Trust", link: "https://trust.temporal.io/" }, + { title: "Cloud Security", link: "/cloud/security" }, + { title: "Self-hosted Security", link: "/self-hosted-guide/security" } + ] + }; + + const tutorialsSection = { + title: "Tutorials", + icon: ( + + + + + + ), + items: [ + { title: "Getting Started", link: "https://learn.temporal.io/getting_started/" }, + { title: "Infrastructure Tutorials", link: "https://learn.temporal.io/tutorials/infrastructure/" }, + { title: "One-Click Order App in TypeScript and Next.js", link: "https://learn.temporal.io/tutorials/typescript/build-one-click-order-app-nextjs/" }, + { title: "Trip Booking App in Python", link: "https://learn.temporal.io/tutorials/python/trip-booking-app/" } + ] + }; + + const coursesSection = { + title: "Courses", + icon: ( + + + + ), + items: [ + { title: "Temporal 101: Introducing the Temporal Platform", link: "https://learn.temporal.io/courses/temporal_101/" }, + { title: "Temporal 102: Exploring Durable Execution", link: "https://learn.temporal.io/courses/temporal_102/" }, + { title: "Crafting an Error Handling Strategy", link: "https://learn.temporal.io/courses/errstrat/" }, + { title: "Introduction to Temporal Cloud", link: "https://learn.temporal.io/courses/intro_to_temporal_cloud/" } + ] + }; + + const examplesSection = { + title: "Examples", + icon: ( + + + + ), + items: [ + { title: "Code Exchange", link: "https://temporal.io/code-exchange" }, + { title: "Project Based Tutorials", link: "https://learn.temporal.io/tutorials/" }, + { title: "Example Applications", link: "https://learn.temporal.io/examples/" } + ] + }; + + return ( +
+
+
+ {sections.map((section, index) => ( +
+
+ {section.icon} +

{section.title}

+
+
+ {section.items.map((item, itemIndex) => ( + + {item.title} + + ))} +
+ {section.title === "Temporal Cloud" && ( + + Create an Account + + )} +
+ ))} +
+ +
+
+
+
+ {observabilitySection.icon} +

{observabilitySection.title}

+
+
+ {observabilitySection.items.map((item, index) => ( + + {item.title} + + ))} +
+
+
+
+ {securitySection.icon} +

{securitySection.title}

+
+
+ {securitySection.items.map((item, index) => ( + + {item.title} + + ))} +
+
+
+
+ {getUnstuckSection.icon} +

{getUnstuckSection.title}

+
+
+ {getUnstuckSection.items.map((item, index) => ( + + {item.title} + + ))} +
+
+
+
+ +
+

More ways to learn

+
+ {[tutorialsSection, coursesSection, examplesSection].map((section, index) => ( +
+
+ {section.icon} +

{section.title}

+
+
+ {section.items.map((item, itemIndex) => ( + + {item.title} + + ))} +
+
+ ))} +
+
+
+
+ ); +}; + +export default TemporalDocsLanding; \ No newline at end of file diff --git a/src/css/custom.css b/src/css/custom.css index 5dcb2591d8..7205a923b5 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -7,6 +7,101 @@ /* You can override the default Infima variables here. */ +/* Prevent theme flashing */ +html { + transition: none !important; +} + +html[data-theme] * { + transition: none !important; +} + +/* Re-enable transitions after initial load */ +html.loaded, +html.loaded * { + transition: all 0.2s ease !important; +} + +/* Remove all rounded corners globally, except code blocks */ +*:not(pre):not(code):not(.prism-code):not(.theme-code-block):not([class*="code"]):not([class*="highlight"]) { + border-radius: 0 !important; +} + +/* Specific overrides for common elements (excluding code) */ +.card, +.alert, +.badge, +.btn, +button, +input, +textarea, +select, +.navbar, +.footer, +.sidebar, +.menu, +.dropdown, +.modal, +.tooltip, +.popover, +.tab, +.pill, +.pagination, +.breadcrumb, +.progress, +.avatar, +.image, +img, +.thumbnail, +.well, +.panel, +.list-group-item, +.table, +.form-control, +.input-group, +.navbar-nav, +.nav-pills, +.nav-tabs, +.jumbotron, +.media { + border-radius: 0 !important; +} + +/* Allow rounded corners for code blocks */ +pre, +code, +.prism-code, +.theme-code-block, +.highlight, +[class*="code"], +[class*="highlight"] { + border-radius: 6px !important; +} + +/* Docusaurus specific elements (excluding code) */ +.theme-doc-sidebar-container, +.theme-doc-sidebar-menu, +.menu__link, +.navbar__item, +.navbar__link, +.dropdown__link, +.pagination-nav__link, +.admonition, +.alert, +.tabs, +.tab-item, +[class*="admonition"], +[class*="alert"], +[class*="badge"], +[class*="btn"], +[class*="card"], +[class*="menu"], +[class*="nav"], +[class*="tab"], +[class*="theme-"]:not([class*="code"]) { + border-radius: 0 !important; +} + :root { /* --ifm-color-primary: #f2633f; --ifm-color-primary-dark: #111827; */ @@ -19,7 +114,7 @@ /* --doc-sidebar-width: 275px !important; --ifm-link-hover-decoration: none; --ifm-link-hover-color: inherit; */ - --ifm-link-decoration: underline; + --ifm-link-decoration: none; --tag-background-color-light: #eee; --tag-background-color-dark: #444; --tag-text-color-light: #333; @@ -29,10 +124,11 @@ } html[data-theme="dark"] { - --ifm-color-primary: #bfdbfe; - --ifm-background-color: #141414; - --ifm-footer-background-color: #000000; - --ifm-navbar-background-color: #000000; + --ifm-color-primary: #4fddbf; + --ifm-color-primary-darker: #60A5FA; + --ifm-background-color: #161723; + --ifm-footer-background-color: #161723; + --ifm-navbar-background-color: #161723; --ifm-color: #f9fafb; --ifm-preview-text: #f9fafb; --ifm-link-color: #f9fafb; @@ -58,16 +154,19 @@ html[data-theme="dark"] { --ifm-badge-background-color: hsl(210deg, 15%, 20%); */ --ifm-card-background-color: #1a1a1a; /* --card-color: var(--ifm-color-primary-dark); */ - --docusaurus-highlighted-code-line-bg: rgb(57, 104, 77); + --docusaurus-highlighted-code-line-bg: #161723; --tag-background-color: var(--tag-background-color-dark); --tag-text-color: var(--tag-text-color-dark); } html[data-theme="light"] { --ifm-color-primary: #1d4ed8; - --ifm-background-color: #f9fafb; + --ifm-background-color: #ffffff; + --ifm-background-surface-color: #f8f9fa; --ifm-footer-background-color: #ffffff; --ifm-navbar-background-color: #ffffff; + --ifm-menu-color-background-active: #f8f9fa; + --ifm-menu-color-background-hover: #e9ecef; /* --ifm-color: var(--ifm-color-primary-dark); */ --ifm-link-color: #111827; --ifm-link-hover-color: var(--ifm-color-primary); @@ -75,18 +174,6 @@ html[data-theme="light"] { --alert--competency-background: #a8fcff; --alert--copycode-background: #e0cdfa; --alert--info-background: #ebeded; - /* --ifm-menu-color-active: var(--ifm-color-primary); - --ifm-navbar-link-hover-color: var(--ifm-color-primary); - --ifm-toc-link-color: var(--ifm-color-primary-dark); - --ifm-blockquote-color: #000000; - --ifm-color-emphasis-300: #505050; */ - /* --ifm-code-background: var(--ifm-color-primary-lightest); */ - /* --ifm-color-input-background: #ffffff; - /* --ifm-color: var(--ifm-color-primary-dark); - --ifm-background-color: rgb(249, 250, 251); - --ifm-footer-background-color: #ffffff; - --ifm-card-background-color: #ffffff; - --ifm-badge-background-color: rgba(239, 246, 255); */ --card-color: #ffffff; --docusaurus-highlighted-code-line-bg: rgb(57, 104, 77); --tag-background-color: var(--tag-background-color-light); @@ -99,8 +186,44 @@ html[data-theme="light"] { a, a:hover { - text-decoration: underline; - text-underline-offset: 2px; + text-decoration: none; +} + +/* Global link styling to match Learn More links */ +a { + color: var(--ifm-link-color); + transition: color 0.2s ease; + text-decoration: none !important; +} + +a:hover { + color: var(--ifm-link-hover-color); + text-decoration: none !important; +} + +/* Force remove underlines from all possible link selectors */ +a:link, +a:visited, +a:active, +a:focus { + text-decoration: none !important; +} + +/* Override Docusaurus theme classes */ +.theme-doc-markdown a, +.theme-doc-sidebar-item-link, +.theme-doc-breadcrumbs a, +.pagination-nav__link, +[class*="theme-"] a { + text-decoration: none !important; +} + +.theme-doc-markdown a:hover, +.theme-doc-sidebar-item-link:hover, +.theme-doc-breadcrumbs a:hover, +.pagination-nav__link:hover, +[class*="theme-"] a:hover { + text-decoration: none !important; } .alert { @@ -737,68 +860,6 @@ h1 { line-height: 120%; } -.main-card { - position: relative; - width: 100%; - border-radius: 20px; - border: 2px solid var(--ifm-link-color); - background-color: var(--ifm-background-color); - padding: 32px; - margin: 12px 0; - text-align: left; - z-index: 2; -} - -.main-card h1 { - font-family: Aeonik; - font-size: 24px; - font-style: normal; - font-weight: 400; - line-height: 110%; -} - -.main-card p { - font-family: Aeonik; - font-size: 16px; - font-style: normal; - font-weight: 400; - line-height: 120%; -} - -.w-third { - width: 1/3; -} - -.resource-card { - display: flex; - flex-direction: column; - justify-content: space-between; -} - -.resource-img { - border-radius: 9999px; - width: 2.5rem; - min-width: 2.5rem; - height: 2.5rem; - background: linear-gradient(255deg, #444ce7 0%, #b664ff 100%); -} - -.resource-card h1 { - font-size: 20px; - font-style: normal; - font-weight: 500; - line-height: 120%; -} - -.resource-card p { - margin: 0; -} - -.resource-card .author p { - font-size: 14px; - font-style: normal; - line-height: 120%; -} .community-card h1 { font-size: 24px; @@ -1022,7 +1083,14 @@ h1 { .navbar__link, .dropdown__link, .table-of-contents__link { - text-decoration: none; + text-decoration: none !important; +} + +.menu__link:hover, +.navbar__link:hover, +.dropdown__link:hover, +.table-of-contents__link:hover { + text-decoration: none !important; } .announcementBar_node_modules-\@docusaurus-theme-classic-lib-next-theme-AnnouncementBar-styles-module { @@ -1193,3 +1261,246 @@ code { z-index: 10; } +.features-intro { + font-size: 1.2rem; + line-height: 1.6; + color: var(--ifm-color-emphasis-700); + margin-bottom: 2rem; + max-width: 800px; +} + +.feature-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 1.5rem; + margin-bottom: 3rem; +} + +.feature-card { + display: flex; + flex-direction: column; + justify-content: space-between; + background: var(--ifm-card-background-color); + padding: 1.5rem; + transition: all 0.3s ease; + border: 1px solid var(--ifm-color-emphasis-200); + height: 100%; +} + +.feature-card:hover { + transform: translateY(-5px); + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); + border-color: var(--ifm-color-primary); +} + +.feature-card h3 { + font-size: 1.25rem; + margin-bottom: 0.75rem; + color: var(--ifm-color-emphasis-900); +} + +.feature-card p { + color: var(--ifm-color-emphasis-600); + margin-bottom: 0.5rem; + flex-grow: 1; +} + +.feature-link { + color: var(--ifm-color-primary); + text-decoration: none; + font-weight: 500; + display: inline-flex; + align-items: center; + transition: color 0.2s ease; +} + +.feature-link:hover { + color: var(--ifm-color-primary-darker); + text-decoration: none; +} + +@media (max-width: 768px) { + .feature-grid { + grid-template-columns: 1fr; + } + .features-intro { + font-size: 1.1rem; + } +} + +/* Pattern Grid for Introduction Page */ +.pattern-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1.5rem; + margin-bottom: 2rem; +} + +.pattern-card { + display: flex; + flex-direction: column; + background: var(--ifm-card-background-color); + padding: 1.5rem; + border: 1px solid var(--ifm-color-emphasis-200); + border-radius: 0; + text-decoration: none; + color: var(--ifm-color); +} + + +.pattern-content h3 { + font-size: 1.25rem; + font-weight: 500; + margin: 0 0 0.75rem 0; + color: var(--ifm-color); +} + +.pattern-content p { + font-size: 0.875rem; + margin: 0; + color: var(--ifm-color-emphasis-700); + line-height: 1.5; +} + +@media (max-width: 768px) { + .pattern-grid { + grid-template-columns: 1fr; + } + + .pattern-card { + padding: 1.25rem; + } + + .pattern-content h3 { + font-size: 1.1rem; + } +} + +/* CTA (Call to Action) styling for intro page */ +.cta-container { + margin-top: 3rem; + margin-bottom: 2rem; +} + +.cta-link { + display: flex; + align-items: center; + justify-content: space-between; + background: var(--ifm-card-background-color); + border: 1px solid var(--ifm-color-emphasis-200); + border-radius: 0; + padding: 1.5rem; + text-decoration: none; + color: var(--ifm-color); + transition: all 0.3s ease; + cursor: pointer; +} + +.cta-link:hover { + transform: translateY(-2px); + box-shadow: 0 8px 24px rgba(68, 76, 231, 0.2); + text-decoration: none; + color: var(--ifm-color); + border-color: var(--ifm-color-primary); +} + +.cta-content { + display: flex; + flex-direction: column; + gap: 0.25rem; +} + +.cta-prefix { + font-size: 0.875rem; + color: var(--ifm-color-emphasis-600); + font-weight: 500; +} + +.cta-title { + font-size: 1.25rem; + font-weight: 600; + color: var(--ifm-color); +} + +.cta-arrow { + font-size: 1.5rem; + color: var(--ifm-color-primary); + font-weight: bold; + transition: transform 0.2s ease; +} + +.cta-link:hover .cta-arrow { + transform: translateX(4px); +} + +@media (max-width: 768px) { + .cta-container { + margin-top: 2rem; + } + + .cta-link { + padding: 1.25rem; + } + + .cta-title { + font-size: 1.1rem; + } +} + +/* SDK Resources styling for developer guide landing pages */ +.sdk-resources-container { + background: var(--ifm-card-background-color); + border: 1px solid var(--ifm-color-emphasis-200); + border-radius: 0; + padding: 2rem; + margin: 2rem 0 3rem 0; +} + +.sdk-resources-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 3rem; +} + +.sdk-resources-column h2 { + font-size: 1.25rem; + font-weight: 600; + color: var(--ifm-color); + margin-bottom: 1rem; + margin-top: 0; +} + +.sdk-resources-column ul { + list-style: none; + padding: 0; + margin: 0; +} + +.sdk-resources-column li { + margin-bottom: 0.75rem; +} + +.sdk-resources-column a { + color: var(--ifm-link-color); + text-decoration: none; + font-size: 0.95rem; + transition: color 0.2s ease; +} + +.sdk-resources-column a:hover { + color: var(--ifm-link-hover-color); + text-decoration: none; +} + +@media (max-width: 768px) { + .sdk-resources-grid { + grid-template-columns: 1fr; + gap: 2rem; + } + + .sdk-resources-container { + padding: 1.5rem; + margin: 1.5rem 0 2rem 0; + } +} + diff --git a/src/css/landing.css b/src/css/landing.css new file mode 100644 index 0000000000..7ded051ca6 --- /dev/null +++ b/src/css/landing.css @@ -0,0 +1,406 @@ +/* Dark Mode (Default) */ +:root { + --background-color: #161723; + --text-color: #FFFFFF; + --card-background: #161723; + --card-hover: #161723; + --link-color: #CACBF9; + --link-hover-color: #FFFFFF; + --border-color: #30363D; + --section-gap: 1.5rem; + --card-padding: 1.25rem; + --heading-color: #FFFFFF; + --subtext-color: #8B949E; + --icon-background: #161723; + --icon-color: #3FB950; +} + +/* Light Mode */ +[data-theme="light"] { + --background-color: #FFFFFF; + --text-color: #111827; + --card-background: #FFFFFF; + --card-hover: #F9FAFB; + --link-color: #374151; + --link-hover-color: #111827; + --border-color: #E5E7EB; + --heading-color: #111827; + --subtext-color: #6B7280; + --icon-color: #3FB950; +} + +/* Global Styles */ +body { + background-color: var(--background-color); + margin: 0; + padding: 0; + font-family: "Aeonik", -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; +} + +/* Docs Landing Page Styles */ +.docs-landing { + background: var(--background-color); + color: var(--text-color); + min-height: 100vh; + padding: 0; + font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; +} + +.docs-landing-header { + background: var(--background-color); + color: var(--text-color); + padding: 0; + font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; +} + +.docs-landing-header .container { + max-width: 100%; + width: 1280px; + margin: 0 auto; + padding: 3rem 1.5rem 0; +} + +.docs-landing-header h1 { + font-size: 3rem; + font-weight: 300; + margin-bottom: 3rem; + letter-spacing: -0.5px; + color: var(--heading-color); +} + +.docs-landing-header .description-section { + margin-bottom: 3rem; +} + +.docs-landing-header .description-section h4 { + font-size: 1rem; + font-weight: 600; + color: var(--heading-color); + margin-bottom: 1rem; + letter-spacing: 0.5px; +} + +.docs-landing-header .description-section p { + font-size: 1.125rem; + line-height: 1.6; + color: var(--subtext-color); + margin-bottom: 0; +} + +.docs-landing-header .fixed-size-logo { + width: 300px; + height: auto; + display: block; + margin: 0 0 2rem 0; +} + +/* Responsive styles for header */ +@media (max-width: 768px) { + .docs-landing-header .container { + padding: 2rem 1rem 0; + } + + .docs-landing-header h1 { + font-size: 2rem; + margin-bottom: 2rem; + } + + .docs-landing-header .description-section { + margin-bottom: 2rem; + } + + .docs-landing-header .description-section h4 { + font-size: 0.9rem; + } + + .docs-landing-header .description-section p { + font-size: 1rem; + } + + .docs-landing-header .fixed-size-logo { + width: 250px; + } +} + +.docs-landing .container { + max-width: 100%; + width: 1280px; + margin: 0 auto; + padding: 3rem 1.5rem 0; +} + +/* Banner Image */ +.docs-landing img[alt="SDK Logo Banner"] { + width: 1280px; + max-width: 100%; + height: auto; + margin-bottom: 2rem; +} + +/* SDK Logos */ +.sdk-logos { + display: flex; + justify-content: center; + gap: 2rem; + margin: 2rem 0; + flex-wrap: wrap; +} + +.sdk-logos img { + height: 32px; + width: auto; +} + +/* Main Grid Layout */ +.main-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: var(--section-gap); + margin-bottom: 2.5rem; +} + +/* Secondary Grid Layout */ +.secondary-grid { + margin: 2.5rem 0; +} + +.section-row { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: var(--section-gap); + margin-bottom: var(--section-gap); +} + +/* Learning Section */ +.learning-section { + margin-top: 4rem; + padding-top: 2.5rem; +} + +.learning-section h1 { + text-align: left; + margin-bottom: 5rem; + color: var(--heading-color); + font-family: "Aeonik", sans-serif; + font-size: 3.75rem; + font-weight: 300; + letter-spacing: -0.025em; + line-height: 1.1; +} + +.learning-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1.5rem; +} + +/* Card Styles */ +.section-card { + background: var(--card-background); + border: 1px solid var(--border-color); + border-radius: 0; + padding: 1.5rem; + height: 100%; + transition: all 0.2s ease; + display: flex; + flex-direction: column; +} + +.section-card:hover { + background: var(--card-hover); + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); +} + +.section-header { + display: flex; + align-items: center; + gap: 1rem; + margin-bottom: 0.75rem; + padding-bottom: 0.75rem; +} + +.section-icon-wrapper { + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem; + height: 2.5rem; +} + +.section-icon { + stroke: var(--icon-color); + stroke-width: 2; + width: 1.5rem; + height: 1.5rem; +} + +.section-header h2 { + color: var(--heading-color); + font-family: "Aeonik", sans-serif; + font-size: 1.5rem; + font-weight: 300; + line-height: 1.1; + letter-spacing: 0; + margin: 0; +} + +/* Section Links */ +.section-links { + display: flex; + flex-direction: column; + gap: 1rem; + align-items: flex-start; +} + +.section-link { + color: var(--link-color); + font-family: "Aeonik", sans-serif; + font-size: 1rem; + font-weight: 300; + line-height: 1.1; + letter-spacing: 0; + text-decoration: none; + position: relative; + transition: all 0.3s ease; + width: fit-content; + display: inline-flex; +} + +.section-link:hover { + color: var(--link-hover-color); + text-decoration: underline; +} + +.section-link::after { + content: ''; + position: absolute; + width: 100%; + height: 1px; + bottom: -2px; + left: 0; + background-color: var(--link-hover-color); + transform: scaleX(0); + transform-origin: left; + transition: transform 0.3s ease; +} + +.section-link:hover::after { + transform: scaleX(1); +} + +/* Typography */ +.docs-landing h1 { + font-size: 2rem; + font-weight: 600; + color: var(--heading-color); + margin-bottom: 0.5rem; +} + +.docs-landing h2 { + font-size: 1.25rem; + font-weight: 600; + color: var(--heading-color); + margin: 0; +} + +.docs-landing p { + color: var(--subtext-color); + font-size: 0.875rem; + line-height: 1.5; + margin: 0; +} + +/* What is Temporal Section */ +.docs-landing h2[id="what-is-temporal"] { + font-size: 1.25rem; + margin-bottom: 0.5rem; + color: var(--heading-color); +} + +.docs-landing h2[id="what-is-temporal"] + p { + color: var(--subtext-color); + margin-bottom: 2.5rem; +} + +/* Get Started Button */ +.get-started-button { + display: inline-flex; + align-items: center; + margin-top: 1rem; + padding: 0.5rem 1rem; + background: linear-gradient(to right, #3FB950, #238636); + color: white; + text-decoration: none; + border-radius: 0.375rem; + font-size: 0.875rem; + font-weight: 500; + transition: opacity 0.2s; +} + +.get-started-button:hover { + opacity: 0.9; +} + +/* Responsive Design */ +@media (max-width: 1280px) { + .main-grid { + grid-template-columns: 1fr 1fr; + } +} + +@media (max-width: 1024px) { + .section-row { + grid-template-columns: repeat(2, 1fr); + } + + .section-row:last-child { + grid-template-columns: 1fr 1fr; + } + + .learning-grid { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (max-width: 768px) { + .main-grid { + grid-template-columns: 1fr; + } + + .section-row, + .section-row:last-child, + .learning-grid { + grid-template-columns: 1fr; + } + + .docs-landing .container { + padding: 0 1rem; + } +} + +/* Dark Mode Adjustments */ +[data-theme="dark"] .section-card { + background: var(--card-background); + border-color: var(--border-color); +} + +[data-theme="dark"] .section-header { + border-bottom-color: var(--border-color); +} + +[data-theme="dark"] .learning-section { + border-top-color: var(--border-color); +} + +.resource-img { + border-radius: 0; +} + +.cloud-button { + border-radius: 0; +} + +.highlight { + border-radius: 0; +} \ No newline at end of file diff --git a/static/img/icons/Book-dark.svg b/static/img/icons/Book-dark.svg new file mode 100644 index 0000000000..d227d20138 --- /dev/null +++ b/static/img/icons/Book-dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/img/icons/Book.svg b/static/img/icons/Book.svg new file mode 100644 index 0000000000..de746e6444 --- /dev/null +++ b/static/img/icons/Book.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/img/icons/Cloud-dark.svg b/static/img/icons/Cloud-dark.svg new file mode 100644 index 0000000000..2467bf6402 --- /dev/null +++ b/static/img/icons/Cloud-dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/img/icons/Cloud.svg b/static/img/icons/Cloud.svg new file mode 100644 index 0000000000..07918d443b --- /dev/null +++ b/static/img/icons/Cloud.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/img/icons/Code-dark.svg b/static/img/icons/Code-dark.svg new file mode 100644 index 0000000000..2d3dfe409c --- /dev/null +++ b/static/img/icons/Code-dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/img/icons/Code.svg b/static/img/icons/Code.svg new file mode 100644 index 0000000000..cea41909eb --- /dev/null +++ b/static/img/icons/Code.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/img/icons/Education-dark.svg b/static/img/icons/Education-dark.svg new file mode 100644 index 0000000000..c274ed2362 --- /dev/null +++ b/static/img/icons/Education-dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/img/icons/Education.svg b/static/img/icons/Education.svg new file mode 100644 index 0000000000..193c29ade1 --- /dev/null +++ b/static/img/icons/Education.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/img/icons/Lightning.png b/static/img/icons/Lightning.png new file mode 100644 index 0000000000..f3af49456f Binary files /dev/null and b/static/img/icons/Lightning.png differ diff --git a/static/img/icons/Message-dark.svg b/static/img/icons/Message-dark.svg new file mode 100644 index 0000000000..9860473822 --- /dev/null +++ b/static/img/icons/Message-dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/img/icons/Message.svg b/static/img/icons/Message.svg new file mode 100644 index 0000000000..034f2f7f0a --- /dev/null +++ b/static/img/icons/Message.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/img/icons/Rocket-dark.svg b/static/img/icons/Rocket-dark.svg new file mode 100644 index 0000000000..e0408fead2 --- /dev/null +++ b/static/img/icons/Rocket-dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/img/icons/Rocket.svg b/static/img/icons/Rocket.svg new file mode 100644 index 0000000000..661c4976c4 --- /dev/null +++ b/static/img/icons/Rocket.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/img/icons/Slack-dark.svg b/static/img/icons/Slack-dark.svg new file mode 100644 index 0000000000..535fab3798 --- /dev/null +++ b/static/img/icons/Slack-dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/img/icons/Slack.svg b/static/img/icons/Slack.svg new file mode 100644 index 0000000000..c460c09ba2 --- /dev/null +++ b/static/img/icons/Slack.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/img/sdks/svgs/sdk-box-logos/dotnet.svg b/static/img/sdks/svgs/sdk-box-logos/dotnet.svg new file mode 100644 index 0000000000..5116220593 --- /dev/null +++ b/static/img/sdks/svgs/sdk-box-logos/dotnet.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/static/img/sdks/svgs/sdk-box-logos/go.svg b/static/img/sdks/svgs/sdk-box-logos/go.svg new file mode 100644 index 0000000000..fdefe31b6d --- /dev/null +++ b/static/img/sdks/svgs/sdk-box-logos/go.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/static/img/sdks/svgs/sdk-box-logos/java.svg b/static/img/sdks/svgs/sdk-box-logos/java.svg new file mode 100644 index 0000000000..62d4525175 --- /dev/null +++ b/static/img/sdks/svgs/sdk-box-logos/java.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/img/sdks/svgs/sdk-box-logos/php.svg b/static/img/sdks/svgs/sdk-box-logos/php.svg new file mode 100644 index 0000000000..4a2c2e7d91 --- /dev/null +++ b/static/img/sdks/svgs/sdk-box-logos/php.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/img/sdks/svgs/sdk-box-logos/python.svg b/static/img/sdks/svgs/sdk-box-logos/python.svg new file mode 100644 index 0000000000..2d59a0af4c --- /dev/null +++ b/static/img/sdks/svgs/sdk-box-logos/python.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/img/sdks/svgs/sdk-box-logos/ruby.png b/static/img/sdks/svgs/sdk-box-logos/ruby.png new file mode 100644 index 0000000000..af1dc434d2 Binary files /dev/null and b/static/img/sdks/svgs/sdk-box-logos/ruby.png differ diff --git a/static/img/sdks/svgs/sdk-box-logos/ruby.svg b/static/img/sdks/svgs/sdk-box-logos/ruby.svg new file mode 100644 index 0000000000..b6b8d205db --- /dev/null +++ b/static/img/sdks/svgs/sdk-box-logos/ruby.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/static/img/sdks/svgs/sdk-box-logos/typescript.svg b/static/img/sdks/svgs/sdk-box-logos/typescript.svg new file mode 100644 index 0000000000..31c98dd6f5 --- /dev/null +++ b/static/img/sdks/svgs/sdk-box-logos/typescript.svg @@ -0,0 +1,4 @@ + + + +