Skip to content

refactor: update tutorial slugs #1110

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
May 21, 2025
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
20 changes: 9 additions & 11 deletions docusaurus-common.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import { themes } from 'prism-react-renderer';
import rehypeKatex from 'rehype-katex';
import remarkMath from 'remark-math';

import { howToBasePath } from './src/theme/BlogPostItem/utils';

export const defaultLocale = 'en';

// A workaround for locale-specific values in the config
Expand Down Expand Up @@ -96,8 +98,8 @@ export const injectHeadTagsPlugin: PluginConfig = () => ({
* generate absolute URLs. This is useful when deploying multiple Docusaurus sites under the same
* domain.
*
* For example, the main site is deployed at `https://docs.logto.io`, and the
* tutorials site is deployed at `https://docs.logto.io/tutorials`. A relative URL for the main site
* For example, the main site is deployed at `https://docs.logto.io/`, and the
* tutorials site is deployed at `https://tutorials.logto.io/`. A relative URL for the main site
* in the tutorials site would result 404 errors if the URL is not prefixed with the main site
* domain, as each site is a standalone single-page application.
*/
Expand Down Expand Up @@ -158,7 +160,7 @@ export const createCommonThemeConfig = (site: Site) => {
href: 'https://openapi.logto.io/group/endpoint-experience',
},
{ label: 'Management API', href: 'https://openapi.logto.io' },
{ label: 'Build X with Y', to: tutorialsSiteUrl + 'tutorials' }, // TODO: @gao temporarily hardcode the URL, we'll update it later
{ label: 'Build X with Y', to: buildUrl('/' + howToBasePath, 'tutorials') },
],
},
{
Expand Down Expand Up @@ -235,14 +237,10 @@ export const createCommonThemeConfig = (site: Site) => {
} satisfies ThemeConfig);
};

export const commonI18n = {
defaultLocale: 'en',
locales: ['de', 'en', 'es', 'fr', 'ja', 'ko', 'pt-BR', 'zh-CN', 'zh-TW'],
localeConfigs: {
'zh-CN': { label: '简体中文' },
'zh-TW': { label: '繁體中文(台灣)' },
},
};
export const localeConfigs = Object.freeze({
'zh-CN': { label: '简体中文' },
'zh-TW': { label: '繁體中文(台灣)' },
});

export const commonMarkdown = {
mermaid: true,
Expand Down
12 changes: 9 additions & 3 deletions docusaurus-tutorials.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,18 @@ import {
addAliasPlugin,
cfPagesBranch,
classicPresetConfig,
commonI18n,
commonMarkdown,
commonStylesheets,
createCommonThemeConfig,
currentLocale,
defaultLocale,
getCloudflareSubdomain,
injectHeadTagsPlugin,
isCfPagesPreview,
localeConfigs,
mainSiteUrl,
} from './docusaurus-common.config';
import { howToBasePath } from './src/theme/BlogPostItem/utils';

const getLogtoDocsUrl = () =>
isCfPagesPreview
Expand All @@ -38,7 +40,11 @@ const config: Config = {
organizationName: 'logto-io',
projectName: 'docs',

i18n: commonI18n,
i18n: {
defaultLocale,
locales: ['en', 'es', 'fr', 'ja'],
localeConfigs,
},

customFields: {
mainSiteUrl,
Expand Down Expand Up @@ -85,7 +91,7 @@ const config: Config = {
* URL route for the blog section of your site.
* *DO NOT* include a trailing slash.
*/
routeBasePath: 'tutorials',
routeBasePath: howToBasePath,
/**
* Path to data on filesystem relative to site dir.
*/
Expand Down
9 changes: 7 additions & 2 deletions docusaurus.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@ import {
addAliasPlugin,
cfPagesBranch,
classicPresetConfig,
commonI18n,
commonMarkdown,
commonStylesheets,
createCommonThemeConfig,
currentLocale,
defaultLocale,
getCloudflareSubdomain,
injectHeadTagsPlugin,
isCfPagesPreview,
localeConfigs,
mainSiteUrl,
} from './docusaurus-common.config';
import ogImageGenerator from './plugins/og-image-generator';
Expand All @@ -35,7 +36,11 @@ const config: Config = {
organizationName: 'logto-io',
projectName: 'docs',

i18n: commonI18n,
i18n: {
defaultLocale,
locales: ['de', 'en', 'es', 'fr', 'ja', 'ko', 'pt-BR', 'zh-CN', 'zh-TW'],
localeConfigs,
},

customFields: {
inkeepApiKey: process.env.INKEEP_API_KEY,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-${connectorPath}-sign-in-with-${sdkPath}-and-logto
slug: build-${connectorPath}-sign-in-with-${sdkPath}-and-logto
tags: [autenticación, ${connectorPath}, ${sdkPath}, ${language}, inicio-de-sesión-sin-contraseña, inicio-de-sesión, login]
title: Cómo construir ${connector} ${connectorType} inicio de sesión sin contraseña con ${sdk}
sdk: ${sdk}
Expand Down Expand Up @@ -66,4 +66,4 @@ export const connector = '${connector}';

## Lecturas adicionales \{#further-readings}

<FurtherReadings />
<FurtherReadings />
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-${connectorPath}-sign-in-with-${sdkPath}-and-logto
slug: build-${connectorPath}-sign-in-with-${sdkPath}-and-logto
tags: [autenticación, ${connectorPath}, ${sdkPath}, ${language}, inicio-de-sesión-social, inicio-de-sesión, login]
title: Cómo construir el inicio de sesión de ${connector} con ${sdk}
sdk: ${sdk}
Expand Down Expand Up @@ -60,4 +60,4 @@ export const connector = '${connector}';

## Lecturas adicionales \{#further-readings}

<FurtherReadings />
<FurtherReadings />
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-${connectorPath}-sign-in-with-${sdkPath}-and-logto
slug: build-${connectorPath}-sign-in-with-${sdkPath}-and-logto
tags: [SSO providers, ${connectorPath}, ${sdkPath}, ${language}, SAML authentication, enterprise login, SSO login]
title: How to build ${connector} with ${sdk}
sdk: ${sdk}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-amazon-sign-in-with-android-and-logto
slug: build-amazon-sign-in-with-android-and-logto
tags: [autenticación, amazon, android, kotlin/java, inicio-de-sesión-social, inicio-de-sesión, login]
title: Cómo construir el inicio de sesión de Amazon con Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down Expand Up @@ -60,4 +60,4 @@ export const connector = 'Amazon';

## Lecturas adicionales \{#further-readings}

<FurtherReadings />
<FurtherReadings />
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-apple-sign-in-with-android-and-logto
slug: build-apple-sign-in-with-android-and-logto
tags: [autenticación, apple, android, kotlin/java, inicio-de-sesión-social, inicio-de-sesión, login]
title: Cómo construir el inicio de sesión de Apple con Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down Expand Up @@ -60,4 +60,4 @@ export const connector = 'Apple';

## Lecturas adicionales \{#further-readings}

<FurtherReadings />
<FurtherReadings />
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-aws-ses-sign-in-with-android-and-logto
slug: build-aws-ses-sign-in-with-android-and-logto
tags: [autenticación, aws-ses, android, kotlin/java, inicio-de-sesión-sin-contraseña, inicio-de-sesión, login]
title: Cómo construir AWS SES Email inicio de sesión sin contraseña con Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down Expand Up @@ -66,4 +66,4 @@ export const connector = 'AWS SES';

## Lecturas adicionales \{#further-readings}

<FurtherReadings />
<FurtherReadings />
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-azure-ad-sign-in-with-android-and-logto
slug: build-azure-ad-sign-in-with-android-and-logto
tags: [autenticación, azure-ad, android, kotlin/java, inicio-de-sesión-social, inicio-de-sesión, login]
title: Cómo construir el inicio de sesión de Azure AD con Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down Expand Up @@ -60,4 +60,4 @@ export const connector = 'Azure AD';

## Lecturas adicionales \{#further-readings}

<FurtherReadings />
<FurtherReadings />
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-discord-sign-in-with-android-and-logto
slug: build-discord-sign-in-with-android-and-logto
tags: [autenticación, discord, android, kotlin/java, inicio-de-sesión-social, inicio-de-sesión, login]
title: Cómo construir el inicio de sesión de Discord con Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down Expand Up @@ -60,4 +60,4 @@ export const connector = 'Discord';

## Lecturas adicionales \{#further-readings}

<FurtherReadings />
<FurtherReadings />
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-facebook-sign-in-with-android-and-logto
slug: build-facebook-sign-in-with-android-and-logto
tags: [autenticación, facebook, android, kotlin/java, inicio-de-sesión-social, inicio-de-sesión, login]
title: Cómo construir el inicio de sesión de Facebook con Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down Expand Up @@ -60,4 +60,4 @@ export const connector = 'Facebook';

## Lecturas adicionales \{#further-readings}

<FurtherReadings />
<FurtherReadings />
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-github-sign-in-with-android-and-logto
slug: build-github-sign-in-with-android-and-logto
tags: [autenticación, github, android, kotlin/java, inicio-de-sesión-social, inicio-de-sesión, login]
title: Cómo construir el inicio de sesión de GitHub con Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down Expand Up @@ -60,4 +60,4 @@ export const connector = 'GitHub';

## Lecturas adicionales \{#further-readings}

<FurtherReadings />
<FurtherReadings />
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-google-workspace-enterprise-sso-sign-in-with-android-and-logto
slug: build-google-workspace-enterprise-sso-sign-in-with-android-and-logto
tags: [SSO providers, google-workspace-enterprise-sso, android, kotlin/java, SAML authentication, enterprise login, SSO login]
title: How to build Google Workspace enterprise SSO with Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-google-sign-in-with-android-and-logto
slug: build-google-sign-in-with-android-and-logto
tags: [autenticación, google, android, kotlin/java, inicio-de-sesión-social, inicio-de-sesión, login]
title: Cómo construir el inicio de sesión de Google con Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down Expand Up @@ -60,4 +60,4 @@ export const connector = 'Google';

## Lecturas adicionales \{#further-readings}

<FurtherReadings />
<FurtherReadings />
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-hugging-face-sign-in-with-android-and-logto
slug: build-hugging-face-sign-in-with-android-and-logto
tags: [autenticación, hugging-face, android, kotlin/java, inicio-de-sesión-social, inicio-de-sesión, login]
title: Cómo construir el inicio de sesión de Hugging Face con Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down Expand Up @@ -60,4 +60,4 @@ export const connector = 'Hugging Face';

## Lecturas adicionales \{#further-readings}

<FurtherReadings />
<FurtherReadings />
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-kakao-sign-in-with-android-and-logto
slug: build-kakao-sign-in-with-android-and-logto
tags: [autenticación, kakao, android, kotlin/java, inicio-de-sesión-social, inicio-de-sesión, login]
title: Cómo construir el inicio de sesión de Kakao con Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down Expand Up @@ -60,4 +60,4 @@ export const connector = 'Kakao';

## Lecturas adicionales \{#further-readings}

<FurtherReadings />
<FurtherReadings />
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-line-sign-in-with-android-and-logto
slug: build-line-sign-in-with-android-and-logto
tags: [autenticación, line, android, kotlin/java, inicio-de-sesión-social, inicio-de-sesión, login]
title: Cómo construir el inicio de sesión de Line con Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down Expand Up @@ -60,4 +60,4 @@ export const connector = 'Line';

## Lecturas adicionales \{#further-readings}

<FurtherReadings />
<FurtherReadings />
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-linkedin-sign-in-with-android-and-logto
slug: build-linkedin-sign-in-with-android-and-logto
tags: [autenticación, linkedin, android, kotlin/java, inicio-de-sesión-social, inicio-de-sesión, login]
title: Cómo construir el inicio de sesión de LinkedIn con Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down Expand Up @@ -60,4 +60,4 @@ export const connector = 'LinkedIn';

## Lecturas adicionales \{#further-readings}

<FurtherReadings />
<FurtherReadings />
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-microsoft-entra-id-oidc-enterprise-sso-sign-in-with-android-and-logto
slug: build-microsoft-entra-id-oidc-enterprise-sso-sign-in-with-android-and-logto
tags: [SSO providers, microsoft-entra-id-oidc-enterprise-sso, android, kotlin/java, SAML authentication, enterprise login, SSO login]
title: How to build Microsoft Entra ID OIDC enterprise SSO with Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-microsoft-entra-id-saml-enterprise-sso-sign-in-with-android-and-logto
slug: build-microsoft-entra-id-saml-enterprise-sso-sign-in-with-android-and-logto
tags: [SSO providers, microsoft-entra-id-saml-enterprise-sso, android, kotlin/java, SAML authentication, enterprise login, SSO login]
title: How to build Microsoft Entra ID SAML enterprise SSO with Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-naver-sign-in-with-android-and-logto
slug: build-naver-sign-in-with-android-and-logto
tags: [autenticación, naver, android, kotlin/java, inicio-de-sesión-social, inicio-de-sesión, login]
title: Cómo construir el inicio de sesión de Naver con Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down Expand Up @@ -60,4 +60,4 @@ export const connector = 'Naver';

## Lecturas adicionales \{#further-readings}

<FurtherReadings />
<FurtherReadings />
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-oauth2-sign-in-with-android-and-logto
slug: build-oauth2-sign-in-with-android-and-logto
tags: [autenticación, oauth2, android, kotlin/java, inicio-de-sesión-social, inicio-de-sesión, login]
title: Cómo construir el inicio de sesión de OAuth2 con Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down Expand Up @@ -60,4 +60,4 @@ export const connector = 'OAuth2';

## Lecturas adicionales \{#further-readings}

<FurtherReadings />
<FurtherReadings />
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-oidc-enterprise-sso-sign-in-with-android-and-logto
slug: build-oidc-enterprise-sso-sign-in-with-android-and-logto
tags: [SSO providers, oidc-enterprise-sso, android, kotlin/java, SAML authentication, enterprise login, SSO login]
title: How to build OIDC enterprise SSO with Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-oidc-sign-in-with-android-and-logto
slug: build-oidc-sign-in-with-android-and-logto
tags: [autenticación, oidc, android, kotlin/java, inicio-de-sesión-social, inicio-de-sesión, login]
title: Cómo construir el inicio de sesión de OIDC con Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down Expand Up @@ -60,4 +60,4 @@ export const connector = 'OIDC';

## Lecturas adicionales \{#further-readings}

<FurtherReadings />
<FurtherReadings />
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
slug: how-to-build-okta-enterprise-sso-sign-in-with-android-and-logto
slug: build-okta-enterprise-sso-sign-in-with-android-and-logto
tags: [SSO providers, okta-enterprise-sso, android, kotlin/java, SAML authentication, enterprise login, SSO login]
title: How to build Okta enterprise SSO with Android (Kotlin / Java)
sdk: Android (Kotlin / Java)
Expand Down
Loading
Loading