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..67accad79c 100644 --- a/docs/develop/index.mdx +++ b/docs/develop/index.mdx @@ -5,16 +5,202 @@ description: Discover comprehensive Temporal SDK feature guides and API referenc sidebar_label: Development --- -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..76e1eb97f8 100644 --- a/docs/evaluate/index.mdx +++ b/docs/evaluate/index.mdx @@ -2,25 +2,137 @@ 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

+
+
+
+ +## How does Temporal work? + +Temporal provides durable execution for your applications through its unique architecture. Write your business logic as Workflows and Activities, deploy them to Workers, and let Temporal handle the rest. + +## 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..c5e873e625 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -1,14 +1,830 @@ --- 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

-import { Intro } from '@site/src/components'; + +

Temporal is an open source platform for building reliable applications. +Temporal provides crash proof execution by making sure that when crashes, network failures, or infrastructure outages occur, it guarantees that your applications pick up exactly where they left off, whether that is seconds, days, or even years later.

+ - +

Temporal lets you focus on building features that matter to your business while ensuring your critical processes like order fulfillment, customer onboarding, or payment processing never fail or get lost, no matter what goes wrong.

+ + + Quickstart → + +
+ +
+ + +
+ Code icon + Code icon +
+
+

Developer Guide

+

Dive into everything you need to know about building with Workflows.

+
+
+ + + + +
+ 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 AI for instant answers and personalized help.

+
+
+ + diff --git a/docs/security.mdx b/docs/security.mdx index 6afd52b099..360355ccda 100644 --- a/docs/security.mdx +++ b/docs/security.mdx @@ -11,20 +11,127 @@ 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). + 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..5fd8e224e5 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 { @@ -1022,7 +1145,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 +1323,255 @@ 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); + transition: all 0.3s ease; + cursor: pointer; +} + +.pattern-card: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); +} + +.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 @@ + + + +