From c1135e5cd6a0b3ada7c2787c68c87d3306cf2801 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Thu, 28 Sep 2023 09:35:04 +0000 Subject: [PATCH 1/8] fix: seo issues --- src/routes/cookies/+page.svelte | 4 ++-- src/routes/docs/quick-starts/angular/+page.markdoc | 2 +- src/routes/docs/quick-starts/nextjs/+page.markdoc | 2 +- src/routes/docs/quick-starts/nuxt/+page.markdoc | 2 +- src/routes/docs/quick-starts/react/+page.markdoc | 2 +- src/routes/docs/quick-starts/sveltekit/+page.markdoc | 2 +- src/routes/docs/quick-starts/vue/+page.markdoc | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/routes/cookies/+page.svelte b/src/routes/cookies/+page.svelte index 024e22ccdf9..0d4b81b6243 100644 --- a/src/routes/cookies/+page.svelte +++ b/src/routes/cookies/+page.svelte @@ -196,7 +196,7 @@

We use in our site - https://appwrite.io/ ("SiteAppwrite (https://appwrite.io/) ("Site") cookies and similar files or technologies to automatically collect and store information about your computer, device, and Site usage, in order to improve their performance and enhance your user experience. We use the general term "cookies" @@ -215,7 +215,7 @@ In this Cookies Policy, we use the term Appwrite (and "we", "us" and "our") to refer to Appwrite Code Ltd. Our Privacy Policy is available at https://appwrite.io/policy/privacyAppwrite Privacy Policy (https://appwrite.io/policy/privacy).

diff --git a/src/routes/docs/quick-starts/angular/+page.markdoc b/src/routes/docs/quick-starts/angular/+page.markdoc index b0127535458..adb9d348e04 100644 --- a/src/routes/docs/quick-starts/angular/+page.markdoc +++ b/src/routes/docs/quick-starts/angular/+page.markdoc @@ -163,5 +163,5 @@ export class AppComponent { {% /section %} {% section #step-6 step=6 title="All set" %} -Run your project with `ng serve --port 3000` and open [http://localhost:3000](http://localhost:3000) in your browser. +Run your project with `ng serve --port 3000` and open [Localhost on Port 3000](http://localhost:3000) in your browser. {% /section %} \ No newline at end of file diff --git a/src/routes/docs/quick-starts/nextjs/+page.markdoc b/src/routes/docs/quick-starts/nextjs/+page.markdoc index 831d966178d..9ab35e07b91 100644 --- a/src/routes/docs/quick-starts/nextjs/+page.markdoc +++ b/src/routes/docs/quick-starts/nextjs/+page.markdoc @@ -149,7 +149,7 @@ export default LoginPage; {% /section %} {% section #step-6 step=6 title="All set" %} -Run your project with `npm run dev` and open [http://localhost:3000](http://localhost:3000) in your browser. +Run your project with `npm run dev` and open [Localhost on Port 3000](http://localhost:3000) in your browser. Don't forget to add some CSS to suit your style. {% /section %} \ No newline at end of file diff --git a/src/routes/docs/quick-starts/nuxt/+page.markdoc b/src/routes/docs/quick-starts/nuxt/+page.markdoc index e0a9c0bb51e..102e8db5eb5 100644 --- a/src/routes/docs/quick-starts/nuxt/+page.markdoc +++ b/src/routes/docs/quick-starts/nuxt/+page.markdoc @@ -127,5 +127,5 @@ const logout = async () => { {% /section %} {% section #step-6 step=6 title="Checkout what you've built" %} -Run your project with `npm run dev -- --open --port 3000` and open [http://localhost:3000](http://localhost:3000) in your browser. +Run your project with `npm run dev -- --open --port 3000` and open [Localhost on Port 3000](http://localhost:3000) in your browser. {% /section %} diff --git a/src/routes/docs/quick-starts/react/+page.markdoc b/src/routes/docs/quick-starts/react/+page.markdoc index b1a9551a102..cc63d125a34 100644 --- a/src/routes/docs/quick-starts/react/+page.markdoc +++ b/src/routes/docs/quick-starts/react/+page.markdoc @@ -133,5 +133,5 @@ export default App; {% /section %} {% section #step-6 step=6 title="All set" %} -Run your project with `npm run dev -- --open --port 3000` and open [http://localhost:3000](http://localhost:3000) in your browser. +Run your project with `npm run dev -- --open --port 3000` and open [Localhost on Port 3000](http://localhost:3000) in your browser. {% /section %} \ No newline at end of file diff --git a/src/routes/docs/quick-starts/sveltekit/+page.markdoc b/src/routes/docs/quick-starts/sveltekit/+page.markdoc index 8570d48e7d4..5f7a23fedb3 100644 --- a/src/routes/docs/quick-starts/sveltekit/+page.markdoc +++ b/src/routes/docs/quick-starts/sveltekit/+page.markdoc @@ -117,7 +117,7 @@ Create a new file `src/routes/index.svelte` and add the following code to it. {% /section %} {% section #step-6 step=6 title="All set" %} -Run your project with `npm run dev -- --open --port 3000` and open [http://localhost:3000](http://localhost:3000) in your browser. +Run your project with `npm run dev -- --open --port 3000` and open [Localhost on Port 3000](http://localhost:3000) in your browser. {% /section %} diff --git a/src/routes/docs/quick-starts/vue/+page.markdoc b/src/routes/docs/quick-starts/vue/+page.markdoc index e986e536fbe..66b2e018047 100644 --- a/src/routes/docs/quick-starts/vue/+page.markdoc +++ b/src/routes/docs/quick-starts/vue/+page.markdoc @@ -125,5 +125,5 @@ const logout = async () => { {% /section %} {% section #step-6 step=6 title="All set" %} -Run your project with `npm run dev -- --open --port 3000` and open [http://localhost:3000](http://localhost:3000) in your browser. +Run your project with `npm run dev -- --open --port 3000` and open [Localhost on Port 3000](http://localhost:3000) in your browser. {% /section %} From 2da195e4e1a038ef9d31c3525030833f1957541e Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Thu, 28 Sep 2023 09:47:25 +0000 Subject: [PATCH 2/8] fix: anchor tag missing anchor text --- src/routes/privacy/+page.svelte | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/routes/privacy/+page.svelte b/src/routes/privacy/+page.svelte index 54408ac1bf8..adfe7c57866 100644 --- a/src/routes/privacy/+page.svelte +++ b/src/routes/privacy/+page.svelte @@ -311,8 +311,10 @@ For more information, please read our cookies policy https://appwrite.io/policy/cookies + Appwrite Cookies Policy (https://appwrite.io/policy/cookies) + @@ -1231,18 +1233,21 @@ href="https://marketingplatform.google.com/about/analytics/terms/us/" target="_blank" > - https://marketingplatform.google.com/about/analytics/terms/us/, and the Google Privacy Policy, available at - https://www.google.com/policies/privacy/. You may learn more about how Google collects and processes data specifically in connection with Google Analytics at - https://www.google.com/policies/privacy/partners/. You may prevent your data from being used by Google Analytics by downloading and installing the Google Analytics Opt-out Browser Add-on, available at - https://tools.google.com/dlpage/gaoptout/.
  • @@ -1251,7 +1256,7 @@ activity. For more information on the privacy practices of Orbit, please visit the Orbit Privacy & Terms web page: https://orbit.love/privacy-policy/Orbit Privacy Policy (https://orbit.love/privacy-policy/).
  • @@ -1260,9 +1265,9 @@ diagnose, fix, and optimize the performance of the Website. Sentry's ability to use and share information collected by Sentry is regulated by their terms of service, available at - https://sentry.io/terms/, and + Sentry Terms of Service (https://sentry.io/terms/), and their Privacy Policy available at - https://sentry.io/privacy/. + Sentry Privacy Policy (https://sentry.io/privacy/).
  • Mixpanel @@ -1272,11 +1277,11 @@ the Website and our products. Mixpanel’s ability to use and share information about your visits is restricted by the Terms of Service, available at https://mixpanel.com/legal/terms-of-useMixpanel Terms of Use (https://mixpanel.com/legal/terms-of-use) and the Mixpanel Privacy Policy, available at https://mixpanel.com/legal/privacy-policyMixpanel Privacy Policy (https://mixpanel.com/legal/privacy-policy).
  • From 84f8a4abf10a51b53421e223c193ba760627fb4e Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Thu, 28 Sep 2023 10:09:41 +0000 Subject: [PATCH 3/8] fix: add missing meta description tags --- src/lib/utils/metadata.ts | 1 + src/routes/+page.svelte | 4 ++-- src/routes/assets/+page.svelte | 4 ++-- src/routes/blog/+page.svelte | 4 ++-- src/routes/community/+page.svelte | 4 ++-- src/routes/company/+page.svelte | 4 ++-- src/routes/contact-us/+page.svelte | 4 ++-- src/routes/cookies/+page.svelte | 4 ++-- src/routes/docs/+page.svelte | 4 ++-- src/routes/docs/tutorials/+page.svelte | 4 ++-- src/routes/heroes/+page.svelte | 4 ++-- src/routes/pricing/+page.svelte | 4 ++-- src/routes/privacy/+page.svelte | 4 ++-- src/routes/support/+page.svelte | 23 +++++++++++++++++++++++ src/routes/terms/+page.svelte | 23 +++++++++++++++++++++++ 15 files changed, 71 insertions(+), 24 deletions(-) diff --git a/src/lib/utils/metadata.ts b/src/lib/utils/metadata.ts index 3964dd56052..7530225a86f 100644 --- a/src/lib/utils/metadata.ts +++ b/src/lib/utils/metadata.ts @@ -2,6 +2,7 @@ import type { AuthorData } from '$markdoc/layouts/Author.svelte'; import type { PostsData } from '$markdoc/layouts/Post.svelte'; export const DEFAULT_HOST = 'https://website-appwrite.vercel.app'; +export const DEFAULT_DESCRIPTION = 'Appwrite is an open-source platform for building applications at any scale, using your preferred programming languages and tools.'; export function buildOpenGraphImage(title: string, description: string): string { return `https://og.appwrite.global/image.png?title=${encodeURIComponent( title diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 3937cb0decf..1c19da999c3 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -9,7 +9,7 @@ import Products from '$lib/animations/Products/Products.svelte'; import ProductsMobile from '$lib/animations/Products/ProductsMobile.svelte'; import Tooltip from '$lib/components/Tooltip.svelte'; - import { DEFAULT_HOST } from '$lib/utils/metadata'; + import { DEFAULT_DESCRIPTION, DEFAULT_HOST } from '$lib/utils/metadata'; import { isMobileNavOpen } from '$lib/layouts/Main.svelte'; const platforms: Array<{ @@ -65,7 +65,7 @@ ]; const title = 'Appwrite - Build like a team of hundreds'; - const description = ''; + const description = DEFAULT_DESCRIPTION; const ogImage = `${DEFAULT_HOST}/images/open-graph/website.png`; diff --git a/src/routes/assets/+page.svelte b/src/routes/assets/+page.svelte index 5cc8628be50..c71db131e52 100644 --- a/src/routes/assets/+page.svelte +++ b/src/routes/assets/+page.svelte @@ -1,12 +1,12 @@ diff --git a/src/routes/blog/+page.svelte b/src/routes/blog/+page.svelte index 34797f64d56..c5cb16e06d0 100644 --- a/src/routes/blog/+page.svelte +++ b/src/routes/blog/+page.svelte @@ -2,14 +2,14 @@ import { Main } from '$lib/layouts'; import { MainFooter, FooterNav, Article } from '$lib/components'; import { TITLE_SUFFIX } from '$routes/titles.js'; - import { DEFAULT_HOST } from '$lib/utils/metadata'; + import { DEFAULT_DESCRIPTION, DEFAULT_HOST } from '$lib/utils/metadata'; export let data; const featured = data.posts.find((post) => post.featured); const title = 'Blog' + TITLE_SUFFIX; - const description = ''; + const description = DEFAULT_DESCRIPTION; const ogImage = DEFAULT_HOST + '/images/open-graph/blog.png'; diff --git a/src/routes/community/+page.svelte b/src/routes/community/+page.svelte index d6af1ddd329..eeaf2f7bb51 100644 --- a/src/routes/community/+page.svelte +++ b/src/routes/community/+page.svelte @@ -5,11 +5,11 @@ import PreFooter from '$lib/components/PreFooter.svelte'; import { Carousel } from '$lib/components'; import { TITLE_SUFFIX } from '$routes/titles'; - import { DEFAULT_HOST } from '$lib/utils/metadata'; + import { DEFAULT_DESCRIPTION, DEFAULT_HOST } from '$lib/utils/metadata'; import FloatingHeads from '$lib/components/FloatingHeads.svelte'; const title = 'Community' + TITLE_SUFFIX; - const description = ''; + const description = DEFAULT_DESCRIPTION; const ogImage = DEFAULT_HOST + '/images/open-graph/website.png'; diff --git a/src/routes/company/+page.svelte b/src/routes/company/+page.svelte index 271dd79d18f..783126987d9 100644 --- a/src/routes/company/+page.svelte +++ b/src/routes/company/+page.svelte @@ -3,10 +3,10 @@ import MainFooter from '$lib/components/MainFooter.svelte'; import FooterNav from '$lib/components/FooterNav.svelte'; import { TITLE_SUFFIX } from '$routes/titles'; - import { DEFAULT_HOST } from '$lib/utils/metadata'; + import { DEFAULT_DESCRIPTION, DEFAULT_HOST } from '$lib/utils/metadata'; const title = 'Company' + TITLE_SUFFIX; - const description = ''; + const description = DEFAULT_DESCRIPTION; const ogImage = DEFAULT_HOST + '/images/open-graph/website.png'; diff --git a/src/routes/contact-us/+page.svelte b/src/routes/contact-us/+page.svelte index 8d5b922d963..0104022ba52 100644 --- a/src/routes/contact-us/+page.svelte +++ b/src/routes/contact-us/+page.svelte @@ -1,5 +1,5 @@ diff --git a/src/routes/cookies/+page.svelte b/src/routes/cookies/+page.svelte index 0d4b81b6243..26d88575aa3 100644 --- a/src/routes/cookies/+page.svelte +++ b/src/routes/cookies/+page.svelte @@ -1,12 +1,12 @@ diff --git a/src/routes/docs/+page.svelte b/src/routes/docs/+page.svelte index 970a3f002bc..8c1b04eaebe 100644 --- a/src/routes/docs/+page.svelte +++ b/src/routes/docs/+page.svelte @@ -5,11 +5,11 @@ import Docs from '$lib/layouts/Docs.svelte'; import MainFooter from '../../lib/components/MainFooter.svelte'; import Sidebar from './Sidebar.svelte'; - import { DEFAULT_HOST } from '$lib/utils/metadata'; + import { DEFAULT_DESCRIPTION, DEFAULT_HOST } from '$lib/utils/metadata'; import { TITLE_SUFFIX } from '$routes/titles'; const title = 'Docs' + TITLE_SUFFIX; - const description = ''; + const description = DEFAULT_DESCRIPTION; const ogImage = DEFAULT_HOST + '/images/open-graph/docs.png'; diff --git a/src/routes/docs/tutorials/+page.svelte b/src/routes/docs/tutorials/+page.svelte index 98da4250541..8306de8affb 100644 --- a/src/routes/docs/tutorials/+page.svelte +++ b/src/routes/docs/tutorials/+page.svelte @@ -1,10 +1,10 @@ diff --git a/src/routes/heroes/+page.svelte b/src/routes/heroes/+page.svelte index 6322bf7d205..6fc130c4a0a 100644 --- a/src/routes/heroes/+page.svelte +++ b/src/routes/heroes/+page.svelte @@ -1,11 +1,11 @@ diff --git a/src/routes/pricing/+page.svelte b/src/routes/pricing/+page.svelte index 127eb7fcc6c..f3393080a4d 100644 --- a/src/routes/pricing/+page.svelte +++ b/src/routes/pricing/+page.svelte @@ -1,6 +1,6 @@ diff --git a/src/routes/privacy/+page.svelte b/src/routes/privacy/+page.svelte index adfe7c57866..c312cb14078 100644 --- a/src/routes/privacy/+page.svelte +++ b/src/routes/privacy/+page.svelte @@ -1,5 +1,5 @@ diff --git a/src/routes/support/+page.svelte b/src/routes/support/+page.svelte index 881bed59f7f..5ddec422feb 100644 --- a/src/routes/support/+page.svelte +++ b/src/routes/support/+page.svelte @@ -1,10 +1,33 @@ + + + {title} + + + + + + + + + + + + + +
    diff --git a/src/routes/terms/+page.svelte b/src/routes/terms/+page.svelte index 881bed59f7f..1ccb65e85f0 100644 --- a/src/routes/terms/+page.svelte +++ b/src/routes/terms/+page.svelte @@ -1,10 +1,33 @@ + + + {title} + + + + + + + + + + + + + +
    From fcf359186128b7b567a839b0a09eeac33cf95425 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Thu, 28 Sep 2023 10:35:11 +0000 Subject: [PATCH 4/8] fix: duplicate title tags --- src/routes/docs/products/databases/permissions/+page.markdoc | 2 +- src/routes/docs/products/storage/permissions/+page.markdoc | 2 +- .../references/[version]/[platform]/[service]/+page.svelte | 4 ++-- src/routes/titles.ts | 1 + 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/routes/docs/products/databases/permissions/+page.markdoc b/src/routes/docs/products/databases/permissions/+page.markdoc index de20e0acb58..9f0c41092ab 100644 --- a/src/routes/docs/products/databases/permissions/+page.markdoc +++ b/src/routes/docs/products/databases/permissions/+page.markdoc @@ -1,6 +1,6 @@ --- layout: article -title: Permissions +title: Database Permissions description: Enhance data security and access control with Appwrite Database Permissions. Learn how to set permissions and access rules for your database collections --- diff --git a/src/routes/docs/products/storage/permissions/+page.markdoc b/src/routes/docs/products/storage/permissions/+page.markdoc index 2e6ebd44cb4..e77b4ebf2c3 100644 --- a/src/routes/docs/products/storage/permissions/+page.markdoc +++ b/src/routes/docs/products/storage/permissions/+page.markdoc @@ -1,6 +1,6 @@ --- layout: article -title: Permissions +title: Storage Permissions description: Enhance data security and control with Appwrite Storage Permissions. Learn how to set access rules, permissions, and restrictions for your stored files. --- diff --git a/src/routes/docs/references/[version]/[platform]/[service]/+page.svelte b/src/routes/docs/references/[version]/[platform]/[service]/+page.svelte index 4c2089cde5b..9564e59b8b4 100644 --- a/src/routes/docs/references/[version]/[platform]/[service]/+page.svelte +++ b/src/routes/docs/references/[version]/[platform]/[service]/+page.svelte @@ -16,7 +16,7 @@ } from '$lib/utils/references'; import type { LayoutContext } from '$markdoc/layouts/Article.svelte'; import { Fence, Heading } from '$markdoc/nodes/_Module.svelte'; - import { DOCS_TITLE_SUFFIX } from '$routes/titles.js'; + import { API_REFERENCE_TITLE_SUFFIX } from '$routes/titles.js'; import { getContext, onMount, setContext } from 'svelte'; import { writable } from 'svelte/store'; @@ -66,7 +66,7 @@ $: platform = $page.params.platform as Platform; $: platformType = platform.startsWith('client-') ? 'CLIENT' : 'SERVER'; $: serviceName = serviceMap[data.service?.name]; - $: title = serviceName + DOCS_TITLE_SUFFIX; + $: title = serviceName + API_REFERENCE_TITLE_SUFFIX; $: description = data.service?.description; $: ogImage = DEFAULT_HOST + '/images/open-graph/docs.png'; diff --git a/src/routes/titles.ts b/src/routes/titles.ts index 39769a177e3..66920f6ba9b 100644 --- a/src/routes/titles.ts +++ b/src/routes/titles.ts @@ -1,3 +1,4 @@ export const TITLE_SUFFIX = ' - Appwrite'; export const DOCS_TITLE_SUFFIX = ' - Docs' + TITLE_SUFFIX; +export const API_REFERENCE_TITLE_SUFFIX = ' API Reference' + DOCS_TITLE_SUFFIX; export const BLOG_TITLE_SUFFIX = ' - Blog' + TITLE_SUFFIX; From 765824c4d0e7924738e645dc8d32523bd4348d9c Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Thu, 28 Sep 2023 10:52:47 +0000 Subject: [PATCH 5/8] fix: add missing h1 tag --- src/routes/support/+page.svelte | 4 ++++ src/routes/terms/+page.svelte | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/routes/support/+page.svelte b/src/routes/support/+page.svelte index 5ddec422feb..50f1eb1a067 100644 --- a/src/routes/support/+page.svelte +++ b/src/routes/support/+page.svelte @@ -32,6 +32,10 @@
    +
    +

    Support

    +
    +
    diff --git a/src/routes/terms/+page.svelte b/src/routes/terms/+page.svelte index 1ccb65e85f0..7b0e70a1b10 100644 --- a/src/routes/terms/+page.svelte +++ b/src/routes/terms/+page.svelte @@ -32,6 +32,10 @@
    +
    +

    Terms and Conditions

    +
    +
    From 4bb2238cd6f60be314097a32a737b5b6e8acdbb7 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Thu, 28 Sep 2023 11:52:52 +0000 Subject: [PATCH 6/8] fix: external URL returning 4XX --- src/routes/blog/author/sara-kaandorp/+page.markdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/blog/author/sara-kaandorp/+page.markdoc b/src/routes/blog/author/sara-kaandorp/+page.markdoc index dc5c43e417d..9dc4b6bac42 100644 --- a/src/routes/blog/author/sara-kaandorp/+page.markdoc +++ b/src/routes/blog/author/sara-kaandorp/+page.markdoc @@ -6,6 +6,6 @@ role: Design lead bio: Leading Appwrite's product and visual design teams. avatar: /images/avatars/sara.png twitter: https://twitter.com/sara_k_48 -github: https://github.com/sarakaandorp +github: https://github.com/sara-k-48 linkedin: https://www.linkedin.com/in/sara-k-78468a116/ --- \ No newline at end of file From 71bdf9f6591e010c8d46d5d8fe0186dbdcbb8c13 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Thu, 28 Sep 2023 12:32:30 +0000 Subject: [PATCH 7/8] fix: add robots.txt --- static/robots.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 static/robots.txt diff --git a/static/robots.txt b/static/robots.txt new file mode 100644 index 00000000000..ef9d9f6edd8 --- /dev/null +++ b/static/robots.txt @@ -0,0 +1,3 @@ +# robotstxt.org/ + +User-agent: * \ No newline at end of file From 8594e8258ed8505e1357108fe4708d289385a54c Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Thu, 28 Sep 2023 12:41:35 +0000 Subject: [PATCH 8/8] fix: update deployment config --- docker/production.yml | 4 ++-- docker/stage.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docker/production.yml b/docker/production.yml index f585b145ad7..581cb0a842a 100644 --- a/docker/production.yml +++ b/docker/production.yml @@ -49,7 +49,7 @@ services: networks: - cloud deploy: - mode: global + replicas: 1 <<: *x-update-config placement: constraints: @@ -63,7 +63,7 @@ services: deploy: <<: *x-update-config mode: replicated - replicas: 6 + replicas: 5 placement: max_replicas_per_node: 2 constraints: diff --git a/docker/stage.yml b/docker/stage.yml index fff63e41fb2..e3d16100f91 100644 --- a/docker/stage.yml +++ b/docker/stage.yml @@ -50,7 +50,7 @@ services: networks: - cloud deploy: - mode: global + replicas: 1 <<: *x-update-config placement: constraints: @@ -64,7 +64,7 @@ services: deploy: <<: *x-update-config mode: replicated - replicas: 6 + replicas: 5 placement: max_replicas_per_node: 2 constraints: