@cdmbase/wiki-browser 12.0.18-alpha.10

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 (367) hide show
  1. package/LICENSE +21 -0
  2. package/lib/components/Logo.d.ts +4 -0
  3. package/lib/components/Logo.d.ts.map +1 -0
  4. package/lib/components/Logo.js +16 -0
  5. package/lib/components/Logo.js.map +1 -0
  6. package/lib/components/help/SidebarSearch.d.ts +8 -0
  7. package/lib/components/help/SidebarSearch.d.ts.map +1 -0
  8. package/lib/components/help/SidebarSearch.js +111 -0
  9. package/lib/components/help/SidebarSearch.js.map +1 -0
  10. package/lib/components/help/index.d.ts +2 -0
  11. package/lib/components/help/index.d.ts.map +1 -0
  12. package/lib/components/landing/FeatureCard.d.ts +13 -0
  13. package/lib/components/landing/FeatureCard.d.ts.map +1 -0
  14. package/lib/components/landing/FeatureCard.js +85 -0
  15. package/lib/components/landing/FeatureCard.js.map +1 -0
  16. package/lib/components/landing/QuickLinkCard.d.ts +8 -0
  17. package/lib/components/landing/QuickLinkCard.d.ts.map +1 -0
  18. package/lib/components/landing/QuickLinkCard.js +26 -0
  19. package/lib/components/landing/QuickLinkCard.js.map +1 -0
  20. package/lib/components/landing/SearchInput.d.ts +10 -0
  21. package/lib/components/landing/SearchInput.d.ts.map +1 -0
  22. package/lib/components/landing/SearchInput.js +223 -0
  23. package/lib/components/landing/SearchInput.js.map +1 -0
  24. package/lib/components/landing/index.d.ts +4 -0
  25. package/lib/components/landing/index.d.ts.map +1 -0
  26. package/lib/components/welcome.d.ts +3 -0
  27. package/lib/components/welcome.d.ts.map +1 -0
  28. package/lib/compute.d.ts +4 -0
  29. package/lib/compute.d.ts.map +1 -0
  30. package/lib/compute.js +96 -0
  31. package/lib/compute.js.map +1 -0
  32. package/lib/config/env-config.d.ts +4 -0
  33. package/lib/config/env-config.d.ts.map +1 -0
  34. package/lib/config/env-config.js +7 -0
  35. package/lib/config/env-config.js.map +1 -0
  36. package/lib/docs.config.d.ts +48 -0
  37. package/lib/docs.config.d.ts.map +1 -0
  38. package/lib/index.d.ts +4 -0
  39. package/lib/index.d.ts.map +1 -0
  40. package/lib/index.js +2 -0
  41. package/lib/index.js.map +1 -0
  42. package/lib/loaders/search.d.ts +1 -0
  43. package/lib/loaders/search.d.ts.map +1 -0
  44. package/lib/module.d.ts +4 -0
  45. package/lib/module.d.ts.map +1 -0
  46. package/lib/module.js +11 -0
  47. package/lib/module.js.map +1 -0
  48. package/lib/pages/ArticlePage/ArticlePage.d.ts +4 -0
  49. package/lib/pages/ArticlePage/ArticlePage.d.ts.map +1 -0
  50. package/lib/pages/ArticlePage/ArticlePage.js +222 -0
  51. package/lib/pages/ArticlePage/ArticlePage.js.map +1 -0
  52. package/lib/pages/ArticlePage/index.d.ts +3 -0
  53. package/lib/pages/ArticlePage/index.d.ts.map +1 -0
  54. package/lib/pages/ArticlePage/index.js +3 -0
  55. package/lib/pages/ArticlePage/index.js.map +1 -0
  56. package/lib/pages/CategoryCollection/CategoryCollection.d.ts +4 -0
  57. package/lib/pages/CategoryCollection/CategoryCollection.d.ts.map +1 -0
  58. package/lib/pages/CategoryCollection/CategoryCollection.js +103 -0
  59. package/lib/pages/CategoryCollection/CategoryCollection.js.map +1 -0
  60. package/lib/pages/CategoryCollection/index.d.ts +3 -0
  61. package/lib/pages/CategoryCollection/index.d.ts.map +1 -0
  62. package/lib/pages/CategoryCollection/index.js +3 -0
  63. package/lib/pages/CategoryCollection/index.js.map +1 -0
  64. package/lib/pages/Help/HelpIndex.d.ts +4 -0
  65. package/lib/pages/Help/HelpIndex.d.ts.map +1 -0
  66. package/lib/pages/Help/HelpIndex.js +44 -0
  67. package/lib/pages/Help/HelpIndex.js.map +1 -0
  68. package/lib/pages/Help/index.d.ts +4 -0
  69. package/lib/pages/Help/index.d.ts.map +1 -0
  70. package/lib/pages/Help/index.js +226 -0
  71. package/lib/pages/Help/index.js.map +1 -0
  72. package/lib/pages/Landing/index.d.ts +3 -0
  73. package/lib/pages/Landing/index.d.ts.map +1 -0
  74. package/lib/pages/Landing/index.js +281 -0
  75. package/lib/pages/Landing/index.js.map +1 -0
  76. package/lib/routes.json +2533 -0
  77. package/lib/seo.d.ts +22 -0
  78. package/lib/seo.d.ts.map +1 -0
  79. package/lib/slot-fill/FooterFill.d.ts +3 -0
  80. package/lib/slot-fill/FooterFill.d.ts.map +1 -0
  81. package/lib/slot-fill/FooterFill.js +18 -0
  82. package/lib/slot-fill/FooterFill.js.map +1 -0
  83. package/lib/slot-fill/LogoFill.d.ts +5 -0
  84. package/lib/slot-fill/LogoFill.d.ts.map +1 -0
  85. package/lib/slot-fill/LogoFill.js +74 -0
  86. package/lib/slot-fill/LogoFill.js.map +1 -0
  87. package/lib/slot-fill/consts.d.ts +5 -0
  88. package/lib/slot-fill/consts.d.ts.map +1 -0
  89. package/lib/slot-fill/consts.js +1 -0
  90. package/lib/slot-fill/consts.js.map +1 -0
  91. package/lib/slot-fill/index.d.ts +4 -0
  92. package/lib/slot-fill/index.d.ts.map +1 -0
  93. package/lib/templates/assets/images/add-link-frontend.png +0 -0
  94. package/lib/templates/assets/images/add-package-backend.png +0 -0
  95. package/lib/templates/assets/images/add-to-backend-module.png +0 -0
  96. package/lib/templates/assets/images/add-upload-client-frontend.png +0 -0
  97. package/lib/templates/assets/images/additional-parameters.png +0 -0
  98. package/lib/templates/assets/images/aeh-implementation.png +0 -0
  99. package/lib/templates/assets/images/aeh-usage.png +0 -0
  100. package/lib/templates/assets/images/apollo-client/recommendation_cache_mgmt.png +0 -0
  101. package/lib/templates/assets/images/app-deploy-new-version/jenkins1.PNG +0 -0
  102. package/lib/templates/assets/images/app-deploy-new-version/jenkins2.PNG +0 -0
  103. package/lib/templates/assets/images/auth-wrapper-code.png +0 -0
  104. package/lib/templates/assets/images/cdebase.png +0 -0
  105. package/lib/templates/assets/images/cdm-locales-directory.png +0 -0
  106. package/lib/templates/assets/images/client-settings.png +0 -0
  107. package/lib/templates/assets/images/codegen_file_update.png +0 -0
  108. package/lib/templates/assets/images/configuration.png +0 -0
  109. package/lib/templates/assets/images/copy-plugin.png +0 -0
  110. package/lib/templates/assets/images/docusaurus.png +0 -0
  111. package/lib/templates/assets/images/error-link.png +0 -0
  112. package/lib/templates/assets/images/error-sample.png +0 -0
  113. package/lib/templates/assets/images/extension copy.png +0 -0
  114. package/lib/templates/assets/images/extension.png +0 -0
  115. package/lib/templates/assets/images/graphql/graphql-folder-backend.png +0 -0
  116. package/lib/templates/assets/images/graphql/graphql-folder-with-gql.png +0 -0
  117. package/lib/templates/assets/images/i18n-config.png +0 -0
  118. package/lib/templates/assets/images/image.png +0 -0
  119. package/lib/templates/assets/images/logo.svg +10 -0
  120. package/lib/templates/assets/images/logo1.svg +1 -0
  121. package/lib/templates/assets/images/modify-upload-false-server.png +0 -0
  122. package/lib/templates/assets/images/navigation-auth-enabled.png +0 -0
  123. package/lib/templates/assets/images/org-dashboard-navigation.png +0 -0
  124. package/lib/templates/assets/images/org-navigation.png +0 -0
  125. package/lib/templates/assets/images/preferences_graphql_type.png +0 -0
  126. package/lib/templates/assets/images/provider.png +0 -0
  127. package/lib/templates/assets/images/route-config.png +0 -0
  128. package/lib/templates/assets/images/service-accounts.png +0 -0
  129. package/lib/templates/assets/images/source-code/source-code-environments.png +0 -0
  130. package/lib/templates/assets/images/source-code/source-code-organization.png +0 -0
  131. package/lib/templates/assets/images/spin-clone-develop-deployment/jenkins-changes.png +0 -0
  132. package/lib/templates/assets/images/spin-clone-develop-deployment/lerna-changes.png +0 -0
  133. package/lib/templates/assets/images/spin-clone-develop-deployment/root-package-json-changes.png +0 -0
  134. package/lib/templates/assets/images/spin-clone-develop-deployment/values-dev-changes.png +0 -0
  135. package/lib/templates/assets/images/sso-mappers.png +0 -0
  136. package/lib/templates/assets/images/sso-picture-mapper.png +0 -0
  137. package/lib/templates/assets/images/sso-settings.png +0 -0
  138. package/lib/templates/assets/images/timesheet_apollo_cache.png +0 -0
  139. package/lib/templates/assets/images/timesheet_query.png +0 -0
  140. package/lib/templates/assets/images/tutorial/docsVersionDropdown.png +0 -0
  141. package/lib/templates/assets/images/tutorial/localeDropdown.png +0 -0
  142. package/lib/templates/assets/images/unauthenticated.png +0 -0
  143. package/lib/templates/assets/images/undraw_docusaurus_mountain.svg +170 -0
  144. package/lib/templates/assets/images/undraw_docusaurus_react.svg +169 -0
  145. package/lib/templates/assets/images/undraw_docusaurus_tree.svg +1 -0
  146. package/lib/templates/assets/images/vite-plugin-config.png +0 -0
  147. package/lib/templates/content/docs/Generators/Project/generate-fullproject.md +12 -0
  148. package/lib/templates/content/docs/LLM/Logger.llm.md +194 -0
  149. package/lib/templates/content/docs/LLM/backend-proxies-services-llm.md +2687 -0
  150. package/lib/templates/content/docs/LLM/backend-service-llm.md +3384 -0
  151. package/lib/templates/content/docs/LLM/db_migration_llm.md +954 -0
  152. package/lib/templates/content/docs/LLM/frontend/REMIX-15.3-upgrade-llm.md +1245 -0
  153. package/lib/templates/content/docs/LLM/inngest/INNGEST_FUNCTION_DEVELOPMENT_GUIDE_LLM.md +1241 -0
  154. package/lib/templates/content/docs/LLM/inngest/INNGEST_NAMESPACE_LLM.md +384 -0
  155. package/lib/templates/content/docs/LLM/llm_workflow_namespace.md +384 -0
  156. package/lib/templates/content/docs/LLM/organization-components-form-llm.md +1395 -0
  157. package/lib/templates/content/docs/LLM/page-component-llm.md +173 -0
  158. package/lib/templates/content/docs/LLM/preferences-settings-llm.md +2781 -0
  159. package/lib/templates/content/docs/LLM/tailwind-css-llm.md +502 -0
  160. package/lib/templates/content/docs/UI/SchemaBasedUI.md +334 -0
  161. package/lib/templates/content/docs/UI/SlotFillComponent.md +334 -0
  162. package/lib/templates/content/docs/adminide-modules/account/auth0-login.md +31 -0
  163. package/lib/templates/content/docs/adminide-modules/account/index.md +14 -0
  164. package/lib/templates/content/docs/adminide-modules/account/keycloak-remix-setup.md +86 -0
  165. package/lib/templates/content/docs/adminide-modules/account/remix-auth-setup.md +79 -0
  166. package/lib/templates/content/docs/adminide-modules/account/various-auth-qatest.md +157 -0
  167. package/lib/templates/content/docs/adminide-modules/api-builders/graphql.md +906 -0
  168. package/lib/templates/content/docs/adminide-modules/billing/payments/index.md +14 -0
  169. package/lib/templates/content/docs/adminide-modules/billing/payments/stripe/index.md +14 -0
  170. package/lib/templates/content/docs/adminide-modules/billing/payments/stripe/settingup-stripe-locally.md +25 -0
  171. package/lib/templates/content/docs/adminide-modules/billing/tier-config.md +293 -0
  172. package/lib/templates/content/docs/adminide-modules/connectors/Connector.md +207 -0
  173. package/lib/templates/content/docs/adminide-modules/file-upload/index.md +16 -0
  174. package/lib/templates/content/docs/adminide-modules/file-upload/setup.md +435 -0
  175. package/lib/templates/content/docs/adminide-modules/file-upload/upload-file-using-signed-url.md +161 -0
  176. package/lib/templates/content/docs/adminide-modules/preferences/AddAdditionalPermissions.md +151 -0
  177. package/lib/templates/content/docs/adminide-modules/preferences/Configuration.md +241 -0
  178. package/lib/templates/content/docs/adminide-modules/preferences/Policy-Configuration.md +61 -0
  179. package/lib/templates/content/docs/adminide-modules/preferences/UI-components/ResourceSettingsLoader.md +319 -0
  180. package/lib/templates/content/docs/adminide-modules/preferences/contribute_scope_target.md +280 -0
  181. package/lib/templates/content/docs/adminide-modules/preferences/generate-urii.md +94 -0
  182. package/lib/templates/content/docs/adminide-modules/preferences/index.md +28 -0
  183. package/lib/templates/content/docs/adminide-modules/preferences/machine-configuration.md +157 -0
  184. package/lib/templates/content/docs/adminide-modules/preferences/pageSettings/generateCdecodeUri.md +1289 -0
  185. package/lib/templates/content/docs/adminide-modules/preferences/pageSettings/migratingFromUseSettings.md +215 -0
  186. package/lib/templates/content/docs/adminide-modules/preferences/permissions/Roles-Permissions.md +72 -0
  187. package/lib/templates/content/docs/adminide-modules/preferences/permissions/settingUserPermissions.md +139 -0
  188. package/lib/templates/content/docs/adminide-modules/preferences/preference-dependency.md +138 -0
  189. package/lib/templates/content/docs/adminide-modules/preferences/route-based-configuration.md +41 -0
  190. package/lib/templates/content/docs/adminide-modules/preferences/schema-configuration.md +71 -0
  191. package/lib/templates/content/docs/adminide-modules/preferences/supported.md +24 -0
  192. package/lib/templates/content/docs/adminide-modules/preferences/useSettingsLoader.md +248 -0
  193. package/lib/templates/content/docs/adminide-modules/project-tools/auth-providers.md +1317 -0
  194. package/lib/templates/content/docs/adminide-modules/project-tools/keycloak-guide.md +543 -0
  195. package/lib/templates/content/docs/adminide-modules/project-tools/tenant-management/tenant-based-authentication.md +846 -0
  196. package/lib/templates/content/docs/adminide-modules/project-tools/tenant-management/tenant-management.md +708 -0
  197. package/lib/templates/content/docs/adminide-modules/project-tools/tenant-management/tenants.md +1117 -0
  198. package/lib/templates/content/docs/chrome-extension/index.md +14 -0
  199. package/lib/templates/content/docs/chrome-extension/setup.md +30 -0
  200. package/lib/templates/content/docs/contributing/adding-package.md +23 -0
  201. package/lib/templates/content/docs/contributing/adding_new_modules.md +99 -0
  202. package/lib/templates/content/docs/contributing/architecture-updates.md +19 -0
  203. package/lib/templates/content/docs/contributing/avoid-using-promises-ui.md +116 -0
  204. package/lib/templates/content/docs/contributing/coding-guidelines.md +111 -0
  205. package/lib/templates/content/docs/contributing/do-and-dont.md +42 -0
  206. package/lib/templates/content/docs/contributing/faq.md +22 -0
  207. package/lib/templates/content/docs/contributing/folder-setup/browser.md +12 -0
  208. package/lib/templates/content/docs/contributing/folder-setup/config.md +12 -0
  209. package/lib/templates/content/docs/contributing/folder-setup/containers-server.md +12 -0
  210. package/lib/templates/content/docs/contributing/folder-setup/core.md +12 -0
  211. package/lib/templates/content/docs/contributing/folder-setup/graphql.md +12 -0
  212. package/lib/templates/content/docs/contributing/folder-setup/index.md +30 -0
  213. package/lib/templates/content/docs/contributing/folder-setup/module.md +12 -0
  214. package/lib/templates/content/docs/contributing/folder-setup/server.md +12 -0
  215. package/lib/templates/content/docs/contributing/folder-setup/services.md +12 -0
  216. package/lib/templates/content/docs/contributing/folder-setup/store.md +12 -0
  217. package/lib/templates/content/docs/contributing/frontend-coding.md +30 -0
  218. package/lib/templates/content/docs/contributing/git-subtree-sharing.md +73 -0
  219. package/lib/templates/content/docs/contributing/graphql-subscriptions.md +69 -0
  220. package/lib/templates/content/docs/contributing/how-to-contribute.md +30 -0
  221. package/lib/templates/content/docs/contributing/how_to_check_pure_esm.md +29 -0
  222. package/lib/templates/content/docs/contributing/index.md +60 -0
  223. package/lib/templates/content/docs/contributing/installation-issues.md +23 -0
  224. package/lib/templates/content/docs/contributing/keyboard-shortcut.md +131 -0
  225. package/lib/templates/content/docs/contributing/language/locale-support.md +12 -0
  226. package/lib/templates/content/docs/contributing/lerna-build-tools.md +516 -0
  227. package/lib/templates/content/docs/contributing/lerna-yarn-workspaces.md +95 -0
  228. package/lib/templates/content/docs/contributing/lint-and-formatter.md +20 -0
  229. package/lib/templates/content/docs/contributing/mobile-setup.md +16 -0
  230. package/lib/templates/content/docs/contributing/project-setup.md +233 -0
  231. package/lib/templates/content/docs/contributing/react/index.md +14 -0
  232. package/lib/templates/content/docs/contributing/react/lazy-component.md +70 -0
  233. package/lib/templates/content/docs/contributing/run-various-options.md +124 -0
  234. package/lib/templates/content/docs/contributing/schema-first-graphql-types.md +37 -0
  235. package/lib/templates/content/docs/contributing/source-code-organization.md +57 -0
  236. package/lib/templates/content/docs/contributing/staging-docker.md +88 -0
  237. package/lib/templates/content/docs/contributing/third-party/apollo-client-v3-tutorials.md +28 -0
  238. package/lib/templates/content/docs/contributing/third-party/index.md +18 -0
  239. package/lib/templates/content/docs/contributing/typescript-contribution.md +16 -0
  240. package/lib/templates/content/docs/devops/app-deploy-new-version.md +30 -0
  241. package/lib/templates/content/docs/devops/index.md +14 -0
  242. package/lib/templates/content/docs/devops/mobile-jenkins-build.md +40 -0
  243. package/lib/templates/content/docs/devops/versioning-the-project.md +128 -0
  244. package/lib/templates/content/docs/error-handler/application-error-handler.md +40 -0
  245. package/lib/templates/content/docs/error-handler/error-handling.md +26 -0
  246. package/lib/templates/content/docs/error-handler/index.md +16 -0
  247. package/lib/templates/content/docs/error-handler/logging-errors.md +14 -0
  248. package/lib/templates/content/docs/feature-api/copy-operation.md +427 -0
  249. package/lib/templates/content/docs/feature-api/feature-browser/assets.md +46 -0
  250. package/lib/templates/content/docs/feature-api/feature-browser/auth-permissions.md +12 -0
  251. package/lib/templates/content/docs/feature-api/feature-browser/feature.md +131 -0
  252. package/lib/templates/content/docs/feature-api/feature-browser/index.md +22 -0
  253. package/lib/templates/content/docs/feature-api/feature-browser/routes-menu.md +110 -0
  254. package/lib/templates/content/docs/feature-api/feature-browser/routing-convention.md +124 -0
  255. package/lib/templates/content/docs/feature-api/feature-browser/routing.md +338 -0
  256. package/lib/templates/content/docs/feature-api/feature-mobile/auth-permissions.md +20 -0
  257. package/lib/templates/content/docs/feature-api/feature-mobile/feature.md +130 -0
  258. package/lib/templates/content/docs/feature-api/feature-mobile/index.md +18 -0
  259. package/lib/templates/content/docs/feature-api/feature-mobile/navigation.md +187 -0
  260. package/lib/templates/content/docs/feature-api/feature-server/Scheduling.md +44 -0
  261. package/lib/templates/content/docs/feature-api/feature-server/dataloader.md +320 -0
  262. package/lib/templates/content/docs/feature-api/feature-server/dependency-injection.md +81 -0
  263. package/lib/templates/content/docs/feature-api/feature-server/feature.md +65 -0
  264. package/lib/templates/content/docs/feature-api/feature-server/generic-dataloader.md +135 -0
  265. package/lib/templates/content/docs/feature-api/feature-server/index.md +40 -0
  266. package/lib/templates/content/docs/feature-api/feature-server/migration.md +127 -0
  267. package/lib/templates/content/docs/feature-api/feature-server/mongo-model.md +72 -0
  268. package/lib/templates/content/docs/feature-api/feature-server/permissions.md +12 -0
  269. package/lib/templates/content/docs/feature-api/feature-server/policies.md +57 -0
  270. package/lib/templates/content/docs/feature-api/feature-server/preferences.md +57 -0
  271. package/lib/templates/content/docs/feature-api/feature-server/repositories.md +114 -0
  272. package/lib/templates/content/docs/feature-api/feature-server/resolvers.md +126 -0
  273. package/lib/templates/content/docs/feature-api/feature-server/rules.md +132 -0
  274. package/lib/templates/content/docs/feature-api/feature-server/schema.md +12 -0
  275. package/lib/templates/content/docs/feature-api/feature-server/services.md +102 -0
  276. package/lib/templates/content/docs/feature-api/feature-server/setup-resource-crud.md +359 -0
  277. package/lib/templates/content/docs/feature-api/index.md +18 -0
  278. package/lib/templates/content/docs/graphql/apolloClient-mutation.md +94 -0
  279. package/lib/templates/content/docs/graphql/index.md +14 -0
  280. package/lib/templates/content/docs/graphql/scalars.md +15 -0
  281. package/lib/templates/content/docs/help/index.md +14 -0
  282. package/lib/templates/content/docs/help/intro.md +16 -0
  283. package/lib/templates/content/docs/intl/ant-design-menu-translation.md +74 -0
  284. package/lib/templates/content/docs/intl/intl-namespace.md +129 -0
  285. package/lib/templates/content/docs/intl/vite-plugin-intl.md +87 -0
  286. package/lib/templates/content/docs/intl/webpack-plugin-intl.md +12 -0
  287. package/lib/templates/content/docs/intro.md +18 -0
  288. package/lib/templates/content/docs/knowledge/basic-fullstack.md +238 -0
  289. package/lib/templates/content/docs/mailing/index.md +14 -0
  290. package/lib/templates/content/docs/mailing/mailing-template.md +148 -0
  291. package/lib/templates/content/docs/mobile/App-navigation-generator.md +410 -0
  292. package/lib/templates/content/docs/mobile/MobileTestCases.md +264 -0
  293. package/lib/templates/content/docs/mobile/eas-profile-build.md +107 -0
  294. package/lib/templates/content/docs/mobile/expo-push-notification-setup.md +216 -0
  295. package/lib/templates/content/docs/mobile/index.md +14 -0
  296. package/lib/templates/content/docs/mobile/routes.md +83 -0
  297. package/lib/templates/content/docs/organization/adding-account-context.md +116 -0
  298. package/lib/templates/content/docs/organization/adding-org-mobile-navigation.md +22 -0
  299. package/lib/templates/content/docs/organization/adding-org-web-navigation.md +12 -0
  300. package/lib/templates/content/docs/organization/index.md +20 -0
  301. package/lib/templates/content/docs/organization/initialization.md +20 -0
  302. package/lib/templates/content/docs/organization/organization-resource-vs-resource.md +112 -0
  303. package/lib/templates/content/docs/remix/configuration/component-structure-best-practices.md +152 -0
  304. package/lib/templates/content/docs/remix/configuration/configurations.md +218 -0
  305. package/lib/templates/content/docs/remix/configuration/css-import-and-stylesheets.md +142 -0
  306. package/lib/templates/content/docs/remix/configuration/dont-subcomponent-network.md +166 -0
  307. package/lib/templates/content/docs/remix/configuration/generated-data-loaders.md +122 -0
  308. package/lib/templates/content/docs/remix/configuration/generated-resource-loaders.md +257 -0
  309. package/lib/templates/content/docs/remix/configuration/query-params-generator.md +216 -0
  310. package/lib/templates/content/docs/remix/configuration/routes-extra-icons.md +103 -0
  311. package/lib/templates/content/docs/remix/configuration/routes-json-advanced.md +86 -0
  312. package/lib/templates/content/docs/remix/configuration/routes-json-auth.md +113 -0
  313. package/lib/templates/content/docs/remix/configuration/routes-json-best-practices.md +55 -0
  314. package/lib/templates/content/docs/remix/configuration/routes-json-fields.md +79 -0
  315. package/lib/templates/content/docs/remix/configuration/routes-json-graphql.md +79 -0
  316. package/lib/templates/content/docs/remix/configuration/routes-json-index.md +112 -0
  317. package/lib/templates/content/docs/remix/configuration/routes-json-loaders.md +165 -0
  318. package/lib/templates/content/docs/remix/configuration/routes-json-middleware.md +196 -0
  319. package/lib/templates/content/docs/remix/configuration/routes-json-overview.md +53 -0
  320. package/lib/templates/content/docs/remix/data-loaders.md +43 -0
  321. package/lib/templates/content/docs/remix/devtools/remix-devtools.md +58 -0
  322. package/lib/templates/content/docs/remix/examples/changes-using-servercode.md +79 -0
  323. package/lib/templates/content/docs/remix/extra-icons.md +62 -0
  324. package/lib/templates/content/docs/remix/extra-links.md +65 -0
  325. package/lib/templates/content/docs/remix/generated-data-loaders.md +114 -0
  326. package/lib/templates/content/docs/remix/queryParamsGenerator.md +89 -0
  327. package/lib/templates/content/docs/remix/resources.md +16 -0
  328. package/lib/templates/content/docs/remix/styles.md +132 -0
  329. package/lib/templates/content/docs/remix/wiki.md +12 -0
  330. package/lib/templates/content/docs/security/auth-wrapper/auth-wrapper.md +24 -0
  331. package/lib/templates/content/docs/security/index.md +18 -0
  332. package/lib/templates/content/docs/security/secure-button-mobilenative.md +88 -0
  333. package/lib/templates/content/docs/security/secure-button-web.md +89 -0
  334. package/lib/templates/content/docs/server-side/account-customization.md +82 -0
  335. package/lib/templates/content/docs/server-side/apollo/caching.md +164 -0
  336. package/lib/templates/content/docs/server-side/backend-architecture/FINAL-DECISION.md +209 -0
  337. package/lib/templates/content/docs/server-side/backend-architecture/TRUE-FINAL-ARCHITECTURE.md +603 -0
  338. package/lib/templates/content/docs/server-side/backend-architecture/index1.md +0 -0
  339. package/lib/templates/content/docs/server-side/backend-coding.md +839 -0
  340. package/lib/templates/content/docs/server-side/e2b/manageing-template.md +197 -0
  341. package/lib/templates/content/docs/server-side/index.md +14 -0
  342. package/lib/templates/content/docs/server-side/inngest-functions-module.md +309 -0
  343. package/lib/templates/content/docs/server-side/listen-stripe-events.md +43 -0
  344. package/lib/templates/content/docs/server-side/slug-service.md +323 -0
  345. package/lib/templates/content/docs/tests/index.md +18 -0
  346. package/lib/templates/content/docs/tests/jest-test-debug-vscode.md +40 -0
  347. package/lib/templates/content/docs/tests/known-errors.md +116 -0
  348. package/lib/templates/content/docs/tests/service-test-template.md +118 -0
  349. package/lib/templates/content/docs/tests/test-setup.md +93 -0
  350. package/lib/templates/content/docs/xstate.md +23 -0
  351. package/lib/types.d.ts +37 -0
  352. package/lib/types.d.ts.map +1 -0
  353. package/lib/utils/docsNavigation.d.ts +9 -0
  354. package/lib/utils/docsNavigation.d.ts.map +1 -0
  355. package/lib/utils/docsNavigation.js +37 -0
  356. package/lib/utils/docsNavigation.js.map +1 -0
  357. package/lib/utils/helpCenterUtils.d.ts +26 -0
  358. package/lib/utils/helpCenterUtils.d.ts.map +1 -0
  359. package/lib/utils/index.d.ts +3 -0
  360. package/lib/utils/index.d.ts.map +1 -0
  361. package/lib/utils/index.js +3 -0
  362. package/lib/utils/index.js.map +1 -0
  363. package/lib/utils/markdownLoader.d.ts +36 -0
  364. package/lib/utils/markdownLoader.d.ts.map +1 -0
  365. package/lib/utils/markdownLoader.js +2242 -0
  366. package/lib/utils/markdownLoader.js.map +1 -0
  367. package/package.json +71 -0
@@ -0,0 +1,543 @@
1
+ # Keycloak Dashboard Setup Guide
2
+
3
+ This comprehensive guide covers how to configure different types of clients in the Keycloak Admin Console dashboard. We'll cover three main authentication flows:
4
+
5
+ 1. **Client Credentials Flow** - For machine-to-machine authentication
6
+ 2. **Implicit Flow** - For single-page applications (SPAs)
7
+ 3. **Standard Flow (Authorization Code) with Credentials** - For traditional web applications with PKCE support
8
+
9
+ ---
10
+
11
+ ## Table of Contents
12
+
13
+ - [Prerequisites](#prerequisites)
14
+ - [1. Client Credentials Flow Setup](#1-client-credentials-flow-setup)
15
+ - [2. Implicit Flow Setup](#2-implicit-flow-setup)
16
+ - [3. Standard Flow with Credentials Setup](#3-standard-flow-with-credentials-setup)
17
+ - [Troubleshooting](#troubleshooting)
18
+ - [Best Practices](#best-practices)
19
+
20
+ ---
21
+
22
+ ## Prerequisites
23
+
24
+ Before starting, ensure you have:
25
+
26
+ - Access to Keycloak Admin Console
27
+ - Admin privileges for the realm you're working with
28
+ - Basic understanding of OAuth 2.0 flows
29
+ - Knowledge of your application's redirect URIs and web origins
30
+
31
+ **Accessing Keycloak Admin Console:**
32
+
33
+ 1. Navigate to your Keycloak instance URL (e.g., `https://keycloak.yourdomain.com`)
34
+ 2. Click **Administration Console**
35
+ 3. Log in with admin credentials
36
+ 4. Select your realm from the dropdown (top-left corner)
37
+
38
+ ---
39
+
40
+ ## 1. Client Credentials Flow Setup
41
+
42
+ The Client Credentials flow is used for **machine-to-machine (M2M) authentication** where there's no user involved. This is ideal for:
43
+
44
+ - Service-to-service communication
45
+ - Backend API authentication
46
+ - Automated processes
47
+
48
+ ### Step 1: Create a New Client
49
+
50
+ 1. In the Keycloak Admin Console, navigate to:
51
+ - **Clients** → Click **Create client** (or **Add client**)
52
+
53
+ 2. **Client Settings:**
54
+ - **Client type:** Select **OpenID Connect**
55
+ - **Client ID:** Enter a unique identifier (e.g., `my-service-client`)
56
+ - Click **Next**
57
+
58
+ ### Step 2: Configure Capability Config
59
+
60
+ 1. **Capability config** screen:
61
+ - ✅ **Client authentication:** **ON** (Required for client credentials)
62
+ - ✅ **Service accounts roles:** **ON** (Enables service account)
63
+ - ❌ **Authorization:** OFF (unless you need fine-grained authorization)
64
+ - ❌ **Standard flow:** OFF (not needed for client credentials)
65
+ - ❌ **Direct access grants:** OFF (optional, enables password grant)
66
+ - ❌ **Implicit flow:** OFF
67
+ - Click **Next**
68
+
69
+ ### Step 3: Configure Login Settings
70
+
71
+ 1. **Login settings:**
72
+ - **Root URL:** Leave empty or enter your service base URL
73
+ - **Home URL:** Leave empty
74
+ - **Valid redirect URIs:** Leave empty (not used in client credentials flow)
75
+ - **Web origins:** Leave empty or add `*` for development
76
+ - Click **Save**
77
+
78
+ ### Step 4: Enable Service Account Roles
79
+
80
+ 1. After saving, you'll be on the **Client details** page
81
+ 2. Navigate to the **Service account roles** tab
82
+ 3. Click **Assign role**
83
+ 4. You'll see two options:
84
+ - **Filter by clients** - Assign roles from other clients
85
+ - **Filter by realm** - Assign realm-level roles
86
+
87
+ #### Assign Realm Management Roles (Common Use Case)
88
+
89
+ 1. Click **Filter by realm**
90
+ 2. In the search box, type `realm-management` or browse available roles
91
+ 3. Select the roles you need:
92
+ - **realm-admin** - Full realm administration
93
+ - **manage-users** - User management
94
+ - **manage-clients** - Client management
95
+ - **view-users** - Read-only user access
96
+ - **manage-realm** - Realm configuration management
97
+ 4. Click **Assign**
98
+
99
+ #### Assign Client Roles
100
+
101
+ 1. Click **Filter by clients**
102
+ 2. Select the client you want to assign roles from
103
+ 3. Select the specific roles
104
+ 4. Click **Assign**
105
+
106
+ ### Step 5: Get Client Credentials
107
+
108
+ 1. Navigate to the **Credentials** tab
109
+ 2. You'll see:
110
+ - **Client secret:** Copy this value (you'll only see it once!)
111
+ - **Client ID:** Your client identifier
112
+ 3. **Important:** Save the client secret securely - you cannot retrieve it again
113
+
114
+ ### Step 6: Test Client Credentials Flow
115
+
116
+ You can test the flow using curl:
117
+
118
+ ```bash
119
+ curl -X POST "https://your-keycloak-domain.com/realms/your-realm/protocol/openid-connect/token" \
120
+ -H "Content-Type: application/x-www-form-urlencoded" \
121
+ -d "grant_type=client_credentials" \
122
+ -d "client_id=my-service-client" \
123
+ -d "client_secret=your-client-secret"
124
+ ```
125
+
126
+ **Expected Response:**
127
+
128
+ ```json
129
+ {
130
+ "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
131
+ "expires_in": 300,
132
+ "token_type": "Bearer",
133
+ "scope": "profile email"
134
+ }
135
+ ```
136
+
137
+ ### Step 7: Verify Service Account User
138
+
139
+ 1. Navigate to **Users** → Search for your client ID (e.g., `service-account-my-service-client`)
140
+ 2. Click on the service account user
141
+ 3. Go to **Role mapping** tab
142
+ 4. Verify that the assigned roles appear under **Assigned roles**
143
+
144
+ ### Configuration Summary for Client Credentials Flow
145
+
146
+ | Setting | Value |
147
+ | ---------------------- | ---------------------- |
148
+ | Client authentication | ✅ ON |
149
+ | Service accounts roles | ✅ ON |
150
+ | Standard flow | ❌ OFF |
151
+ | Implicit flow | ❌ OFF |
152
+ | Direct access grants | ❌ OFF (optional) |
153
+ | Public client | ❌ OFF |
154
+ | Authorization | ❌ OFF (unless needed) |
155
+
156
+ ---
157
+
158
+ ## 2. Implicit Flow Setup
159
+
160
+ The Implicit flow is designed for **single-page applications (SPAs)** and mobile apps where the client secret cannot be securely stored. This flow returns tokens directly to the browser.
161
+
162
+ **⚠️ Security Note:** Implicit flow is considered less secure than Authorization Code flow with PKCE. Consider using Standard Flow with PKCE instead.
163
+
164
+ ### Step 1: Create a New Client
165
+
166
+ 1. Navigate to **Clients** → Click **Create client**
167
+ 2. **Client Settings:**
168
+ - **Client type:** Select **OpenID Connect**
169
+ - **Client ID:** Enter a unique identifier (e.g., `my-spa-client`)
170
+ - Click **Next**
171
+
172
+ ### Step 2: Configure Capability Config
173
+
174
+ 1. **Capability config** screen:
175
+ - ❌ **Client authentication:** **OFF** (Public client)
176
+ - ✅ **Implicit flow:** **ON**
177
+ - ❌ **Standard flow:** OFF (or ON if you want both)
178
+ - ❌ **Direct access grants:** OFF
179
+ - ❌ **Service accounts roles:** OFF
180
+ - Click **Next**
181
+
182
+ ### Step 3: Configure Login Settings
183
+
184
+ 1. **Login settings:**
185
+ - **Root URL:** Enter your application base URL (e.g., `https://myapp.com`)
186
+ - **Home URL:** Enter your application home page (e.g., `https://myapp.com/home`)
187
+ - **Valid redirect URIs:**
188
+ - Add your callback URLs (e.g., `https://myapp.com/callback`, `https://myapp.com/auth/callback`)
189
+ - For development: `http://localhost:3000/callback`
190
+ - Use wildcards carefully: `https://myapp.com/*`
191
+ - **Web origins:**
192
+ - Add allowed origins (e.g., `https://myapp.com`)
193
+ - For development: `http://localhost:3000`
194
+ - Use `*` only for development (not recommended for production)
195
+ - **Valid post logout redirect URIs:**
196
+ - Add logout redirect URLs (e.g., `https://myapp.com/logout`)
197
+ - Click **Save**
198
+
199
+ ### Step 4: Configure Advanced Settings
200
+
201
+ 1. After saving, go to the **Advanced** tab
202
+ 2. **Access Token Lifespan:** Set appropriate value (default: 5 minutes)
203
+ 3. **Implicit flow settings:**
204
+ - Ensure **Implicit flow** is enabled in the main settings
205
+ 4. **Fine Grain OpenID Connect Configuration:**
206
+ - **Access token:** ✅ Enabled
207
+ - **ID token:** ✅ Enabled (if you need user identity)
208
+
209
+ ### Step 5: Configure Protocol Mappers (Optional)
210
+
211
+ 1. Navigate to the **Client scopes** tab
212
+ 2. Click on **Dedicated scope** or **Default client scopes**
213
+ 3. You can add custom protocol mappers to include additional claims in tokens
214
+
215
+ ### Step 6: Test Implicit Flow
216
+
217
+ You can test using a browser redirect:
218
+
219
+ ```
220
+ https://your-keycloak-domain.com/realms/your-realm/protocol/openid-connect/auth?
221
+ client_id=my-spa-client
222
+ &redirect_uri=https://myapp.com/callback
223
+ &response_type=id_token token
224
+ &scope=openid profile email
225
+ &nonce=random-nonce-value
226
+ &state=random-state-value
227
+ ```
228
+
229
+ ## 3. Standard Flow with Credentials Setup
230
+
231
+ The Standard Flow (Authorization Code) with credentials is the **recommended approach** for web applications. When combined with PKCE (Proof Key for Code Exchange), it provides the best security for both public and confidential clients.
232
+
233
+ ### Step 1: Create a New Client
234
+
235
+ 1. Navigate to **Clients** → Click **Create client**
236
+ 2. **Client Settings:**
237
+ - **Client type:** Select **OpenID Connect**
238
+ - **Client ID:** Enter a unique identifier (e.g., `my-web-app-client`)
239
+ - Click **Next**
240
+
241
+ ### Step 2: Configure Capability Config
242
+
243
+ 1. **Capability config** screen:
244
+ - ✅ **Client authentication:** **ON** (for confidential client with credentials)
245
+ - ✅ **Standard flow:** **ON** (Authorization Code flow)
246
+ - ✅ **Direct access grants:** **ON** (optional, enables username/password login)
247
+ - ❌ **Implicit flow:** OFF (not recommended)
248
+ - ❌ **Service accounts roles:** OFF (unless you need M2M)
249
+ - Click **Next**
250
+
251
+ ### Step 3: Configure Login Settings
252
+
253
+ 1. **Login settings:**
254
+ - **Root URL:** Enter your application base URL (e.g., `https://myapp.com`)
255
+ - **Home URL:** Enter your application home page (e.g., `https://myapp.com/home`)
256
+ - **Valid redirect URIs:**
257
+ - Add your callback URLs:
258
+ - `https://myapp.com/auth/callback`
259
+ - `https://myapp.com/callback`
260
+ - For development: `http://localhost:3000/auth/callback`
261
+ - **Important:** Must match exactly (including trailing slashes)
262
+ - **Web origins:**
263
+ - Add allowed origins:
264
+ - `https://myapp.com`
265
+ - For development: `http://localhost:3000`
266
+ - **Valid post logout redirect URIs:**
267
+ - Add logout redirect URLs:
268
+ - `https://myapp.com/logout`
269
+ - `https://myapp.com/`
270
+ - Click **Save**
271
+
272
+ ### Step 4: Get Client Credentials
273
+
274
+ 1. Navigate to the **Credentials** tab
275
+ 2. You'll see:
276
+ - **Client secret:** Copy this value immediately
277
+ - **Client ID:** Your client identifier
278
+ - **Client authenticator:** Should be `client-secret` (default)
279
+ 3. **Regenerate secret:** If needed, click **Regenerate secret** (old secret becomes invalid)
280
+
281
+ ### Step 5: Configure Advanced Settings
282
+
283
+ 1. Go to the **Advanced** tab
284
+ 2. **Access Token Lifespan:** Set appropriate value (default: 5 minutes)
285
+ 3. **PKCE Code Challenge Method:**
286
+ - Select **S256** (recommended) or **plain**
287
+ - **S256** uses SHA-256 hash (more secure)
288
+ 4. **Proof Key for Code Exchange Code Challenge Method:**
289
+ - Set to **S256** for PKCE support
290
+ 5. **Fine Grain OpenID Connect Configuration:**
291
+ - **Access token:** ✅ Enabled
292
+ - **ID token:** ✅ Enabled
293
+ - **Refresh token:** ✅ Enabled (for long-lived sessions)
294
+
295
+ ### Step 6: Configure Client Scopes (Optional)
296
+
297
+ 1. Navigate to the **Client scopes** tab
298
+ 2. **Default client scopes** are automatically assigned:
299
+ - `openid` - Required for OpenID Connect
300
+ - `profile` - User profile information
301
+ - `email` - User email
302
+ - `roles` - User roles
303
+ 3. **Optional scopes:**
304
+ - Click **Add client scope** to add custom scopes
305
+ - Configure protocol mappers for custom claims
306
+
307
+ ### Step 7: Enable Direct Access Grants (Optional)
308
+
309
+ If you enabled **Direct access grants** in Step 2, you can also authenticate using username/password:
310
+
311
+ ```bash
312
+ curl -X POST "https://your-keycloak-domain.com/realms/your-realm/protocol/openid-connect/token" \
313
+ -H "Content-Type: application/x-www-form-urlencoded" \
314
+ -d "grant_type=password" \
315
+ -d "client_id=my-web-app-client" \
316
+ -d "client_secret=your-client-secret" \
317
+ -d "username=user@example.com" \
318
+ -d "password=user-password" \
319
+ -d "scope=openid profile email"
320
+ ```
321
+
322
+ **⚠️ Security Warning:** Direct access grants should only be used for trusted applications. Consider using Standard Flow with PKCE instead.
323
+
324
+ ### Configuration Summary for Standard Flow with Credentials
325
+
326
+ | Setting | Value |
327
+ | -------------------------- | --------------------- |
328
+ | Client authentication | ✅ ON |
329
+ | Public client | ❌ NO |
330
+ | Standard flow | ✅ ON |
331
+ | Direct access grants | ✅ ON (optional) |
332
+ | Implicit flow | ❌ OFF |
333
+ | PKCE Code Challenge Method | ✅ S256 (recommended) |
334
+ | Valid redirect URIs | ✅ Required |
335
+ | Web origins | ✅ Required |
336
+ | Client secret | ✅ Required |
337
+
338
+ ---
339
+
340
+ ## Troubleshooting
341
+
342
+ ### Common Issues and Solutions
343
+
344
+ #### Issue 1: "Invalid redirect URI"
345
+
346
+ **Symptoms:**
347
+
348
+ - Error: `Invalid parameter: redirect_uri`
349
+ - Authorization fails with redirect URI mismatch
350
+
351
+ **Solutions:**
352
+
353
+ 1. Check that the redirect URI in your request **exactly matches** one in **Valid redirect URIs**
354
+ 2. Ensure no trailing slashes mismatch (e.g., `/callback` vs `/callback/`)
355
+ 3. Check protocol (http vs https)
356
+ 4. Verify port numbers match
357
+ 5. For development, ensure `http://localhost:3000` is added (not just `http://localhost`)
358
+
359
+ #### Issue 2: "Client authentication failed"
360
+
361
+ **Symptoms:**
362
+
363
+ - Error: `Invalid client credentials`
364
+ - Token exchange fails
365
+
366
+ **Solutions:**
367
+
368
+ 1. Verify **Client authentication** is **ON** for confidential clients
369
+ 2. Check that **Client secret** is correct (copy-paste, no extra spaces)
370
+ 3. Ensure you're using the correct client ID
371
+ 4. Verify the client secret hasn't been regenerated
372
+ 5. For client credentials flow, ensure **Service accounts roles** is enabled
373
+
374
+ #### Issue 3: "Service account not found"
375
+
376
+ **Symptoms:**
377
+
378
+ - Error when trying to use client credentials flow
379
+ - Service account user doesn't exist
380
+
381
+ **Solutions:**
382
+
383
+ 1. Ensure **Service accounts roles** is enabled in client settings
384
+ 2. Save the client configuration
385
+ 3. Navigate to **Users** and search for `service-account-{client-id}`
386
+ 4. If user doesn't exist, toggle **Service accounts roles** off and on again
387
+ 5. Assign roles to the service account user
388
+
389
+ #### Issue 4: "CORS errors in browser"
390
+
391
+ **Symptoms:**
392
+
393
+ - Browser console shows CORS errors
394
+ - Requests blocked by browser
395
+
396
+ **Solutions:**
397
+
398
+ 1. Add your application origin to **Web origins** in client settings
399
+ 2. Ensure protocol matches (http vs https)
400
+ 3. Include port number if not standard (e.g., `http://localhost:3000`)
401
+ 4. For development, you can temporarily use `*` (not recommended for production)
402
+ 5. Check that **Root URL** is set correctly
403
+
404
+ #### Issue 5: "PKCE code challenge mismatch"
405
+
406
+ **Symptoms:**
407
+
408
+ - Error: `Invalid code verifier`
409
+ - Token exchange fails after authorization
410
+
411
+ **Solutions:**
412
+
413
+ 1. Ensure **code_verifier** matches the one used to generate **code_challenge**
414
+ 2. Verify **code_challenge_method** is set correctly (S256 or plain)
415
+ 3. Check that code verifier hasn't been modified between requests
416
+ 4. Ensure PKCE settings are enabled in client **Advanced** tab
417
+
418
+ #### Issue 6: "Access token expired too quickly"
419
+
420
+ **Symptoms:**
421
+
422
+ - Tokens expire before expected
423
+ - Frequent re-authentication required
424
+
425
+ **Solutions:**
426
+
427
+ 1. Go to client **Advanced** tab
428
+ 2. Increase **Access Token Lifespan** (default: 5 minutes)
429
+ 3. Consider implementing refresh token flow
430
+ 4. Ensure **Refresh token** is enabled in client scopes
431
+
432
+ #### Issue 7: "Roles not appearing in token"
433
+
434
+ **Symptoms:**
435
+
436
+ - User has roles assigned but they don't appear in access token
437
+ - Token claims missing role information
438
+
439
+ **Solutions:**
440
+
441
+ 1. Navigate to **Client scopes** → **roles** scope
442
+ 2. Check **Mappers** tab
443
+ 3. Ensure **realm roles** and **client roles** mappers are configured
444
+ 4. Verify user has roles assigned in **Users** → **Role mapping**
445
+ 5. Check that **roles** scope is included in token request
446
+
447
+ ---
448
+
449
+ ## Best Practices
450
+
451
+ ### Security Best Practices
452
+
453
+ 1. **Use Standard Flow with PKCE** instead of Implicit flow when possible
454
+ 2. **Never expose client secrets** in client-side code
455
+ 3. **Use HTTPS** for all redirect URIs in production
456
+ 4. **Limit redirect URIs** - don't use wildcards in production
457
+ 5. **Rotate client secrets** regularly (every 90 days)
458
+ 6. **Use appropriate token lifespans** - balance security and user experience
459
+ 7. **Enable refresh tokens** for long-lived sessions
460
+ 8. **Implement proper token storage** - use httpOnly cookies or secure storage
461
+
462
+ ### Client Configuration Best Practices
463
+
464
+ 1. **Naming Convention:**
465
+ - Use descriptive client IDs (e.g., `myapp-web-client`, `myapp-mobile-client`)
466
+ - Include environment suffix (e.g., `myapp-web-dev`, `myapp-web-prod`)
467
+
468
+ 2. **Redirect URIs:**
469
+ - Be specific - avoid wildcards in production
470
+ - Include all environments (dev, staging, prod)
471
+ - Document each redirect URI's purpose
472
+
473
+ 3. **Scopes:**
474
+ - Request only necessary scopes
475
+ - Create custom scopes for fine-grained permissions
476
+ - Document scope usage
477
+
478
+ 4. **Service Account Roles:**
479
+ - Follow principle of least privilege
480
+ - Assign only necessary roles
481
+ - Document role assignments
482
+ - Review role assignments regularly
483
+
484
+ 5. **Token Configuration:**
485
+ - Set appropriate access token lifespan
486
+ - Enable refresh tokens for better UX
487
+ - Configure token claims via protocol mappers
488
+
489
+ ### Environment-Specific Configuration
490
+
491
+ **Development:**
492
+
493
+ - Use `http://localhost` redirect URIs
494
+ - Shorter token lifespans for testing
495
+ - More permissive CORS settings
496
+
497
+ **Staging:**
498
+
499
+ - Use staging-specific domains
500
+ - Mirror production settings
501
+ - Test all flows thoroughly
502
+
503
+ **Production:**
504
+
505
+ - Strict redirect URI validation
506
+ - No wildcards in redirect URIs
507
+ - Longer token lifespans with refresh tokens
508
+ - Regular security audits
509
+
510
+ ### Monitoring and Maintenance
511
+
512
+ 1. **Regular Audits:**
513
+ - Review client configurations quarterly
514
+ - Check for unused clients
515
+ - Verify redirect URIs are still valid
516
+ - Review service account role assignments
517
+
518
+ 2. **Documentation:**
519
+ - Document each client's purpose
520
+ - Maintain a client registry
521
+ - Document redirect URIs and their purposes
522
+ - Keep track of client secret rotation dates
523
+
524
+ 3. **Testing:**
525
+ - Test authentication flows after configuration changes
526
+ - Verify token claims contain expected information
527
+ - Test error scenarios
528
+ - Validate CORS configuration
529
+
530
+ ---
531
+
532
+ ## Additional Resources
533
+
534
+ ### Keycloak Documentation
535
+
536
+ - [Keycloak Server Administration Guide](https://www.keycloak.org/docs/latest/server_admin/)
537
+ - [Keycloak Securing Apps Guide](https://www.keycloak.org/docs/latest/securing_apps/)
538
+ - [OAuth 2.0 Flows](https://oauth.net/2/)
539
+
540
+ ### Related Documentation in This Project
541
+
542
+ - See `docs/TROUBLESHOOTING_AUTH0_CLIENT_SECRET.md` for Auth0-specific troubleshooting
543
+ - Check `packages-modules/user-auth0/server-core/src/auth/keycloak/` for implementation examples