@vendure/docs 0.0.0-202601221206 → 0.0.0-202601271334

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/dates.generated.js +111 -111
  2. package/docs/guides/core-concepts/auth/index.mdx +1 -1
  3. package/docs/guides/core-concepts/channels/index.mdx +2 -2
  4. package/docs/guides/core-concepts/collections/index.mdx +1 -1
  5. package/docs/guides/core-concepts/customers/index.mdx +1 -1
  6. package/docs/guides/core-concepts/email/index.mdx +1 -1
  7. package/docs/guides/core-concepts/images-assets/index.mdx +1 -1
  8. package/docs/guides/core-concepts/money/index.mdx +3 -3
  9. package/docs/guides/core-concepts/orders/index.mdx +2 -2
  10. package/docs/guides/core-concepts/payment/index.mdx +2 -2
  11. package/docs/guides/core-concepts/products/index.mdx +1 -1
  12. package/docs/guides/core-concepts/promotions/index.mdx +2 -2
  13. package/docs/guides/core-concepts/shipping/index.mdx +2 -2
  14. package/docs/guides/deployment/deploy-to-digital-ocean-app-platform/index.mdx +1 -1
  15. package/docs/guides/deployment/deploy-to-northflank/index.mdx +1 -1
  16. package/docs/guides/deployment/deploy-to-railway/index.mdx +1 -1
  17. package/docs/guides/deployment/deploy-to-render/index.mdx +1 -1
  18. package/docs/guides/deployment/deploying-admin-ui.mdx +1 -1
  19. package/docs/guides/deployment/getting-data-into-production.mdx +2 -2
  20. package/docs/guides/deployment/horizontal-scaling.mdx +2 -2
  21. package/docs/guides/deployment/production-configuration/index.mdx +2 -2
  22. package/docs/guides/deployment/server-resource-requirements.mdx +1 -1
  23. package/docs/guides/developer-guide/cache/index.mdx +1 -1
  24. package/docs/guides/developer-guide/channel-aware/index.mdx +2 -2
  25. package/docs/guides/developer-guide/cli/index.mdx +2 -2
  26. package/docs/guides/developer-guide/configuration/index.mdx +2 -2
  27. package/docs/guides/developer-guide/custom-fields/index.mdx +7 -7
  28. package/docs/guides/developer-guide/custom-permissions/index.mdx +1 -1
  29. package/docs/guides/developer-guide/database-entity/index.mdx +6 -6
  30. package/docs/guides/developer-guide/error-handling/index.mdx +1 -1
  31. package/docs/guides/developer-guide/events/index.mdx +1 -1
  32. package/docs/guides/developer-guide/extend-graphql-api/index.mdx +3 -3
  33. package/docs/guides/developer-guide/has-custom-fields/index.mdx +5 -5
  34. package/docs/guides/developer-guide/importing-data/index.mdx +3 -3
  35. package/docs/guides/developer-guide/migrating-from-v1/breaking-api-changes.mdx +2 -2
  36. package/docs/guides/developer-guide/migrating-from-v1/index.mdx +3 -3
  37. package/docs/guides/developer-guide/migrations/index.mdx +2 -2
  38. package/docs/guides/developer-guide/overview/index.mdx +2 -2
  39. package/docs/guides/developer-guide/plugins/index.mdx +4 -4
  40. package/docs/guides/developer-guide/rest-endpoint/index.mdx +2 -2
  41. package/docs/guides/developer-guide/scheduled-tasks/index.mdx +3 -3
  42. package/docs/guides/developer-guide/stand-alone-scripts/index.mdx +1 -1
  43. package/docs/guides/developer-guide/strategies-configurable-operations/index.mdx +1 -1
  44. package/docs/guides/developer-guide/testing/index.mdx +2 -2
  45. package/docs/guides/developer-guide/the-api-layer/index.mdx +2 -2
  46. package/docs/guides/developer-guide/the-service-layer/index.mdx +1 -1
  47. package/docs/guides/developer-guide/translations/index.mdx +1 -1
  48. package/docs/guides/developer-guide/updating/index.mdx +1 -1
  49. package/docs/guides/developer-guide/uploading-files/index.mdx +3 -3
  50. package/docs/guides/extending-the-admin-ui/creating-detail-views/index.mdx +3 -3
  51. package/docs/guides/extending-the-admin-ui/creating-list-views/index.mdx +3 -3
  52. package/docs/guides/extending-the-admin-ui/custom-data-table-components/index.mdx +1 -1
  53. package/docs/guides/extending-the-admin-ui/custom-form-inputs/index.mdx +3 -3
  54. package/docs/guides/extending-the-admin-ui/custom-timeline-components/index.mdx +1 -1
  55. package/docs/guides/extending-the-admin-ui/dashboard-widgets/index.mdx +1 -1
  56. package/docs/guides/extending-the-admin-ui/defining-routes/index.mdx +2 -2
  57. package/docs/guides/extending-the-admin-ui/getting-started/index.mdx +5 -5
  58. package/docs/guides/extending-the-admin-ui/nav-menu/index.mdx +1 -1
  59. package/docs/guides/extending-the-admin-ui/using-other-frameworks/index.mdx +1 -1
  60. package/docs/guides/extending-the-dashboard/creating-pages/detail-pages.mdx +1 -1
  61. package/docs/guides/extending-the-dashboard/creating-pages/index.mdx +2 -2
  62. package/docs/guides/extending-the-dashboard/creating-pages/list-pages.mdx +2 -2
  63. package/docs/guides/extending-the-dashboard/creating-pages/tabbed-pages.mdx +1 -1
  64. package/docs/guides/extending-the-dashboard/custom-form-components/index.mdx +2 -2
  65. package/docs/guides/extending-the-dashboard/customizing-pages/action-bar-items.mdx +1 -1
  66. package/docs/guides/extending-the-dashboard/customizing-pages/customizing-detail-pages.mdx +2 -2
  67. package/docs/guides/extending-the-dashboard/customizing-pages/customizing-login-page.mdx +1 -1
  68. package/docs/guides/extending-the-dashboard/customizing-pages/index.mdx +4 -4
  69. package/docs/guides/extending-the-dashboard/customizing-pages/page-blocks.mdx +2 -2
  70. package/docs/guides/extending-the-dashboard/data-fetching/index.mdx +1 -1
  71. package/docs/guides/extending-the-dashboard/extending-overview/index.mdx +3 -3
  72. package/docs/guides/extending-the-dashboard/migration/index.mdx +4 -4
  73. package/docs/guides/extending-the-dashboard/navigation/index.mdx +1 -1
  74. package/docs/guides/getting-started/graphql-intro/index.mdx +5 -5
  75. package/docs/guides/getting-started/installation/index.mdx +5 -5
  76. package/docs/guides/getting-started/try-the-api/index.mdx +2 -2
  77. package/docs/guides/how-to/cms-integration-plugin/index.mdx +12 -12
  78. package/docs/guides/how-to/codegen/index.mdx +1 -1
  79. package/docs/guides/how-to/configurable-products/index.mdx +1 -1
  80. package/docs/guides/how-to/digital-products/index.mdx +1 -1
  81. package/docs/guides/how-to/github-oauth-authentication/index.mdx +1 -1
  82. package/docs/guides/how-to/google-oauth-authentication/index.mdx +3 -3
  83. package/docs/guides/how-to/multi-vendor-marketplaces/index.mdx +2 -2
  84. package/docs/guides/how-to/paginated-list/index.mdx +1 -1
  85. package/docs/guides/how-to/publish-plugin/index.mdx +3 -3
  86. package/docs/guides/how-to/s3-asset-storage/index.mdx +1 -1
  87. package/docs/guides/storefront/active-order/index.mdx +4 -4
  88. package/docs/guides/storefront/checkout-flow/index.mdx +3 -3
  89. package/docs/guides/storefront/codegen/index.mdx +1 -1
  90. package/docs/guides/storefront/connect-api/index.mdx +2 -2
  91. package/docs/guides/storefront/customer-accounts/index.mdx +1 -1
  92. package/docs/guides/storefront/listing-products/index.mdx +1 -1
  93. package/docs/guides/storefront/navigation-menu/index.mdx +1 -1
  94. package/docs/guides/storefront/order-workflow/index.mdx +2 -2
  95. package/docs/guides/storefront/product-detail/index.mdx +4 -4
  96. package/docs/reference/admin-ui-api/ui-devkit/admin-ui-extension.mdx +1 -1
  97. package/docs/reference/core-plugins/admin-ui-plugin/index.mdx +1 -1
  98. package/docs/reference/core-plugins/dashboard-plugin/index.mdx +1 -1
  99. package/docs/reference/core-plugins/telemetry-plugin/index.mdx +1 -1
  100. package/docs/reference/typescript-api/auth/authentication-strategy.mdx +1 -1
  101. package/docs/reference/typescript-api/common/admin-ui/admin-ui-config.mdx +1 -1
  102. package/docs/reference/typescript-api/custom-fields/custom-field-type.mdx +1 -1
  103. package/docs/reference/typescript-api/import-export/import-parser.mdx +1 -1
  104. package/docs/reference/typescript-api/import-export/importer.mdx +1 -1
  105. package/docs/reference/typescript-api/import-export/populate.mdx +1 -1
  106. package/docs/reference/typescript-api/job-queue/default-job-queue-plugin.mdx +1 -1
  107. package/docs/reference/typescript-api/orders/order-item-price-calculation-strategy.mdx +1 -1
  108. package/docs/reference/typescript-api/services/asset-service.mdx +1 -1
  109. package/docs/reference/typescript-api/services/history-service.mdx +1 -1
  110. package/docs/reference/typescript-api/worker/bootstrap-worker.mdx +1 -1
  111. package/docs/user-guide/settings/taxes.mdx +1 -1
  112. package/package.json +2 -2
  113. package/src/dates.generated.ts +111 -111
@@ -60,7 +60,7 @@ For any database schema changes, it is advised to:
60
60
 
61
61
  1. Read the changelog breaking changes entries to see what changes to expect
62
62
  2. **Important:** Make a backup of your database!
63
- 3. Create a new database migration as described in the [Migrations guide](/guides/developer-guide/migrations/)
63
+ 3. Create a new database migration as described in the [Migrations guide](/developer-guide/migrations/)
64
64
  4. Manually check the migration script. In some cases manual action is needed to customize the script in order to correctly migrate your existing data.
65
65
  5. Test the migration script against non-production data.
66
66
  6. Only when you have verified that the migration works as expected, run it against your production database.
@@ -3,7 +3,7 @@ title: "Uploading Files"
3
3
  showtoc: true
4
4
  ---
5
5
 
6
- Vendure handles file uploads with the [GraphQL multipart request specification](https://github.com/jaydenseric/graphql-multipart-request-spec). Internally, we use the [graphql-upload package](https://github.com/jaydenseric/graphql-upload). Once uploaded, a file is known as an [Asset](/guides/core-concepts/images-assets/). Assets are typically used for images, but can represent any kind of binary data such as PDF files or videos.
6
+ Vendure handles file uploads with the [GraphQL multipart request specification](https://github.com/jaydenseric/graphql-multipart-request-spec). Internally, we use the [graphql-upload package](https://github.com/jaydenseric/graphql-upload). Once uploaded, a file is known as an [Asset](/core-concepts/images-assets/). Assets are typically used for images, but can represent any kind of binary data such as PDF files or videos.
7
7
 
8
8
  ## Upload clients
9
9
 
@@ -55,11 +55,11 @@ function UploadFile() {
55
55
 
56
56
  ## Custom upload mutations
57
57
 
58
- How about if you want to implement a custom mutation for file uploads? Let's take an example where we want to allow customers to set an avatar image. To do this, we'll add a [custom field](/guides/developer-guide/custom-fields/) to the Customer entity and then define a new mutation in the Shop API.
58
+ How about if you want to implement a custom mutation for file uploads? Let's take an example where we want to allow customers to set an avatar image. To do this, we'll add a [custom field](/developer-guide/custom-fields/) to the Customer entity and then define a new mutation in the Shop API.
59
59
 
60
60
  ### Configuration
61
61
 
62
- Let's define a custom field to associate the avatar `Asset` with the `Customer` entity. To keep everything encapsulated, we'll do all of this in a [plugin](/guides/developer-guide/plugins/)
62
+ Let's define a custom field to associate the avatar `Asset` with the `Customer` entity. To keep everything encapsulated, we'll do all of this in a [plugin](/developer-guide/plugins/)
63
63
 
64
64
  ```ts title="src/plugins/customer-avatar/customer-avatar.plugin.ts"
65
65
  import { Asset, LanguageCode, PluginCommonModule, VendurePlugin } from '@vendure/core';
@@ -13,14 +13,14 @@ in that case you won't be able to use the built-in Angular-specific components.
13
13
 
14
14
  ## Example: Creating a Product Detail View
15
15
 
16
- Let's say you have a plugin which adds a new entity to the database called `ProductReview`. You have already created a [list view](/guides/extending-the-admin-ui/creating-list-views/), and
16
+ Let's say you have a plugin which adds a new entity to the database called `ProductReview`. You have already created a [list view](/extending-the-admin-ui/creating-list-views/), and
17
17
  now you need a detail view which can be used to view and edit individual reviews.
18
18
 
19
19
  ### Extend the TypedBaseDetailComponent class
20
20
 
21
21
  The detail component itself is an Angular component which extends the [BaseDetailComponent](/reference/admin-ui-api/list-detail-views/base-detail-component/) or [TypedBaseDetailComponent](/reference/admin-ui-api/list-detail-views/typed-base-detail-component) class.
22
22
 
23
- This example assumes you have set up your project to use code generation as described in the [GraphQL code generation guide](/guides/how-to/codegen/#codegen-for-admin-ui-extensions).
23
+ This example assumes you have set up your project to use code generation as described in the [GraphQL code generation guide](/how-to/codegen/#codegen-for-admin-ui-extensions).
24
24
 
25
25
  ```ts title="src/plugins/reviews/ui/components/review-detail/review-detail.component.ts"
26
26
  import { ResultOf } from '@graphql-typed-document-node/core';
@@ -236,7 +236,7 @@ export default [
236
236
 
237
237
  ## Supporting custom fields
238
238
 
239
- From Vendure v2.2, it is possible for your [custom entities to support custom fields](/guides/developer-guide/database-entity/#supporting-custom-fields).
239
+ From Vendure v2.2, it is possible for your [custom entities to support custom fields](/developer-guide/database-entity/#supporting-custom-fields).
240
240
 
241
241
  If you have set up your entity to support custom fields, and you want custom fields to be available in the Admin UI detail view,
242
242
  you need to add the following to your detail component:
@@ -39,14 +39,14 @@ type ProductReviewList implements PaginatedList {
39
39
  ```
40
40
 
41
41
  :::info
42
- See the [Paginated Lists guide](/guides/how-to/paginated-list/) for details on how to implement this in your server plugin code.
42
+ See the [Paginated Lists guide](/how-to/paginated-list/) for details on how to implement this in your server plugin code.
43
43
  :::
44
44
 
45
45
  ### Create the list component
46
46
 
47
47
  The list component itself is an Angular component which extends the [BaseListComponent](/reference/admin-ui-api/list-detail-views/base-list-component/) or [TypedBaseListComponent](/reference/admin-ui-api/list-detail-views/typed-base-list-component) class.
48
48
 
49
- This example assumes you have set up your project to use code generation as described in the [GraphQL code generation guide](/guides/how-to/codegen/#codegen-for-admin-ui-extensions).
49
+ This example assumes you have set up your project to use code generation as described in the [GraphQL code generation guide](/how-to/codegen/#codegen-for-admin-ui-extensions).
50
50
 
51
51
  ```ts title="src/plugins/reviews/ui/components/review-list/review-list.component.ts"
52
52
  import { ChangeDetectionStrategy, Component } from '@angular/core';
@@ -247,7 +247,7 @@ export default [
247
247
 
248
248
  ## Supporting custom fields
249
249
 
250
- From Vendure v2.2, it is possible for your [custom entities to support custom fields](/guides/developer-guide/database-entity/#supporting-custom-fields).
250
+ From Vendure v2.2, it is possible for your [custom entities to support custom fields](/developer-guide/database-entity/#supporting-custom-fields).
251
251
 
252
252
  If you have set up your entity to support custom fields, and you want custom fields to be available in the Admin UI list view,
253
253
  you need to add the following to your list component:
@@ -3,7 +3,7 @@ title: 'Custom DataTable Components'
3
3
  weight: 6
4
4
  ---
5
5
 
6
- The Admin UI list views are powered by a data table component which features sorting, advanced filtering, pagination and more. It will also give you the option of displaying any configured [custom fields](/guides/developer-guide/custom-fields/) for the entity in question.
6
+ The Admin UI list views are powered by a data table component which features sorting, advanced filtering, pagination and more. It will also give you the option of displaying any configured [custom fields](/developer-guide/custom-fields/) for the entity in question.
7
7
 
8
8
  With Admin UI extensions, you can specify custom components to use in rendering any column of any data table - both custom fields _and_ built-in fields, using either Angular or React components.
9
9
 
@@ -2,7 +2,7 @@
2
2
  title: 'Custom Form Inputs'
3
3
  ---
4
4
 
5
- You can define custom Angular or React components which can be used to render [Custom Fields](/guides/developer-guide/custom-fields/) you have defined on your entities as well as [configurable args](/reference/typescript-api/configurable-operation-def/config-args/) used by custom [Configurable Operations](/guides/developer-guide/strategies-configurable-operations/#configurable-operations).
5
+ You can define custom Angular or React components which can be used to render [Custom Fields](/developer-guide/custom-fields/) you have defined on your entities as well as [configurable args](/reference/typescript-api/configurable-operation-def/config-args/) used by custom [Configurable Operations](/developer-guide/strategies-configurable-operations/#configurable-operations).
6
6
 
7
7
  ## For Custom Fields
8
8
 
@@ -128,7 +128,7 @@ export default [
128
128
 
129
129
  ### 3. Register the providers
130
130
 
131
- The `providers.ts` is then passed to the `compileUiExtensions()` function as described in the [UI Extensions Getting Started guide](/guides/extending-the-admin-ui/getting-started/):
131
+ The `providers.ts` is then passed to the `compileUiExtensions()` function as described in the [UI Extensions Getting Started guide](/extending-the-admin-ui/getting-started/):
132
132
 
133
133
  ```ts title="src/vendure-config.ts"
134
134
  import * as path from 'path';
@@ -253,7 +253,7 @@ export class RelationReviewInputComponent implements OnInit, FormInputComponent<
253
253
 
254
254
  ## For ConfigArgs
255
255
 
256
- [ConfigArgs](/reference/typescript-api/configurable-operation-def/config-args/) are used by classes which extend [Configurable Operations](/guides/developer-guide/strategies-configurable-operations/#configurable-operations) (such as ShippingCalculator or PaymentMethodHandler). These ConfigArgs allow user-input values to be passed to the operation's business logic.
256
+ [ConfigArgs](/reference/typescript-api/configurable-operation-def/config-args/) are used by classes which extend [Configurable Operations](/developer-guide/strategies-configurable-operations/#configurable-operations) (such as ShippingCalculator or PaymentMethodHandler). These ConfigArgs allow user-input values to be passed to the operation's business logic.
257
257
 
258
258
  They are configured in a very similar way to custom fields, and likewise can use custom form inputs by specifying the `ui` property.
259
259
 
@@ -75,5 +75,5 @@ export default [
75
75
  ];
76
76
  ```
77
77
 
78
- Then we need to add the `providers.ts` file to the `uiExtensions` array as described in the [UI Extensions Getting Started guide](/guides/extending-the-admin-ui/getting-started/).
78
+ Then we need to add the `providers.ts` file to the `uiExtensions` array as described in the [UI Extensions Getting Started guide](/extending-the-admin-ui/getting-started/).
79
79
 
@@ -74,7 +74,7 @@ We also need to define an `NgModule` for this component. This is because we will
74
74
 
75
75
  ### Register the widget
76
76
 
77
- Our widget now needs to be registered in our [providers file](/guides/extending-the-admin-ui/getting-started/#providers):
77
+ Our widget now needs to be registered in our [providers file](/extending-the-admin-ui/getting-started/#providers):
78
78
 
79
79
  ```ts title="src/plugins/reviews/ui/providers.ts"
80
80
  import { registerDashboardWidget } from '@vendure/admin-ui/core';
@@ -6,7 +6,7 @@ Routes allow you to mount entirely custom components at a given URL in the Admin
6
6
 
7
7
  ![Route area](./route-area.webp)
8
8
 
9
- Routes can be defined natively using either **Angular** or **React**. It is also possible to [use other frameworks](/guides/extending-the-admin-ui/using-other-frameworks/) in a more limited capacity.
9
+ Routes can be defined natively using either **Angular** or **React**. It is also possible to [use other frameworks](/extending-the-admin-ui/using-other-frameworks/) in a more limited capacity.
10
10
 
11
11
  ## Example: Creating a "Greeter" route
12
12
 
@@ -565,7 +565,7 @@ export default [
565
565
  ];
566
566
  ```
567
567
 
568
- A more powerful way to set the breadcrumbs is by using the `getBreadcrumbs` property. This is a function that receives any resolved detail data and returns an array of link/label pairs. An example of its use can be seen in the [Creating detail views guide](/guides/extending-the-admin-ui/creating-detail-views/#route-config).
568
+ A more powerful way to set the breadcrumbs is by using the `getBreadcrumbs` property. This is a function that receives any resolved detail data and returns an array of link/label pairs. An example of its use can be seen in the [Creating detail views guide](/extending-the-admin-ui/creating-detail-views/#route-config).
569
569
 
570
570
  ### Dynamically from the component
571
571
 
@@ -3,10 +3,10 @@ title: 'Getting Started'
3
3
  ---
4
4
 
5
5
  :::warning Angular Admin UI Deprecation
6
- The Angular-based Admin UI has been replaced by the new [React Admin Dashboard](/guides/extending-the-dashboard/getting-started/). The Angular Admin UI will not be maintained after **July 2026**.
6
+ The Angular-based Admin UI has been replaced by the new [React Admin Dashboard](/extending-the-dashboard/getting-started/). The Angular Admin UI will not be maintained after **July 2026**.
7
7
  Until then, we will continue patching critical bugs and security issues. Community contributions will always be merged and released.
8
8
 
9
- **For new projects, use the [React Admin Dashboard](/guides/extending-the-dashboard/getting-started/) instead.**
9
+ **For new projects, use the [React Admin Dashboard](/extending-the-dashboard/getting-started/) instead.**
10
10
 
11
11
  If you want to use the Admin UI and the Dashboard together, both plugins can now be used simultaneously without any special configuration.
12
12
  :::
@@ -282,7 +282,7 @@ Routes allow you to define completely custom views in the Admin UI.
282
282
 
283
283
  Your `routes.ts` file exports an array of objects which define new routes in the Admin UI. For example, imagine you have created a plugin which implements a simple content management system. You can define a route for the list of articles, and another for the detail view of an article.
284
284
 
285
- For a detailed instructions, see the [Defining Routes guide](/guides/extending-the-admin-ui/defining-routes/).
285
+ For a detailed instructions, see the [Defining Routes guide](/extending-the-admin-ui/defining-routes/).
286
286
 
287
287
  ## Dev vs Prod mode
288
288
 
@@ -410,7 +410,7 @@ yarn add copyfiles
410
410
 
411
411
  ## Using other frameworks
412
412
 
413
- While the Admin UI natively supports extensions written with Angular or React, it is still possible to create extensions using other front-end frameworks such as Vue or Solid. Note that creating extensions in this way is much more limited, with only the ability to define new routes, and limited access to internal services such as data fetching and notifications. See [UI extensions in other frameworks](/guides/extending-the-admin-ui/using-other-frameworks/).
413
+ While the Admin UI natively supports extensions written with Angular or React, it is still possible to create extensions using other front-end frameworks such as Vue or Solid. Note that creating extensions in this way is much more limited, with only the ability to define new routes, and limited access to internal services such as data fetching and notifications. See [UI extensions in other frameworks](/extending-the-admin-ui/using-other-frameworks/).
414
414
 
415
415
  ## IDE Support
416
416
 
@@ -461,7 +461,7 @@ Angular uses the concept of modules ([NgModules](https://angular.io/guide/ngmodu
461
461
 
462
462
  When creating your UI extensions, you can set your module to be either `lazy` or `shared`. Shared modules are loaded _eagerly_, i.e. their code is bundled up with the main app and loaded as soon as the app loads.
463
463
 
464
- As a rule, modules defining new routes should be lazily loaded (so that the code is only loaded once that route is activated), and modules defining [new navigations items](/guides/extending-the-admin-ui/nav-menu/) and [custom form input](/guides/extending-the-admin-ui/custom-form-inputs/) should be set to `shared`.
464
+ As a rule, modules defining new routes should be lazily loaded (so that the code is only loaded once that route is activated), and modules defining [new navigations items](/extending-the-admin-ui/nav-menu/) and [custom form input](/extending-the-admin-ui/custom-form-inputs/) should be set to `shared`.
465
465
 
466
466
  :::info
467
467
  "lazy" modules are equivalent to the new "routes" API, and "shared" modules are equivalent to the new "providers" API. In fact, behind the scenes,
@@ -10,7 +10,7 @@ access to routes in the app, and can be extended and modified by UI extensions.
10
10
 
11
11
  Once you have defined some custom routes, you need some way for the administrator to access them. For this you will use the [addNavMenuItem](/reference/admin-ui-api/nav-menu/add-nav-menu-item/) and [addNavMenuSection](/reference/admin-ui-api/nav-menu/add-nav-menu-section) functions.
12
12
 
13
- Let's add a new section to the Admin UI main nav bar containing a link to the "greeter" module from the [Getting Started guide](/guides/extending-the-admin-ui/getting-started/#routes) example:
13
+ Let's add a new section to the Admin UI main nav bar containing a link to the "greeter" module from the [Getting Started guide](/extending-the-admin-ui/getting-started/#routes) example:
14
14
 
15
15
  ```ts title="src/plugins/greeter/ui/providers.ts"
16
16
  import { addNavMenuSection } from '@vendure/admin-ui/core';
@@ -202,4 +202,4 @@ If your extension does not have a build step, you can still include the UiDevkit
202
202
 
203
203
  ## Next Steps
204
204
 
205
- Now you have created your extension, you need a way for your admin to access it. See [Adding Navigation Items](/guides/extending-the-admin-ui/nav-menu/)
205
+ Now you have created your extension, you need a way for your admin to access it. See [Adding Navigation Items](/extending-the-admin-ui/nav-menu/)
@@ -5,7 +5,7 @@ title: 'Creating Detail Pages'
5
5
  ## Setup
6
6
 
7
7
  :::info
8
- This guide assumes you have a `CmsPlugin` with an `Article` entity, as covered in the [Extending the Dashboard: Plugin Setup](/guides/extending-the-dashboard/extending-overview/#plugin-setup) guide.
8
+ This guide assumes you have a `CmsPlugin` with an `Article` entity, as covered in the [Extending the Dashboard: Plugin Setup](/extending-the-dashboard/extending-overview/#plugin-setup) guide.
9
9
  :::
10
10
 
11
11
  Detail pages can be created for any entity which has been exposed via the Admin API. Following the
@@ -34,7 +34,7 @@ export function TestPage() {
34
34
  Following this structure ensures that:
35
35
  - Your pages look consistent with the rest of the Dashboard
36
36
  - Your page content is responsive
37
- - Your page can be further extended using the [pageBlocks API](/guides/extending-the-dashboard/customizing-pages/page-blocks)
37
+ - Your page can be further extended using the [pageBlocks API](/extending-the-dashboard/customizing-pages/page-blocks)
38
38
 
39
39
  :::info
40
40
  Note that the [ListPage](/reference/dashboard/list-views/list-page) and [DetailPage](/reference/dashboard/detail-views/detail-page)
@@ -80,7 +80,7 @@ defineDashboardExtension({
80
80
  ```
81
81
 
82
82
  :::info
83
- For a complete guide to the navigation options available, see the [Navigation guide](/guides/extending-the-dashboard/navigation/)
83
+ For a complete guide to the navigation options available, see the [Navigation guide](/extending-the-dashboard/navigation/)
84
84
  :::
85
85
 
86
86
 
@@ -5,10 +5,10 @@ title: 'Creating List Pages'
5
5
  ## Setup
6
6
 
7
7
  :::info
8
- This guide assumes you have a `CmsPlugin` with an `Article` entity, as covered in the [Extending the Dashboard: Plugin Setup](/guides/extending-the-dashboard/extending-overview/#plugin-setup) guide.
8
+ This guide assumes you have a `CmsPlugin` with an `Article` entity, as covered in the [Extending the Dashboard: Plugin Setup](/extending-the-dashboard/extending-overview/#plugin-setup) guide.
9
9
  :::
10
10
 
11
- List pages can be easily created for any query in the Admin API that follows the [PaginatedList pattern](/guides/how-to/paginated-list/).
11
+ List pages can be easily created for any query in the Admin API that follows the [PaginatedList pattern](/how-to/paginated-list/).
12
12
 
13
13
  For example, the `articles` query of our `CmsPlugin` looks like this:
14
14
 
@@ -5,7 +5,7 @@ title: 'Creating Tabbed Pages'
5
5
  ## Setup
6
6
 
7
7
  :::info
8
- This guide assumes you have a basic understanding of creating custom pages in the Vendure Dashboard, as covered in the [Creating List Pages](/guides/extending-the-dashboard/creating-pages/list-pages) and [Creating Detail Pages](/guides/extending-the-dashboard/creating-pages/detail-pages) guides.
8
+ This guide assumes you have a basic understanding of creating custom pages in the Vendure Dashboard, as covered in the [Creating List Pages](/extending-the-dashboard/creating-pages/list-pages) and [Creating Detail Pages](/extending-the-dashboard/creating-pages/detail-pages) guides.
9
9
  :::
10
10
 
11
11
  Tabbed pages allow you to organize related content into separate tabs within a single page. This is useful
@@ -84,7 +84,7 @@ Here's how this component will look when rendered in your form:
84
84
 
85
85
  ## Custom Field Components
86
86
 
87
- Let's configure a [custom field](/guides/developer-guide/custom-fields/) which uses the `ColorPickerComponent` as its form component.
87
+ Let's configure a [custom field](/developer-guide/custom-fields/) which uses the `ColorPickerComponent` as its form component.
88
88
 
89
89
  First we need to register the component with the `defineDashboardExtension` function:
90
90
 
@@ -138,7 +138,7 @@ export class MyPlugin {}
138
138
 
139
139
  ## Configurable Operation Components
140
140
 
141
- The `ColorPickerComponent` can also be used as a [configurable operation argument](/guides/developer-guide/strategies-configurable-operations/#configurable-operations) component. For example, we can add a color code
141
+ The `ColorPickerComponent` can also be used as a [configurable operation argument](/developer-guide/strategies-configurable-operations/#configurable-operations) component. For example, we can add a color code
142
142
  to a shipping calculator:
143
143
 
144
144
  ```tsx title="src/plugins/my-plugin/config/custom-shipping-calculator.ts"
@@ -266,7 +266,7 @@ The dashboard provides several button variants you can use:
266
266
 
267
267
  To find the `pageId` for your action bar items:
268
268
 
269
- 1. Enable [Dev Mode](/guides/extending-the-dashboard/extending-overview/#dev-mode) in the dashboard
269
+ 1. Enable [Dev Mode](/extending-the-dashboard/extending-overview/#dev-mode) in the dashboard
270
270
  2. Navigate to the page where you want to add your action
271
271
  3. The page ID will be shown in the dev mode overlay
272
272
  4. Use this ID in your action bar item configuration
@@ -32,12 +32,12 @@ defineDashboardExtension({
32
32
  });
33
33
  ```
34
34
 
35
- To learn how to build custom form components, see the [Custom Form Elements guide](/guides/extending-the-dashboard/custom-form-components/).
35
+ To learn how to build custom form components, see the [Custom Form Elements guide](/extending-the-dashboard/custom-form-components/).
36
36
 
37
37
  ## Extending the detail query
38
38
 
39
39
  You might want to extend the GraphQL query used to fetch the data for the detail page. For example, to include new
40
- fields that your plugin has defined so that you can render them in [custom page blocks](/guides/extending-the-dashboard/customizing-pages/page-blocks).
40
+ fields that your plugin has defined so that you can render them in [custom page blocks](/extending-the-dashboard/customizing-pages/page-blocks).
41
41
 
42
42
  ```tsx title="index.tsx"
43
43
  import { defineDashboardExtension } from '@vendure/dashboard';
@@ -44,7 +44,7 @@ This will result in a login page like this:
44
44
  ## Fully custom login pages
45
45
 
46
46
  If you need even more control over the login page, you can also create an
47
- [unauthenticated route](/guides/extending-the-dashboard/navigation/#unauthenticated-routes) with a completely
47
+ [unauthenticated route](/extending-the-dashboard/navigation/#unauthenticated-routes) with a completely
48
48
  custom layout.
49
49
 
50
50
  ```tsx title="index.tsx"
@@ -4,7 +4,7 @@ title: 'Customizing Pages'
4
4
 
5
5
  Existing pages in the Dashboard can be customized in many ways:
6
6
 
7
- - [Action bar buttons](/guides/extending-the-dashboard/customizing-pages/action-bar-items) can be added to the top of the page
8
- - [Page blocks](/guides/extending-the-dashboard/customizing-pages/page-blocks) can be added at any position, and existing page blocks can be replaced or removed.
9
- - [Extend list pages](/guides/extending-the-dashboard/customizing-pages/customizing-list-pages) with custom components, data and bulk actions
10
- - [Extend detail pages](/guides/extending-the-dashboard/customizing-pages/customizing-detail-pages) with custom components and data
7
+ - [Action bar buttons](/extending-the-dashboard/customizing-pages/action-bar-items) can be added to the top of the page
8
+ - [Page blocks](/extending-the-dashboard/customizing-pages/page-blocks) can be added at any position, and existing page blocks can be replaced or removed.
9
+ - [Extend list pages](/extending-the-dashboard/customizing-pages/customizing-list-pages) with custom components, data and bulk actions
10
+ - [Extend detail pages](/extending-the-dashboard/customizing-pages/customizing-detail-pages) with custom components and data
@@ -3,7 +3,7 @@ title: 'Page Blocks'
3
3
  ---
4
4
 
5
5
  In the Dashboard, all pages are built from blocks. Every block has a `pageId` and a `blockId` which uniquely locates it in the
6
- app (see [Dev Mode](/guides/extending-the-dashboard/extending-overview/#dev-mode) section).
6
+ app (see [Dev Mode](/extending-the-dashboard/extending-overview/#dev-mode) section).
7
7
 
8
8
  You can also define your own blocks, which can be added to any page and can even replace the default blocks.
9
9
 
@@ -229,7 +229,7 @@ defineDashboardExtension({
229
229
 
230
230
  To find the `pageId` and `blockId` values for positioning your blocks:
231
231
 
232
- 1. Enable [Dev Mode](/guides/extending-the-dashboard/extending-overview/#dev-mode) in the dashboard
232
+ 1. Enable [Dev Mode](/extending-the-dashboard/extending-overview/#dev-mode) in the dashboard
233
233
  2. Navigate to the page where you want to add your block
234
234
  3. Hover over existing blocks to see their IDs
235
235
  4. Use these IDs in your block positioning configuration
@@ -119,7 +119,7 @@ to a file - by default you can find it at `src/gql/graphql-env.d.ts`.
119
119
  When you then use the `import { graphql } from '@/gql'` function to define your queries and mutations, you get automatic
120
120
  type safety when using the results in your components!
121
121
 
122
- When you have the `@/gql` path mapping correctly [set up as per the getting started guide](/guides/extending-the-dashboard/getting-started/#installation--setup), you should see that
122
+ When you have the `@/gql` path mapping correctly [set up as per the getting started guide](/extending-the-dashboard/getting-started/#installation--setup), you should see that
123
123
  your IDE is able to infer the TypeScript type of your queries and mutations, including the correct inputs and return
124
124
  types!
125
125
 
@@ -220,6 +220,6 @@ In Dev Mode, hovering any block in the dashboard will allow you to find the corr
220
220
 
221
221
  Now that you understand the fundamentals of extending the dashboard, explore these specific guides:
222
222
 
223
- - [Creating Pages](/guides/extending-the-dashboard/creating-pages/)
224
- - [Customizing Pages](/guides/extending-the-dashboard/customizing-pages/)
225
- - [Navigation](/guides/extending-the-dashboard/navigation/)
223
+ - [Creating Pages](/extending-the-dashboard/creating-pages/)
224
+ - [Customizing Pages](/extending-the-dashboard/customizing-pages/)
225
+ - [Navigation](/extending-the-dashboard/navigation/)
@@ -16,7 +16,7 @@ Community contributions will always be merged and released.
16
16
  A recommended approach to migrating is to run both the Admin UI _and_ the new Dashboard in parallel. This allows you to start building
17
17
  new features right away with the new Dashboard while maintaining access to existing features that have not yet been migrated.
18
18
 
19
- To do so, follow the instructions to [set up the Dashboard](/guides/extending-the-dashboard/getting-started/#installation--setup).
19
+ To do so, follow the instructions to [set up the Dashboard](/extending-the-dashboard/getting-started/#installation--setup).
20
20
  Both plugins can now be used simultaneously without any special configuration.
21
21
 
22
22
  ## AI-Assisted Migration
@@ -1589,14 +1589,14 @@ It is very likely you'll still need to do _some_ manual cleanup after an AI-assi
1589
1589
  things like:
1590
1590
 
1591
1591
  - Non-optimum styling choices
1592
- - Issues with the [tsconfig setup](/guides/extending-the-dashboard/getting-started/#installation--setup) not being perfectly implemented.
1592
+ - Issues with the [tsconfig setup](/extending-the-dashboard/getting-started/#installation--setup) not being perfectly implemented.
1593
1593
  - For more complex repo structures like a monorepo with plugins as separate libs, you may need to manually implement
1594
1594
  the initial setup of the config files.
1595
1595
 
1596
1596
  ## Manual Migration
1597
1597
 
1598
- If you would rather do a full manual migration, you should first follow the [Dashboard Getting Started guide](/guides/extending-the-dashboard/getting-started/)
1599
- and the [Extending the Dashboard guide](http://localhost:3001/guides/extending-the-dashboard/extending-overview/).
1598
+ If you would rather do a full manual migration, you should first follow the [Dashboard Getting Started guide](/extending-the-dashboard/getting-started/)
1599
+ and the [Extending the Dashboard guide](http://localhost:3001/extending-the-dashboard/extending-overview/).
1600
1600
 
1601
1601
  The remainder of this document details specific features, and how they are now implemented in the new Dashboard.
1602
1602
 
@@ -43,7 +43,7 @@ The dashboard comes with several built-in sections:
43
43
 
44
44
  ### Finding Section IDs & Ordering
45
45
 
46
- You can find the available IDs & their order value for all navigation sections and items using [Dev mode](/guides/extending-the-dashboard/extending-overview/#dev-mode):
46
+ You can find the available IDs & their order value for all navigation sections and items using [Dev mode](/extending-the-dashboard/extending-overview/#dev-mode):
47
47
 
48
48
  ![Dev mode navigation ids](./dev-mode-nav.webp)
49
49
 
@@ -50,8 +50,8 @@ Both GraphQL and REST are valid approaches to building an API. These are some of
50
50
  - **Many resources in a single request**: Very often, a single page in a web app will need to fetch data from multiple resources. For example, a product detail page might need to fetch the product, the product's variants, the product's collections, the product's reviews, and the product's images. With REST, this would require multiple requests. With GraphQL, you can fetch all of this data in a single request.
51
51
  - **Static typing**: GraphQL APIs are always defined by a statically typed schema. This means that you can be sure that the data you receive from the API will always be in the format you expect.
52
52
  - **Developer tooling**: The schema definition allows for powerful developer tooling. For example, the GraphQL Playground above with auto-complete and full documentation is generated automatically from the schema definition. You can also get auto-complete and type-checking directly in your IDE.
53
- - **Code generation**: TypeScript types can be generated automatically from the schema definition. This means that you can be sure that your frontend code is always in sync with the API. This end-to-end type safety is extremely valuable, especially when working on large projects or with teams. See the [GraphQL Code Generation guide](/guides/storefront/codegen/)
54
- - **Extensible**: Vendure is designed with extensibility in mind, and GraphQL is a perfect fit. You can extend the GraphQL API with your own custom queries, mutations, and types. You can also extend the built-in types with your own custom fields, or supply you own custom logic to resolve existing fields. See the [Extend the GraphQL API guide](/guides/developer-guide/extend-graphql-api/)
53
+ - **Code generation**: TypeScript types can be generated automatically from the schema definition. This means that you can be sure that your frontend code is always in sync with the API. This end-to-end type safety is extremely valuable, especially when working on large projects or with teams. See the [GraphQL Code Generation guide](/storefront/codegen/)
54
+ - **Extensible**: Vendure is designed with extensibility in mind, and GraphQL is a perfect fit. You can extend the GraphQL API with your own custom queries, mutations, and types. You can also extend the built-in types with your own custom fields, or supply you own custom logic to resolve existing fields. See the [Extend the GraphQL API guide](/developer-guide/extend-graphql-api/)
55
55
 
56
56
  ## GraphQL Terminology
57
57
 
@@ -398,7 +398,7 @@ type EmailAddressInUseError {
398
398
  ```
399
399
 
400
400
  :::info
401
- In Vendure, we use this pattern for almost all mutations. You can read more about it in the [Error Handling guide](/guides/developer-guide/error-handling/).
401
+ In Vendure, we use this pattern for almost all mutations. You can read more about it in the [Error Handling guide](/developer-guide/error-handling/).
402
402
  :::
403
403
 
404
404
  Now, when we perform this mutation, we need alter the way we select the fields in the response, since the response could be one of two types:
@@ -484,7 +484,7 @@ A resolver is a function which is responsible for fetching the data for a partic
484
484
  would be resolved by a function which fetches the list of customers from the database.
485
485
 
486
486
  To get started with Vendure's APIs, you don't need to know much about resolvers beyond this basic understanding. However,
487
- later on you may want to write your own custom resolvers to extend the API. This is covered in the [Extending the GraphQL API guide](/guides/developer-guide/extend-graphql-api/).
487
+ later on you may want to write your own custom resolvers to extend the API. This is covered in the [Extending the GraphQL API guide](/developer-guide/extend-graphql-api/).
488
488
 
489
489
  ## Querying data
490
490
 
@@ -555,7 +555,7 @@ can use to provide autocomplete.
555
555
 
556
556
  Code generation means the automatic generation of TypeScript types based on your GraphQL schema and your GraphQL operations. This is a very powerful feature that allows you to write your code in a type-safe manner, without you needing to manually write any types for your API calls.
557
557
 
558
- For more information see the [GraphQL Code Generation guide](/guides/storefront/codegen).
558
+ For more information see the [GraphQL Code Generation guide](/storefront/codegen).
559
559
 
560
560
  ## Further reading
561
561
 
@@ -76,7 +76,7 @@ If you'd rather have more control over the configuration, you can choose the "Ma
76
76
 
77
77
  Vendure supports a number of different databases. The `@vendure/create` tool will prompt you to select one.
78
78
 
79
- **To quickly test out Vendure, we recommend using SQLite**, which requires no external dependencies. You can always switch to a different database later [by changing your configuration file](/guides/developer-guide/configuration/#connecting-to-the-database).
79
+ **To quickly test out Vendure, we recommend using SQLite**, which requires no external dependencies. You can always switch to a different database later [by changing your configuration file](/developer-guide/configuration/#connecting-to-the-database).
80
80
 
81
81
  ```text
82
82
  ┌ Let's create a Vendure App ✨
@@ -104,7 +104,7 @@ If you select MySQL, MariaDB, or Postgres, you need to make sure you:
104
104
 
105
105
  3. **Have database credentials**: You need the username and password for a database user that has full permissions (CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT) on the database you created.
106
106
 
107
- For detailed database configuration examples, see the [Configuration guide](/guides/developer-guide/configuration/#connecting-to-the-database).
107
+ For detailed database configuration examples, see the [Configuration guide](/developer-guide/configuration/#connecting-to-the-database).
108
108
 
109
109
  :::
110
110
 
@@ -112,7 +112,7 @@ For detailed database configuration examples, see the [Configuration guide](/gui
112
112
 
113
113
  The final prompt will ask whether to populate your new Vendure server with some sample product data.
114
114
 
115
- **We recommend you do so**, as it will give you a good starting point for exploring the APIs, which we will cover in the [Try the API section](/guides/getting-started/try-the-api/), as well as providing some data to use when building your own storefront.
115
+ **We recommend you do so**, as it will give you a good starting point for exploring the APIs, which we will cover in the [Try the API section](/getting-started/try-the-api/), as well as providing some data to use when building your own storefront.
116
116
 
117
117
  ```text
118
118
  ┌ Let's create a Vendure App ✨
@@ -203,9 +203,9 @@ If you included the Next.js Storefront Starter, you can also access:
203
203
 
204
204
  Congratulations! 🥳 You now have a fully functional Vendure server running locally.
205
205
 
206
- Now you can explore Vendure by following our [Try the API guide](/guides/getting-started/try-the-api/) to learn how to interact with the server.
206
+ Now you can explore Vendure by following our [Try the API guide](/getting-started/try-the-api/) to learn how to interact with the server.
207
207
 
208
- If you are new to GraphQL, you should also check out our [Introducing GraphQL guide](/guides/getting-started/graphql-intro/).
208
+ If you are new to GraphQL, you should also check out our [Introducing GraphQL guide](/getting-started/graphql-intro/).
209
209
 
210
210
  :::tip
211
211
  Open the Dashboard at [http://localhost:3000/dashboard](http://localhost:3000/dashboard) in your browser and log in with the superadmin credentials you specified, which default to:
@@ -2,7 +2,7 @@
2
2
  title: 'Try the API'
3
3
  ---
4
4
 
5
- Once you have successfully installed Vendure locally following the [installation guide](/guides/getting-started/installation),
5
+ Once you have successfully installed Vendure locally following the [installation guide](/getting-started/installation),
6
6
  it's time to try out the API!
7
7
 
8
8
  :::note
@@ -162,7 +162,7 @@ if the response is an `ErrorResult`, we want to include the `errorCode` and `mes
162
162
  Running this mutation a second time should show that the quantity of the product in the order has increased by 1.
163
163
 
164
164
  :::info
165
- For more information about `ErrorResult` and the handling of errors in Vendure, see the [Error Handling guide](/guides/developer-guide/error-handling).
165
+ For more information about `ErrorResult` and the handling of errors in Vendure, see the [Error Handling guide](/developer-guide/error-handling).
166
166
  :::
167
167
 
168
168
  ## Admin API
@@ -6,9 +6,9 @@ A CMS integration plugin allows you to automatically synchronize your Vendure pr
6
6
 
7
7
  This is done in a way that establishes Vendure as the source of truth for the ecommerce's data.
8
8
 
9
- This guide demonstrates how to build a production-ready CMS integration plugin. The principles covered here are designed to be CMS-agnostic, however we do have [working examples](/guides/how-to/cms-integration-plugin/#platform-specific-setup) for various platforms.
9
+ This guide demonstrates how to build a production-ready CMS integration plugin. The principles covered here are designed to be CMS-agnostic, however we do have [working examples](/how-to/cms-integration-plugin/#platform-specific-setup) for various platforms.
10
10
 
11
- Platfroms covered in the [guide](/guides/how-to/cms-integration-plugin/#platform-specific-setup):
11
+ Platfroms covered in the [guide](/how-to/cms-integration-plugin/#platform-specific-setup):
12
12
 
13
13
  - [Payload](https://payloadcms.com/)
14
14
  - [Sanity](https://www.sanity.io/)
@@ -27,16 +27,16 @@ The code examples in this guide are simplified for educational purposes. The act
27
27
  ## Prerequisites
28
28
 
29
29
  - Node.js 20+ with npm package manager
30
- - An existing Vendure project created with the [Vendure create command](/guides/getting-started/installation/)
30
+ - An existing Vendure project created with the [Vendure create command](/getting-started/installation/)
31
31
  - An access key to a CMS platform that provides an API
32
32
 
33
33
  ## Core Concepts
34
34
 
35
- This [plugin](/guides/developer-guide/plugins/) leverages several key Vendure concepts:
35
+ This [plugin](/developer-guide/plugins/) leverages several key Vendure concepts:
36
36
 
37
- - **[EventBus](/guides/developer-guide/events/)**: Provides real-time notifications when entities are created, updated, or deleted.
38
- - **[Job Queues](/guides/developer-guide/worker-job-queue/)**: Ensures that synchronization tasks are performed reliably and asynchronously, with retries on failure.
39
- - **[Plugin API](/guides/developer-guide/plugins/)**: The foundation for extending Vendure with custom capabilities.
37
+ - **[EventBus](/developer-guide/events/)**: Provides real-time notifications when entities are created, updated, or deleted.
38
+ - **[Job Queues](/developer-guide/worker-job-queue/)**: Ensures that synchronization tasks are performed reliably and asynchronously, with retries on failure.
39
+ - **[Plugin API](/developer-guide/plugins/)**: The foundation for extending Vendure with custom capabilities.
40
40
 
41
41
  ## How It Works
42
42
 
@@ -92,11 +92,11 @@ npx vendure add -s CmsSpecificService --selected-plugin CmsPlugin
92
92
  # Explained later in the Event-Driven Synchronization Section
93
93
  ```
94
94
 
95
- Now we start by defining the main [plugin](/guides/developer-guide/plugins/) class, its [services](/guides/developer-guide/the-service-layer/), and the configuration types.
95
+ Now we start by defining the main [plugin](/developer-guide/plugins/) class, its [services](/developer-guide/the-service-layer/), and the configuration types.
96
96
 
97
97
  ### Plugin Definition
98
98
 
99
- The `CmsPlugin` class registers the necessary [services](/guides/developer-guide/the-service-layer/) (`CmsSyncService`, `CmsSpecificService`) and sets up any Admin API extensions.
99
+ The `CmsPlugin` class registers the necessary [services](/developer-guide/the-service-layer/) (`CmsSyncService`, `CmsSpecificService`) and sets up any Admin API extensions.
100
100
 
101
101
  ```ts title="src/plugins/cms/cms.plugin.ts"
102
102
  import { VendurePlugin, PluginCommonModule, Type, OnModuleInit } from '@vendure/core';
@@ -161,9 +161,9 @@ export interface SyncResponse {
161
161
 
162
162
  ## Event-Driven Synchronization
163
163
 
164
- The plugin uses Vendure's [EventBus](/guides/developer-guide/events/) to capture changes in real-time.
164
+ The plugin uses Vendure's [EventBus](/developer-guide/events/) to capture changes in real-time.
165
165
 
166
- In the [onModuleInit](/guides/developer-guide/events/#subscribing-to-events) lifecycle hook, we create job queues and subscribe to entity events.
166
+ In the [onModuleInit](/developer-guide/events/#subscribing-to-events) lifecycle hook, we create job queues and subscribe to entity events.
167
167
 
168
168
  ### Creating Job Queues and Subscribing to Events
169
169
 
@@ -280,7 +280,7 @@ The sync service handles several critical functions:
280
280
 
281
281
  ### Service Structure and Dependencies
282
282
 
283
- The service follows Vendure's [dependency injection pattern](/guides/developer-guide/the-service-layer/) and requires several core Vendure services:
283
+ The service follows Vendure's [dependency injection pattern](/developer-guide/the-service-layer/) and requires several core Vendure services:
284
284
 
285
285
  ```ts title="src/plugins/cms/services/cms-sync.service.ts"
286
286
  @Injectable()
@@ -16,7 +16,7 @@ directory.
16
16
  :::
17
17
 
18
18
  :::note
19
- This guide is for adding codegen to your Vendure plugins. For a guide on adding codegen to your storefront, see the [Storefront Codegen](/guides/storefront/codegen/) guide.
19
+ This guide is for adding codegen to your Vendure plugins. For a guide on adding codegen to your storefront, see the [Storefront Codegen](/storefront/codegen/) guide.
20
20
  :::
21
21
 
22
22
  ## Installation