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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 6 additions & 9 deletions docs/index.mdx
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
---
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 Docs
sidebar_label: Home
hide_table_of_contents: true
hide_title: true
---

<head>
<title>Temporal Platform Documentation</title>
</head>
import HomePageHero from '@site/src/components/elements/HomePageHero';

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

<Intro />
<HomePageHero />
166 changes: 166 additions & 0 deletions src/components/elements/HomePageHero.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
import React from 'react';
import useBaseUrl from '@docusaurus/useBaseUrl';
import { SdkLogosAsBlocks } from './SdkLogosAsBlocks';
import '../../css/homepage-hero.css';

const Icon = ({ src, alt, className, width, height }) => {
const darkSrc = src;
const lightSrc = src.replace('.svg', '-dark.svg');

return (
<>
<img
src={useBaseUrl(darkSrc)}
alt={alt}
className={`icon-dark-mode ${className || ''}`}
width={width}
height={height}
/>
<img
src={useBaseUrl(lightSrc)}
alt={alt}
className={`icon-light-mode ${className || ''}`}
width={width}
height={height}
/>
</>
);
};

const HomePageHero = () => {
const quickstartLinks = [
{
path: '/develop/go/set-up-your-local-go',
name: 'Go Quickstart',
},
{
path: '/develop/java/set-up-your-local-java',
name: 'Java Quickstart',
},
{
path: '/develop/python/set-up-your-local-python',
name: 'Python Quickstart',
},
{
path: '/develop/typescript/set-up-your-local-typescript',
name: 'TypeScript Quickstart',
},
{
path: '/develop/dotnet/set-up-your-local-dotnet',
name: '.NET Quickstart',
},
{
path: '/develop/ruby/set-up-local-ruby',
name: 'Ruby Quickstart',
},
];

Comment on lines +31 to +57
Copy link

Copilot AI Jan 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The quickstartLinks array is defined but never used in the component. This creates dead code that should either be removed or implemented in the UI if intended for future use.

Suggested change
const quickstartLinks = [
{
path: '/develop/go/set-up-your-local-go',
name: 'Go Quickstart',
},
{
path: '/develop/java/set-up-your-local-java',
name: 'Java Quickstart',
},
{
path: '/develop/python/set-up-your-local-python',
name: 'Python Quickstart',
},
{
path: '/develop/typescript/set-up-your-local-typescript',
name: 'TypeScript Quickstart',
},
{
path: '/develop/dotnet/set-up-your-local-dotnet',
name: '.NET Quickstart',
},
{
path: '/develop/ruby/set-up-local-ruby',
name: 'Ruby Quickstart',
},
];

Copilot uses AI. Check for mistakes.
const actionCards = [
{
href: '/quickstarts',
icon: <Icon src="/img/icons/Lightning.svg" alt="Lightning icon" />,
title: 'Quickstart',
description: 'Setup your local and run a Hello World workflow.',
},
{
href: '/develop',
icon: <Icon src="/img/icons/Code.svg" alt="Code icon" />,
title: 'Developer Guide',
description: 'Dive into everything you need to know about building Temporal workflows.',
},
{
href: '/production-deployment',
icon: <Icon src="/img/icons/Rocket.svg" alt="Rocket icon" />,
title: 'Deploy your Workflows',
description:
'Deploy your Temporal Application to your environment. Self-Host the Temporal Service or use Temporal Cloud.',
},
{
href: 'https://temporal.io/cloud',
icon: <Icon src="/img/icons/Cloud.svg" alt="Cloud icon" />,
title: 'Get started for free with $1000 in credits',
description:
'<span class="linkify">Sign up for Temporal Cloud</span> and let us host the Temporal Service for you.',
},
];

const communityCards = [
{
href: 'https://temporal.io/slack',
icon: <Icon src="/img/icons/Slack.svg" alt="Slack" />,
title: 'Slack Community',
description:
'Join us on <a href="https://temporal.io/slack">temporal.io/slack</a> and say hi or ask us a question.',
},
{
href: 'https://community.temporal.io',
icon: <Icon src="/img/icons/Message.svg" alt="Message" />,
title: 'Developer Forum',
description: '<a href="https://community.temporal.io">Find out</a> if your question has already been asked.',
},
{
href: 'https://learn.temporal.io/courses/',
icon: <Icon src="/img/icons/Education.svg" alt="Education" />,
title: 'Learn it all',
description: '<a href="https://learn.temporal.io/courses/">Master Temporal</a> with our courses and tutorials.',
},
];

return (
<div className="homepage-hero-wrapper">
<div className="hero-main-title-container">
<header className="hero-main-title">Temporal Docs</header>

<div className="quickstart-links">{SdkLogosAsBlocks()}</div>
</div>

<div className="hero-section">
<div className="hero-content">
<h1>Build applications that never fail</h1>
<p>
Temporal is an open-source platform for building reliable applications. Temporal delivers crash-proof
execution by guaranteeing that applications resume exactly where they left off after crashes, network
failures, or infrastructure outages, whether that happens seconds, days, or even years later.
</p>
<p>
Temporal enables developers to focus on building features that drive the business while ensuring that
mission-critical processes such as order fulfillment, customer onboarding, and payment processing never fail
or disappear, regardless of what goes wrong.
</p>
<a href="/quickstarts" className="hero-cta">
Quickstart
<svg fill="none" height="18" viewBox="0 0 21 18" width="21" xmlns="http://www.w3.org/2000/svg">
<path d="m20.1094 9.5625-7.1719 7.2187-.7969.7969-1.5937-1.5937.7969-.7969 5.25-5.29688h-15.4688-1.125v-2.25h1.125 15.4688l-5.25-5.25-.7969-.79687 1.5937-1.59375.7969.796875 7.1719 7.171875.7968.79687z" />
</svg>
</a>
</div>

<div className="hero-actions">
{actionCards.map((card, index) => (
<div key={index} className="border-container">
<a href={card.href} className="action-card">
<div className="action-icon">{card.icon}</div>
<div className="action-content">
<h3>{card.title}</h3>
<p dangerouslySetInnerHTML={{ __html: card.description }}></p>
Copy link

Copilot AI Jan 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using dangerouslySetInnerHTML with user-controlled or externally sourced content can expose the application to XSS attacks. While the current descriptions appear to be hardcoded strings, consider using React components or a sanitization library to render HTML safely, especially if these descriptions might be sourced from external data in the future.

Copilot uses AI. Check for mistakes.
</div>
</a>
</div>
))}
</div>
</div>

<div className="community-cards">
{communityCards.map((card, index) => (
<div key={index} className="community-card">
<div className="community-icon">{card.icon}</div>
<h3>{card.title}</h3>
<p dangerouslySetInnerHTML={{ __html: card.description }}></p>
Copy link

Copilot AI Jan 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using dangerouslySetInnerHTML with user-controlled or externally sourced content can expose the application to XSS attacks. While the current descriptions appear to be hardcoded strings, consider using React components or a sanitization library to render HTML safely, especially if these descriptions might be sourced from external data in the future.

Copilot uses AI. Check for mistakes.
</div>
))}
</div>
</div>
);
};

export default HomePageHero;
58 changes: 29 additions & 29 deletions src/components/elements/SdkLogos.js
Original file line number Diff line number Diff line change
@@ -1,47 +1,47 @@
import React from "react";
import React from 'react';

const supportedTech = [
{
link: "/develop/go",
image: "/img/sdks/svgs/golang.svg",
alt: "Go lang logo",
class: "w-10 h-8",
link: '/develop/go',
image: '/img/sdks/svgs/golang-block.svg',
Copy link

Copilot AI Jan 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Go SDK logo image path has been changed to 'golang-block.svg', but this appears inconsistent with the other SDK logos which still use their non-block variants (e.g., 'java.svg', 'python.svg'). This should either use '/img/sdks/svgs/golang.svg' to match the other SDKs, or all SDKs should be updated to use the block variant.

Suggested change
image: '/img/sdks/svgs/golang-block.svg',
image: '/img/sdks/svgs/golang.svg',

Copilot uses AI. Check for mistakes.
alt: 'Go lang logo',
class: 'w-10 h-8',
},
{
link: "/develop/java",
image: "/img/sdks/svgs/java.svg",
alt: "Java logo",
class: "w-7 h-7",
link: '/develop/java',
image: '/img/sdks/svgs/java.svg',
alt: 'Java logo',
class: 'w-7 h-7',
},
{
link: "/develop/python",
image: "/img/sdks/svgs/python.svg",
alt: "Python logo",
class: "w-7 h-7",
link: '/develop/python',
image: '/img/sdks/svgs/python.svg',
alt: 'Python logo',
class: 'w-7 h-7',
},
{
link: "/develop/typescript",
image: "/img/sdks/svgs/typescript.svg",
alt: "TypeScript logo",
class: "w-7 h-7",
link: '/develop/typescript',
image: '/img/sdks/svgs/typescript.svg',
alt: 'TypeScript logo',
class: 'w-7 h-7',
},
{
link: "/develop/php",
image: "/img/sdks/svgs/php.svg",
alt: "php logo",
class: "w-10",
link: '/develop/php',
image: '/img/sdks/svgs/php.svg',
alt: 'php logo',
class: 'w-10',
},
{
link: "/develop/dotnet",
image: "/img/sdks/svgs/dotnet.svg",
alt: ".Net logo",
class: "w-10",
link: '/develop/dotnet',
image: '/img/sdks/svgs/dotnet.svg',
alt: '.Net logo',
class: 'w-10',
},
{
link: "/develop/ruby",
image: "/img/sdks/svgs/ruby.svg",
alt: "Ruby logo",
class: "w-10",
link: '/develop/ruby',
image: '/img/sdks/svgs/ruby.svg',
alt: 'Ruby logo',
class: 'w-10',
},
];

Expand Down
59 changes: 59 additions & 0 deletions src/components/elements/SdkLogosAsBlocks.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import React from 'react';

const supportedTech = [
{
link: '/develop/go',
image: '/img/sdks/svgs/golang-block.svg',
alt: 'Go lang logo',
},
{
link: '/develop/java',
image: '/img/sdks/svgs/java-block.svg',
alt: 'Java logo',
},
{
link: '/develop/python',
image: '/img/sdks/svgs/python-block.svg',
alt: 'Python logo',
},
{
link: '/develop/typescript',
image: '/img/sdks/svgs/typescript-block.svg',
alt: 'TypeScript logo',
},
{
link: '/develop/php',
image: '/img/sdks/svgs/php-block.svg',
alt: 'php logo',
},
{
link: '/develop/dotnet',
image: '/img/sdks/svgs/dotnet-block.svg',
alt: '.Net logo',
},
{
link: '/develop/ruby',
image: '/img/sdks/svgs/ruby-block.svg',
alt: 'Ruby logo',
},
];

const displayTechListItems = () => {
return supportedTech.map((tech) => {
return (
<li className="sdk-logo" key={tech.alt}>
<a href={tech.link}>
<img src={tech.image} alt={tech.alt} />
</a>
</li>
);
});
};

export const SdkLogosAsBlocks = () => {
return (
<div className="supported-tech">
<ul className="sdk-logos-list">{displayTechListItems()}</ul>
</div>
);
};
1 change: 1 addition & 0 deletions src/components/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Website components
export { default as RetrySimulator } from "./elements/RetrySimulator";
export { Intro } from "./elements/Intro";
export { default as HomePageHero } from "./elements/HomePageHero";
export { SdkLogos } from "./elements/SdkLogos";
export { default as PhotoCarousel } from "./elements/PhotoCarousel";
export { default as SdkTabs } from './elements/SdkTabs';
Expand Down
Loading