@ngxtm/devkit 3.4.0 → 3.5.0

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 (344) hide show
  1. package/package.json +2 -1
  2. package/rules/README.md +141 -0
  3. package/rules/dart/best-practices/SKILL.md +23 -0
  4. package/rules/dart/language/SKILL.md +52 -0
  5. package/rules/dart/tooling/SKILL.md +43 -0
  6. package/rules/dotnet/aspnet-core/SKILL.md +92 -0
  7. package/rules/dotnet/aspnet-core/references/REFERENCE.md +335 -0
  8. package/rules/dotnet/best-practices/SKILL.md +101 -0
  9. package/rules/dotnet/best-practices/references/REFERENCE.md +256 -0
  10. package/rules/dotnet/blazor/SKILL.md +146 -0
  11. package/rules/dotnet/blazor/references/REFERENCE.md +392 -0
  12. package/rules/dotnet/language/SKILL.md +82 -0
  13. package/rules/dotnet/language/references/REFERENCE.md +222 -0
  14. package/rules/dotnet/patterns.rule.md +388 -0
  15. package/rules/dotnet/razor-pages/SKILL.md +124 -0
  16. package/rules/dotnet/razor-pages/references/REFERENCE.md +321 -0
  17. package/rules/dotnet/security/SKILL.md +89 -0
  18. package/rules/dotnet/security/references/REFERENCE.md +295 -0
  19. package/rules/dotnet/tooling/SKILL.md +92 -0
  20. package/rules/dotnet/tooling/references/REFERENCE.md +300 -0
  21. package/rules/flutter/auto-route-navigation/SKILL.md +43 -0
  22. package/rules/flutter/auto-route-navigation/references/REFERENCE.md +19 -0
  23. package/rules/flutter/auto-route-navigation/references/router-config.md +62 -0
  24. package/rules/flutter/bloc-state-management/SKILL.md +64 -0
  25. package/rules/flutter/bloc-state-management/references/REFERENCE.md +20 -0
  26. package/rules/flutter/bloc-state-management/references/auth-bloc-example.md +52 -0
  27. package/rules/flutter/bloc-state-management/references/equatable-usage.md +56 -0
  28. package/rules/flutter/bloc-state-management/references/property-based-state.md +68 -0
  29. package/rules/flutter/bloc.rule.md +76 -0
  30. package/rules/flutter/cicd/SKILL.md +48 -0
  31. package/rules/flutter/cicd/references/advanced-workflow.md +66 -0
  32. package/rules/flutter/cicd/references/fastlane.md +139 -0
  33. package/rules/flutter/cicd/references/github-actions.md +59 -0
  34. package/rules/flutter/dependency-injection/SKILL.md +42 -0
  35. package/rules/flutter/dependency-injection/references/REFERENCE.md +15 -0
  36. package/rules/flutter/dependency-injection/references/modules.md +37 -0
  37. package/rules/flutter/error-handling/SKILL.md +32 -0
  38. package/rules/flutter/error-handling/references/REFERENCE.md +19 -0
  39. package/rules/flutter/error-handling/references/error-mapping.md +31 -0
  40. package/rules/flutter/feature-based-clean-architecture/SKILL.md +46 -0
  41. package/rules/flutter/feature-based-clean-architecture/references/REFERENCE.md +14 -0
  42. package/rules/flutter/feature-based-clean-architecture/references/folder-structure.md +36 -0
  43. package/rules/flutter/getx-navigation/SKILL.md +70 -0
  44. package/rules/flutter/getx-navigation/references/app-pages.md +40 -0
  45. package/rules/flutter/getx-navigation/references/middleware-example.md +29 -0
  46. package/rules/flutter/getx-state-management/SKILL.md +76 -0
  47. package/rules/flutter/getx-state-management/references/binding-example.md +32 -0
  48. package/rules/flutter/getx-state-management/references/reactive-vs-simple.md +39 -0
  49. package/rules/flutter/go-router-navigation/SKILL.md +57 -0
  50. package/rules/flutter/idiomatic-flutter/SKILL.md +20 -0
  51. package/rules/flutter/layer-based-clean-architecture/SKILL.md +50 -0
  52. package/rules/flutter/layer-based-clean-architecture/references/REFERENCE.md +60 -0
  53. package/rules/flutter/layer-based-clean-architecture/references/repository-mapping.md +50 -0
  54. package/rules/flutter/localization/SKILL.md +50 -0
  55. package/rules/flutter/localization/references/REFERENCE.md +48 -0
  56. package/rules/flutter/localization/references/sheet-loader.md +33 -0
  57. package/rules/flutter/navigator-v1-navigation/SKILL.md +71 -0
  58. package/rules/flutter/navigator-v1-navigation/references/on-generate-route.md +48 -0
  59. package/rules/flutter/performance/SKILL.md +24 -0
  60. package/rules/flutter/retrofit-networking/SKILL.md +51 -0
  61. package/rules/flutter/retrofit-networking/references/REFERENCE.md +19 -0
  62. package/rules/flutter/retrofit-networking/references/token-refresh.md +40 -0
  63. package/rules/flutter/riverpod-state-management/SKILL.md +53 -0
  64. package/rules/flutter/riverpod-state-management/references/architecture.md +124 -0
  65. package/rules/flutter/riverpod-state-management/references/best-practices.md +89 -0
  66. package/rules/flutter/riverpod-state-management/references/testing.md +73 -0
  67. package/rules/flutter/riverpod.rule.md +78 -0
  68. package/rules/flutter/security/SKILL.md +33 -0
  69. package/rules/flutter/security/references/REFERENCE.md +15 -0
  70. package/rules/flutter/security/references/network-security.md +28 -0
  71. package/rules/flutter/testing/SKILL.md +44 -0
  72. package/rules/flutter/testing/references/REFERENCE.md +21 -0
  73. package/rules/flutter/testing/references/bloc-testing.md +38 -0
  74. package/rules/flutter/testing/references/integration-testing.md +128 -0
  75. package/rules/flutter/testing/references/robot-pattern.md +82 -0
  76. package/rules/flutter/testing/references/unit-testing.md +130 -0
  77. package/rules/flutter/testing/references/widget-testing.md +120 -0
  78. package/rules/flutter/widgets/SKILL.md +37 -0
  79. package/rules/golang/chi-router/SKILL.md +219 -0
  80. package/rules/golang/chi-router/references/REFERENCE.md +13 -0
  81. package/rules/golang/chi-router/references/routing-patterns.md +205 -0
  82. package/rules/golang/cobra-cli/SKILL.md +227 -0
  83. package/rules/golang/cobra-cli/references/REFERENCE.md +13 -0
  84. package/rules/golang/cobra-cli/references/command-patterns.md +224 -0
  85. package/rules/golang/core/SKILL.md +210 -0
  86. package/rules/golang/core/references/REFERENCE.md +14 -0
  87. package/rules/golang/core/references/concurrency-patterns.md +114 -0
  88. package/rules/golang/core/references/error-handling.md +87 -0
  89. package/rules/golang/echo-framework/SKILL.md +215 -0
  90. package/rules/golang/echo-framework/references/REFERENCE.md +14 -0
  91. package/rules/golang/echo-framework/references/middleware-patterns.md +141 -0
  92. package/rules/golang/echo-framework/references/routing-patterns.md +140 -0
  93. package/rules/golang/ent-orm/SKILL.md +239 -0
  94. package/rules/golang/ent-orm/references/REFERENCE.md +13 -0
  95. package/rules/golang/ent-orm/references/schema-patterns.md +255 -0
  96. package/rules/golang/fiber-framework/SKILL.md +196 -0
  97. package/rules/golang/fiber-framework/references/REFERENCE.md +13 -0
  98. package/rules/golang/fiber-framework/references/routing-patterns.md +191 -0
  99. package/rules/golang/gin-framework/SKILL.md +205 -0
  100. package/rules/golang/gin-framework/references/REFERENCE.md +14 -0
  101. package/rules/golang/gin-framework/references/middleware-patterns.md +119 -0
  102. package/rules/golang/gorm-orm/SKILL.md +196 -0
  103. package/rules/golang/gorm-orm/references/REFERENCE.md +14 -0
  104. package/rules/golang/gorm-orm/references/model-definitions.md +167 -0
  105. package/rules/golang/gorm-orm/references/query-patterns.md +161 -0
  106. package/rules/golang/grpc/SKILL.md +231 -0
  107. package/rules/golang/grpc/references/REFERENCE.md +13 -0
  108. package/rules/golang/grpc/references/service-patterns.md +276 -0
  109. package/rules/golang/testify/SKILL.md +239 -0
  110. package/rules/golang/testify/references/REFERENCE.md +13 -0
  111. package/rules/golang/testify/references/assert-patterns.md +170 -0
  112. package/rules/golang/validator/SKILL.md +234 -0
  113. package/rules/golang/validator/references/REFERENCE.md +13 -0
  114. package/rules/golang/validator/references/validation-tags.md +211 -0
  115. package/rules/golang/viper-config/SKILL.md +244 -0
  116. package/rules/golang/viper-config/references/REFERENCE.md +13 -0
  117. package/rules/golang/viper-config/references/config-loading.md +181 -0
  118. package/rules/golang/wire-di/SKILL.md +243 -0
  119. package/rules/golang/wire-di/references/REFERENCE.md +13 -0
  120. package/rules/golang/wire-di/references/provider-patterns.md +193 -0
  121. package/rules/golang/zap-logging/SKILL.md +203 -0
  122. package/rules/golang/zap-logging/references/REFERENCE.md +13 -0
  123. package/rules/golang/zap-logging/references/logger-config.md +165 -0
  124. package/rules/java/build-gradle/SKILL.md +92 -0
  125. package/rules/java/build-gradle/references/REFERENCE.md +14 -0
  126. package/rules/java/build-gradle/references/kotlin-dsl.md +118 -0
  127. package/rules/java/build-gradle/references/task-configuration.md +132 -0
  128. package/rules/java/build-maven/SKILL.md +86 -0
  129. package/rules/java/build-maven/references/REFERENCE.md +14 -0
  130. package/rules/java/build-maven/references/dependency-management.md +111 -0
  131. package/rules/java/build-maven/references/lifecycle-phases.md +114 -0
  132. package/rules/java/graalvm-native/SKILL.md +105 -0
  133. package/rules/java/graalvm-native/references/REFERENCE.md +12 -0
  134. package/rules/java/java-collections-streams/SKILL.md +148 -0
  135. package/rules/java/java-collections-streams/references/REFERENCE.md +15 -0
  136. package/rules/java/java-collections-streams/references/collectors-patterns.md +178 -0
  137. package/rules/java/java-collections-streams/references/stream-pipelines.md +165 -0
  138. package/rules/java/java-concurrency/SKILL.md +187 -0
  139. package/rules/java/java-concurrency/references/REFERENCE.md +17 -0
  140. package/rules/java/java-concurrency/references/completable-future.md +165 -0
  141. package/rules/java/java-concurrency/references/executor-patterns.md +176 -0
  142. package/rules/java/java-concurrency/references/virtual-threads.md +190 -0
  143. package/rules/java/java-core-language/SKILL.md +121 -0
  144. package/rules/java/java-core-language/references/REFERENCE.md +15 -0
  145. package/rules/java/java-core-language/references/jvm-memory-model.md +160 -0
  146. package/rules/java/java-core-language/references/modern-java-features.md +168 -0
  147. package/rules/java/java-project-structure/SKILL.md +195 -0
  148. package/rules/java/java-project-structure/references/REFERENCE.md +15 -0
  149. package/rules/java/java-project-structure/references/maven-project-layout.md +199 -0
  150. package/rules/java/java-project-structure/references/module-system.md +159 -0
  151. package/rules/java/micronaut-core/SKILL.md +99 -0
  152. package/rules/java/micronaut-core/references/REFERENCE.md +12 -0
  153. package/rules/java/micronaut-reactive/SKILL.md +68 -0
  154. package/rules/java/micronaut-reactive/references/REFERENCE.md +12 -0
  155. package/rules/java/quarkus-core/SKILL.md +85 -0
  156. package/rules/java/quarkus-core/references/REFERENCE.md +12 -0
  157. package/rules/java/quarkus-reactive/SKILL.md +67 -0
  158. package/rules/java/quarkus-reactive/references/REFERENCE.md +12 -0
  159. package/rules/java/spring-batch/SKILL.md +102 -0
  160. package/rules/java/spring-batch/references/REFERENCE.md +12 -0
  161. package/rules/java/spring-boot-architecture/SKILL.md +206 -0
  162. package/rules/java/spring-boot-architecture/references/REFERENCE.md +15 -0
  163. package/rules/java/spring-boot-architecture/references/auto-configuration.md +158 -0
  164. package/rules/java/spring-boot-architecture/references/configuration-properties.md +202 -0
  165. package/rules/java/spring-boot-web/SKILL.md +217 -0
  166. package/rules/java/spring-boot-web/references/REFERENCE.md +17 -0
  167. package/rules/java/spring-cloud/SKILL.md +109 -0
  168. package/rules/java/spring-cloud/references/REFERENCE.md +13 -0
  169. package/rules/java/spring-data-jpa/SKILL.md +241 -0
  170. package/rules/java/spring-data-jpa/references/REFERENCE.md +16 -0
  171. package/rules/java/spring-security/SKILL.md +161 -0
  172. package/rules/java/spring-security/references/REFERENCE.md +16 -0
  173. package/rules/java/spring-security/references/jwt-auth-flow.md +213 -0
  174. package/rules/java/testing-junit-mockito/SKILL.md +135 -0
  175. package/rules/java/testing-junit-mockito/references/REFERENCE.md +15 -0
  176. package/rules/java/testing-junit-mockito/references/junit5-patterns.md +159 -0
  177. package/rules/java/testing-junit-mockito/references/mockito-patterns.md +148 -0
  178. package/rules/java/testing-junit-mockito/references/spring-boot-testing.md +152 -0
  179. package/rules/javascript/best-practices/SKILL.md +64 -0
  180. package/rules/javascript/best-practices/references/REFERENCE.md +91 -0
  181. package/rules/javascript/language/SKILL.md +71 -0
  182. package/rules/javascript/language/references/REFERENCE.md +106 -0
  183. package/rules/javascript/tooling/SKILL.md +60 -0
  184. package/rules/javascript/tooling/references/REFERENCE.md +107 -0
  185. package/rules/metadata.json +54 -0
  186. package/rules/nestjs/api-standards/SKILL.md +47 -0
  187. package/rules/nestjs/api-standards/references/pagination-wrapper.md +87 -0
  188. package/rules/nestjs/architecture/SKILL.md +68 -0
  189. package/rules/nestjs/architecture/references/dynamic-module.md +53 -0
  190. package/rules/nestjs/caching/SKILL.md +51 -0
  191. package/rules/nestjs/caching/references/REFERENCE.md +13 -0
  192. package/rules/nestjs/caching/references/cache-patterns.md +183 -0
  193. package/rules/nestjs/configuration/SKILL.md +41 -0
  194. package/rules/nestjs/configuration/references/REFERENCE.md +13 -0
  195. package/rules/nestjs/configuration/references/config-patterns.md +184 -0
  196. package/rules/nestjs/controllers-services/SKILL.md +63 -0
  197. package/rules/nestjs/controllers-services/references/REFERENCE.md +14 -0
  198. package/rules/nestjs/controllers-services/references/controller-patterns.md +119 -0
  199. package/rules/nestjs/controllers-services/references/service-patterns.md +129 -0
  200. package/rules/nestjs/database/SKILL.md +102 -0
  201. package/rules/nestjs/database/references/REFERENCE.md +14 -0
  202. package/rules/nestjs/database/references/typeorm-patterns.md +156 -0
  203. package/rules/nestjs/deployment/SKILL.md +36 -0
  204. package/rules/nestjs/deployment/references/REFERENCE.md +13 -0
  205. package/rules/nestjs/deployment/references/deployment-patterns.md +140 -0
  206. package/rules/nestjs/documentation/SKILL.md +64 -0
  207. package/rules/nestjs/documentation/references/REFERENCE.md +13 -0
  208. package/rules/nestjs/documentation/references/swagger-patterns.md +139 -0
  209. package/rules/nestjs/error-handling/SKILL.md +55 -0
  210. package/rules/nestjs/error-handling/references/REFERENCE.md +13 -0
  211. package/rules/nestjs/error-handling/references/exception-filters.md +152 -0
  212. package/rules/nestjs/file-uploads/SKILL.md +35 -0
  213. package/rules/nestjs/file-uploads/references/REFERENCE.md +13 -0
  214. package/rules/nestjs/file-uploads/references/upload-patterns.md +125 -0
  215. package/rules/nestjs/observability/SKILL.md +39 -0
  216. package/rules/nestjs/observability/references/REFERENCE.md +13 -0
  217. package/rules/nestjs/observability/references/logging-metrics.md +175 -0
  218. package/rules/nestjs/performance/SKILL.md +60 -0
  219. package/rules/nestjs/performance/references/REFERENCE.md +13 -0
  220. package/rules/nestjs/performance/references/performance-patterns.md +107 -0
  221. package/rules/nestjs/real-time/SKILL.md +45 -0
  222. package/rules/nestjs/real-time/references/REFERENCE.md +13 -0
  223. package/rules/nestjs/real-time/references/websocket-patterns.md +121 -0
  224. package/rules/nestjs/scheduling/SKILL.md +39 -0
  225. package/rules/nestjs/scheduling/references/REFERENCE.md +13 -0
  226. package/rules/nestjs/scheduling/references/scheduling-patterns.md +137 -0
  227. package/rules/nestjs/search/SKILL.md +41 -0
  228. package/rules/nestjs/search/references/REFERENCE.md +13 -0
  229. package/rules/nestjs/search/references/search-patterns.md +137 -0
  230. package/rules/nestjs/security/SKILL.md +87 -0
  231. package/rules/nestjs/security/references/REFERENCE.md +14 -0
  232. package/rules/nestjs/security/references/authentication.md +151 -0
  233. package/rules/nestjs/testing/SKILL.md +40 -0
  234. package/rules/nestjs/testing/references/REFERENCE.md +14 -0
  235. package/rules/nestjs/testing/references/unit-testing.md +179 -0
  236. package/rules/nestjs/transport/SKILL.md +45 -0
  237. package/rules/nestjs/transport/references/REFERENCE.md +13 -0
  238. package/rules/nestjs/transport/references/microservices-patterns.md +170 -0
  239. package/rules/nextjs/app-router/SKILL.md +46 -0
  240. package/rules/nextjs/app-router/references/REFERENCE.md +14 -0
  241. package/rules/nextjs/app-router/references/routing-patterns.md +182 -0
  242. package/rules/nextjs/architecture/SKILL.md +44 -0
  243. package/rules/nextjs/architecture/references/fsd-structure.md +77 -0
  244. package/rules/nextjs/authentication/SKILL.md +29 -0
  245. package/rules/nextjs/authentication/references/auth-implementation.md +73 -0
  246. package/rules/nextjs/caching/SKILL.md +66 -0
  247. package/rules/nextjs/caching/references/REFERENCE.md +13 -0
  248. package/rules/nextjs/caching/references/cache-strategies.md +168 -0
  249. package/rules/nextjs/data-access-layer/SKILL.md +33 -0
  250. package/rules/nextjs/data-access-layer/references/patterns.md +66 -0
  251. package/rules/nextjs/data-fetching/SKILL.md +59 -0
  252. package/rules/nextjs/data-fetching/references/REFERENCE.md +13 -0
  253. package/rules/nextjs/data-fetching/references/fetch-patterns.md +160 -0
  254. package/rules/nextjs/internationalization/SKILL.md +105 -0
  255. package/rules/nextjs/internationalization/references/REFERENCE.md +13 -0
  256. package/rules/nextjs/internationalization/references/i18n-patterns.md +180 -0
  257. package/rules/nextjs/optimization/SKILL.md +64 -0
  258. package/rules/nextjs/optimization/references/REFERENCE.md +13 -0
  259. package/rules/nextjs/optimization/references/optimization-patterns.md +190 -0
  260. package/rules/nextjs/rendering/SKILL.md +91 -0
  261. package/rules/nextjs/rendering/references/REFERENCE.md +13 -0
  262. package/rules/nextjs/rendering/references/rendering-modes.md +163 -0
  263. package/rules/nextjs/server-actions/SKILL.md +46 -0
  264. package/rules/nextjs/server-actions/references/REFERENCE.md +13 -0
  265. package/rules/nextjs/server-actions/references/action-patterns.md +188 -0
  266. package/rules/nextjs/server-components/SKILL.md +52 -0
  267. package/rules/nextjs/server-components/references/REFERENCE.md +13 -0
  268. package/rules/nextjs/server-components/references/component-patterns.md +175 -0
  269. package/rules/nextjs/state-management/SKILL.md +73 -0
  270. package/rules/nextjs/state-management/references/REFERENCE.md +13 -0
  271. package/rules/nextjs/state-management/references/state-patterns.md +218 -0
  272. package/rules/nextjs/styling/SKILL.md +31 -0
  273. package/rules/nextjs/styling/references/implementation.md +56 -0
  274. package/rules/react/component-patterns/SKILL.md +66 -0
  275. package/rules/react/component-patterns/references/REFERENCE.md +126 -0
  276. package/rules/react/hooks/SKILL.md +60 -0
  277. package/rules/react/hooks/references/REFERENCE.md +132 -0
  278. package/rules/react/hooks.rule.md +79 -0
  279. package/rules/react/performance/SKILL.md +69 -0
  280. package/rules/react/performance/references/REFERENCE.md +143 -0
  281. package/rules/react/security/SKILL.md +46 -0
  282. package/rules/react/security/references/REFERENCE.md +170 -0
  283. package/rules/react/state-management/SKILL.md +56 -0
  284. package/rules/react/state-management/references/REFERENCE.md +137 -0
  285. package/rules/react/testing/SKILL.md +45 -0
  286. package/rules/react/testing/references/REFERENCE.md +149 -0
  287. package/rules/react/tooling/SKILL.md +39 -0
  288. package/rules/react/typescript/SKILL.md +53 -0
  289. package/rules/rust/actix-web/SKILL.md +160 -0
  290. package/rules/rust/actix-web/references/REFERENCE.md +13 -0
  291. package/rules/rust/actix-web/references/handler-patterns.md +198 -0
  292. package/rules/rust/async-graphql/SKILL.md +228 -0
  293. package/rules/rust/async-graphql/references/REFERENCE.md +13 -0
  294. package/rules/rust/async-graphql/references/schema-patterns.md +215 -0
  295. package/rules/rust/axum/SKILL.md +161 -0
  296. package/rules/rust/axum/references/REFERENCE.md +14 -0
  297. package/rules/rust/axum/references/handler-patterns.md +97 -0
  298. package/rules/rust/bevy/SKILL.md +206 -0
  299. package/rules/rust/bevy/references/REFERENCE.md +13 -0
  300. package/rules/rust/bevy/references/ecs-patterns.md +226 -0
  301. package/rules/rust/clap/SKILL.md +217 -0
  302. package/rules/rust/clap/references/REFERENCE.md +13 -0
  303. package/rules/rust/clap/references/derive-patterns.md +205 -0
  304. package/rules/rust/core/SKILL.md +154 -0
  305. package/rules/rust/core/references/REFERENCE.md +14 -0
  306. package/rules/rust/core/references/error-handling.md +92 -0
  307. package/rules/rust/diesel-orm/SKILL.md +176 -0
  308. package/rules/rust/diesel-orm/references/REFERENCE.md +13 -0
  309. package/rules/rust/diesel-orm/references/schema-patterns.md +206 -0
  310. package/rules/rust/rocket/SKILL.md +182 -0
  311. package/rules/rust/rocket/references/REFERENCE.md +13 -0
  312. package/rules/rust/rocket/references/handler-patterns.md +209 -0
  313. package/rules/rust/sea-orm/SKILL.md +230 -0
  314. package/rules/rust/sea-orm/references/REFERENCE.md +13 -0
  315. package/rules/rust/sea-orm/references/entity-patterns.md +221 -0
  316. package/rules/rust/serde-serialization/SKILL.md +150 -0
  317. package/rules/rust/serde-serialization/references/REFERENCE.md +13 -0
  318. package/rules/rust/serde-serialization/references/serialization-patterns.md +199 -0
  319. package/rules/rust/sqlx-database/SKILL.md +140 -0
  320. package/rules/rust/sqlx-database/references/REFERENCE.md +13 -0
  321. package/rules/rust/sqlx-database/references/query-patterns.md +210 -0
  322. package/rules/rust/tauri/SKILL.md +180 -0
  323. package/rules/rust/tauri/references/REFERENCE.md +13 -0
  324. package/rules/rust/tauri/references/command-patterns.md +209 -0
  325. package/rules/rust/tokio-runtime/SKILL.md +167 -0
  326. package/rules/rust/tokio-runtime/references/REFERENCE.md +14 -0
  327. package/rules/rust/tokio-runtime/references/async-patterns.md +137 -0
  328. package/rules/rust/tokio-runtime/references/synchronization.md +152 -0
  329. package/rules/rust/tonic/SKILL.md +231 -0
  330. package/rules/rust/tonic/references/REFERENCE.md +13 -0
  331. package/rules/rust/tonic/references/service-patterns.md +213 -0
  332. package/rules/rust/tracing/SKILL.md +214 -0
  333. package/rules/rust/tracing/references/REFERENCE.md +13 -0
  334. package/rules/rust/tracing/references/instrumentation.md +187 -0
  335. package/rules/typescript/best-practices/SKILL.md +108 -0
  336. package/rules/typescript/best-practices/references/REFERENCE.md +68 -0
  337. package/rules/typescript/language/SKILL.md +72 -0
  338. package/rules/typescript/language/references/REFERENCE.md +67 -0
  339. package/rules/typescript/patterns.rule.md +85 -0
  340. package/rules/typescript/security/SKILL.md +59 -0
  341. package/rules/typescript/security/references/REFERENCE.md +113 -0
  342. package/rules/typescript/tooling/SKILL.md +52 -0
  343. package/rules/typescript/tooling/references/REFERENCE.md +110 -0
  344. package/skills/learn/SKILL.md +476 -0
@@ -0,0 +1,139 @@
1
+ # Advanced Fastlane Standards
2
+
3
+ Automates signing, build versioning, flavors, and multi-channel distribution (Firebase vs. Stores).
4
+
5
+ ## Prerequisites
6
+
7
+ 1. **Versioning**: Use `flutter_version` or `cider` to sync Fastlane with `pubspec.yaml`.
8
+ 2. **Firebase**: Install plugin: `bundle exec fastlane add_plugin firebase_app_distribution`.
9
+ 3. **Flavors**: Ensure your Flutter app is set up with Flavors (e.g., `dev`, `prod` schemes).
10
+
11
+ ## Android Configuration (`android/fastlane/Fastfile`)
12
+
13
+ Supported lanes:
14
+
15
+ - `staging`: Builds `dev` flavor -> Firebase App Distribution.
16
+ - `prod`: Builds `prod` flavor -> Play Store (Internal Track).
17
+
18
+ ```ruby
19
+ default_platform(:android)
20
+
21
+ platform :android do
22
+ # Helper: Read version from pubspec
23
+ def load_version
24
+ # Requires: gem install yaml
25
+ require 'yaml'
26
+ pubspec = YAML.load_file("../../pubspec.yaml")
27
+ return pubspec['version'].split('+') # Returns [version, build]
28
+ end
29
+
30
+ desc "Deploy Staging to Firebase"
31
+ lane :staging do
32
+ version_name, version_code = load_version
33
+
34
+ # 1. Build APK (Flavor: Dev, Type: Release)
35
+ gradle(
36
+ task: "assemble",
37
+ flavor: "Dev",
38
+ build_type: "Release",
39
+ properties: {
40
+ "android.injected.version.code" => version_code,
41
+ "android.injected.version.name" => version_name
42
+ }
43
+ )
44
+
45
+ # 2. Upload to Firebase
46
+ firebase_app_distribution(
47
+ app: ENV["FIREBASE_APP_ID_ANDROID_DEV"],
48
+ groups: "qa-team",
49
+ release_notes: "Staging Build v#{version_name} (#{version_code})"
50
+ )
51
+ end
52
+
53
+ desc "Deploy Production to Play Store"
54
+ lane :prod do
55
+ version_name, version_code = load_version
56
+
57
+ # 1. Build Bundle (Flavor: Prod)
58
+ gradle(
59
+ task: "bundle",
60
+ flavor: "Prod",
61
+ build_type: "Release",
62
+ properties: {
63
+ "android.injected.version.code" => version_code,
64
+ "android.injected.version.name" => version_name
65
+ }
66
+ )
67
+
68
+ # 2. Upload to Play Store
69
+ upload_to_play_store(
70
+ track: "internal",
71
+ json_key: ENV["PLAY_STORE_JSON_KEY_FILE"],
72
+ skip_upload_metadata: true,
73
+ skip_upload_images: true,
74
+ skip_upload_screenshots: true
75
+ )
76
+ end
77
+ end
78
+ ```
79
+
80
+ ## iOS Configuration (`ios/fastlane/Fastfile`)
81
+
82
+ Supported lanes:
83
+
84
+ - `staging`: Builds `Dev` Scheme -> Firebase (AdHoc).
85
+ - `prod`: Builds `Prod` Scheme -> TestFlight (AppStore).
86
+
87
+ **Note**: Creates separate `Matchfile` logic for AdHoc vs AppStore.
88
+
89
+ ```ruby
90
+ default_platform(:ios)
91
+
92
+ platform :ios do
93
+ before_all do
94
+ setup_ci if ENV['CI']
95
+ end
96
+
97
+ desc "Deploy Staging to Firebase (AdHoc)"
98
+ lane :staging do
99
+ # 1. Sync Signing (AdHoc for restricted devices)
100
+ match(type: "adhoc", app_identifier: "com.example.app.dev", readonly: is_ci)
101
+
102
+ # 2. Build IPA (Scheme: Dev)
103
+ build_app(
104
+ scheme: "Dev",
105
+ export_method: "ad-hoc",
106
+ include_bitcode: false
107
+ )
108
+
109
+ # 3. Upload to Firebase
110
+ firebase_app_distribution(
111
+ app: ENV["FIREBASE_APP_ID_IOS_DEV"],
112
+ groups: "qa-team"
113
+ )
114
+ end
115
+
116
+ desc "Deploy Production to TestFlight"
117
+ lane :prod do
118
+ # 1. Sync Signing (AppStore)
119
+ match(type: "appstore", app_identifier: "com.example.app", readonly: is_ci)
120
+
121
+ # 2. Build IPA (Scheme: Prod)
122
+ build_app(
123
+ scheme: "Prod",
124
+ export_method: "app-store"
125
+ )
126
+
127
+ # 3. Upload to TestFlight
128
+ upload_to_testflight(
129
+ skip_waiting_for_build_processing: true
130
+ )
131
+ end
132
+ end
133
+ ```
134
+
135
+ ## Setup Checklist
136
+
137
+ 1. **Google Play Key**: Define `PLAY_STORE_JSON_KEY_FILE`.
138
+ 2. **Match Repo**: Ensure `git_url` in `Matchfile` points to your private cert repo.
139
+ 3. **Firebase CLI**: Ensure firebase-tools is installed or the plugin authenticated via `FIREBASE_TOKEN`.
@@ -0,0 +1,59 @@
1
+ # GitHub Actions Workflow
2
+
3
+ This workflow builds the application, runs tests, and analyzes code.
4
+
5
+ ## `flutter-ci.yml`
6
+
7
+ ```yaml
8
+ name: Flutter CI
9
+
10
+ on:
11
+ push:
12
+ branches: [main]
13
+ pull_request:
14
+ branches: [main]
15
+
16
+ jobs:
17
+ build:
18
+ name: Build & Test
19
+ runs-on: ubuntu-latest
20
+ timeout-minutes: 30
21
+
22
+ steps:
23
+ - name: Checkout repository
24
+ uses: actions/checkout@v4
25
+
26
+ - name: Set up Java
27
+ uses: actions/setup-java@v4
28
+ with:
29
+ distribution: 'zulu'
30
+ java-version: '17'
31
+
32
+ - name: Set up Flutter
33
+ uses: subosito/flutter-action@v2
34
+ with:
35
+ channel: 'stable'
36
+ cache: true
37
+
38
+ - name: Install dependencies
39
+ run: flutter pub get
40
+
41
+ - name: Format check
42
+ run: dart format --output=none --set-exit-if-changed .
43
+
44
+ - name: Analyze
45
+ run: flutter analyze
46
+
47
+ - name: Run tests
48
+ run: flutter test --coverage
49
+
50
+ - name: Upload coverage
51
+ uses: codecov/codecov-action@v4
52
+ with:
53
+ file: coverage/lcov.info
54
+ token: ${{ secrets.CODECOV_TOKEN }}
55
+ ```
56
+
57
+ ## Fastlane (Optional)
58
+
59
+ For automated store deployment, consider integrating `fastlane` into a separate `deploy` job that runs only on `push` to `main`.
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: Flutter Dependency Injection (Injectable)
3
+ description: Standards for automated service locator setup using injectable and get_it.
4
+ metadata:
5
+ labels: [dependency-injection, injectable, get_it]
6
+ triggers:
7
+ files: ['**/injection.dart', '**/locator.dart']
8
+ keywords: [GetIt, injectable, singleton, module, lazySingleton, factory]
9
+ ---
10
+
11
+ # Dependency Injection
12
+
13
+ ## **Priority: P1 (HIGH)**
14
+
15
+ Automated class dependency management using `get_it` and `injectable`.
16
+
17
+ ## Structure
18
+
19
+ ```text
20
+ core/injection/
21
+ ├── injection.dart # Initialization & setup
22
+ └── modules/ # Third-party dependency modules (Dio, Storage)
23
+ ```
24
+
25
+ ## Implementation Guidelines
26
+
27
+ - **Automated Registration**: Use `@injectable` annotations; avoid manual registry calls.
28
+ - **@LazySingleton**: Default for repositories, services, and data sources (init on demand).
29
+ - **@injectable (Factory)**: Default for BLoCs to ensure state resets on every request.
30
+ - **Abstract Injection**: Always register implementations as abstract interfaces (`as: IService`).
31
+ - **Modules**: Use `@module` for registering third-party instances (e.g., `Dio`, `SharedPreferences`).
32
+ - **Constructor Injection**: Use mandatory constructor parameters; `injectable` resolves them.
33
+ - **Test Mocks**: Swap implementations in `setUp` using `getIt.registerLazySingleton` for testing.
34
+
35
+ ## Reference & Examples
36
+
37
+ For module configuration and initialization templates:
38
+ See [references/REFERENCE.md](references/REFERENCE.md).
39
+
40
+ ## Related Topics
41
+
42
+ layer-based-clean-architecture | testing
@@ -0,0 +1,15 @@
1
+ # Dependency Injection Reference
2
+
3
+ Implementation patterns for `injectable` and `get_it` in massive Flutter projects.
4
+
5
+ ## References
6
+
7
+ - [**Injection Modules**](modules.md) - Registering third-party libraries (Dio, Hive).
8
+ - [**Production Initialization**](initialization.md) - Wiring everything in `main.dart`.
9
+ - [**Testing Mocks**](testing-mocks.md) - How to swap services during unit tests.
10
+
11
+ ## **Quick Registration Guide**
12
+
13
+ - **@injectable**: Use for BLoCs (New instance every time).
14
+ - **@LazySingleton**: Use for Repositories and DataSources (Global, lazy-init).
15
+ - **@singleton**: Use only for truly shared resources (init on startup).
@@ -0,0 +1,37 @@
1
+ # Third-party Dependency Modules
2
+
3
+ Since you cannot annotate third-party classes (like `Dio` or `SharedPreferences`) directly, use a `@module`.
4
+
5
+ ## **Example: Network & Storage Module**
6
+
7
+ ```dart
8
+ import 'package:injectable/injectable.dart';
9
+ import 'package:dio/dio.dart';
10
+ import 'package:shared_preferences/shared_preferences.dart';
11
+
12
+ @module
13
+ abstract class NetworkingModule {
14
+ @lazySingleton
15
+ Dio get dio => Dio(BaseOptions(baseUrl: 'https://api.example.com'));
16
+
17
+ @preResolve // Waits for this before finishing injection setup
18
+ Future<SharedPreferences> get prefs => SharedPreferences.getInstance();
19
+ }
20
+ ```
21
+
22
+ ## **Named Injection**
23
+
24
+ Use for multiple instances of the same type:
25
+
26
+ ```dart
27
+ @module
28
+ abstract class ServiceModule {
29
+ @Named("AuthDio")
30
+ Dio get authDio => Dio();
31
+
32
+ @Named("PublicDio")
33
+ Dio get publicDio => Dio();
34
+ }
35
+
36
+ // Consumption: Repo(@Named("AuthDio") Dio dio)
37
+ ```
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: Flutter Error Handling
3
+ description: Functional error handling using Dartz and Either.
4
+ metadata:
5
+ labels: [error-handling, dartz, functional]
6
+ triggers:
7
+ files: ['lib/domain/**', 'lib/infrastructure/**']
8
+ keywords: [Either, fold, Left, Right, Failure, dartz]
9
+ ---
10
+
11
+ # Error Handling
12
+
13
+ ## **Priority: P1 (HIGH)**
14
+
15
+ Standardized functional error handling using `dartz` and `freezed` failures.
16
+
17
+ ## Implementation Guidelines
18
+
19
+ - **Either Pattern**: Return `Either<Failure, T>` from repositories. No exceptions in UI/BLoC.
20
+ - **Failures**: Define domain-specific failures using `@freezed` unions.
21
+ - **Mapping**: Infrastructure catches `Exception` and returns `Left(Failure)`.
22
+ - **Consumption**: Use `.fold(failure, success)` in BLoC to emit corresponding states.
23
+ - **Typed Errors**: Use `left(Failure())` and `right(Value())` from `Dartz`.
24
+
25
+ ## Reference & Examples
26
+
27
+ For Failure definitions and API error mapping:
28
+ See [references/REFERENCE.md](references/REFERENCE.md).
29
+
30
+ ## Related Topics
31
+
32
+ layer-based-clean-architecture | bloc-state-management
@@ -0,0 +1,19 @@
1
+ # Error Handling Reference
2
+
3
+ Detailed patterns for functional error management in Flutter.
4
+
5
+ ## References
6
+
7
+ - [**Error Mapping**](error-mapping.md) - Mapping Dio/Network exceptions to Failures.
8
+ - [**Consumption Patterns**](consumption.md) - Using `.fold()` in Clean Architecture.
9
+
10
+ ## **Quick Syntax**
11
+
12
+ ```dart
13
+ // Result handling in BLoC
14
+ final failureOrData = await repository.getData();
15
+ emit(failureOrData.fold(
16
+ (failure) => State.error(failure),
17
+ (data) => State.success(data),
18
+ ));
19
+ ```
@@ -0,0 +1,31 @@
1
+ # Functional Failure Patterns
2
+
3
+ ## **Global Failures (@freezed)**
4
+
5
+ ```dart
6
+ @freezed
7
+ class ApiFailure with _$ApiFailure {
8
+ const factory ApiFailure.serverError() = _ServerError;
9
+ const factory ApiFailure.networkError() = _NetworkError;
10
+ const factory ApiFailure.unauthenticated() = _Unauthenticated;
11
+ const factory ApiFailure.badRequest(String message) = _BadRequest;
12
+ }
13
+ ```
14
+
15
+ ## **Infrastructure Mapper**
16
+
17
+ ```dart
18
+ extension DioErrorX on DioException {
19
+ ApiFailure toFailure() {
20
+ switch (type) {
21
+ case DioExceptionType.connectionTimeout:
22
+ return const ApiFailure.networkError();
23
+ case DioExceptionType.badResponse:
24
+ if (response?.statusCode == 401) return const ApiFailure.unauthenticated();
25
+ return const ApiFailure.serverError();
26
+ default:
27
+ return const ApiFailure.serverError();
28
+ }
29
+ }
30
+ }
31
+ ```
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: Flutter Feature-Based Clean Architecture
3
+ description: Standards for organizing code by feature at the root level to improve scalability and maintainability.
4
+ metadata:
5
+ labels: [architecture, clean-architecture, feature-driven, ddd, modularity]
6
+ triggers:
7
+ files: ['lib/features/**']
8
+ keywords: [feature, domain, infrastructure, application, presentation, modular]
9
+ ---
10
+
11
+ # Feature-Based Clean Architecture
12
+
13
+ ## **Priority: P0 (CRITICAL)**
14
+
15
+ Standard for modular Clean Architecture organized by business features in `lib/features/`.
16
+
17
+ ## Structure
18
+
19
+ ```text
20
+ lib/
21
+ ├── features/ <feature_name>/
22
+ │ ├── domain/ # Business Logic (Pure Dart): entities, interfaces, use_cases
23
+ │ ├── data/ # Implementation: data_sources, dtos, repositories
24
+ │ └── presentation/ # UI & State: blocs, pages, widgets
25
+ ├── core/ # Shared infrastructure & utilities
26
+ └── shared/ # Common UI components & shared entities
27
+ ```
28
+
29
+ ## Implementation Guidelines
30
+
31
+ - **Feature Encapsulation**: Keep logic, models, and UI internal to the feature directory.
32
+ - **Strict Layering**: Maintain 3-layer separation (Domain/Data/Presentation) within each feature.
33
+ - **Dependency Rule**: `Presentation -> Domain <- Data`. Domain must have zero external dependencies.
34
+ - **Cross-Feature Communication**: Features only depend on the **Domain** layer of other features.
35
+ - **Flat features**: Keep `lib/features/` flat; avoid nested features.
36
+ - **No DTO Leakage**: Never expose DTOs or Data Sources to UI or other features; return Domain Entities.
37
+ - **Shared logic**: Move cross-cutting concerns to `lib/shared/` or `lib/core/`.
38
+
39
+ ## Reference & Examples
40
+
41
+ For feature folder blueprints and cross-layer dependency templates:
42
+ See [references/REFERENCE.md](references/REFERENCE.md).
43
+
44
+ ## Related Topics
45
+
46
+ layer-based-clean-architecture | retrofit-networking | go-router-navigation | bloc-state-management | dependency-injection
@@ -0,0 +1,14 @@
1
+ # Feature-Based Architecture Reference
2
+
3
+ Detailed examples for organizing large-scale Flutter apps by business domain.
4
+
5
+ ## References
6
+
7
+ - [**Standard Folder Structure**](folder-structure.md) - Deep dive into feature-level directory nesting.
8
+ - [**Shared vs Core**](shared-core.md) - When to put code in `lib/core` versus `lib/shared`.
9
+ - [**Modular Injection**](modular-injection.md) - How to register dependencies per feature.
10
+
11
+ ## **Quick Implementation Rule**
12
+
13
+ - Never import from `lib/features/x/data/` or `lib/features/x/presentation/` from outside `feature/x`.
14
+ - Only `lib/features/x/domain/` is "public" to other features.
@@ -0,0 +1,36 @@
1
+ # Feature Folder Structure
2
+
3
+ A complete blueprint for a single feature directory (e.g., `lib/features/authentication/`).
4
+
5
+ ```text
6
+ lib/features/authentication/
7
+ ├── domain/
8
+ │ ├── entities/
9
+ │ │ └── auth_user.dart
10
+ │ ├── repositories/
11
+ │ │ └── i_auth_repository.dart
12
+ │ └── use_cases/
13
+ │ └── login_use_case.dart
14
+ ├── data/
15
+ │ ├── data_sources/
16
+ │ │ ├── auth_remote_data_source.dart
17
+ │ │ └── auth_local_data_source.dart
18
+ │ ├── dtos/
19
+ │ │ └── user_dto.dart
20
+ │ └── repositories/
21
+ │ └── auth_repository_impl.dart
22
+ └── presentation/
23
+ ├── blocs/
24
+ │ └── auth/
25
+ ├── pages/
26
+ │ ├── login_page.dart
27
+ │ └── profile_page.dart
28
+ └── widgets/
29
+ └── auth_form.dart
30
+ ```
31
+
32
+ ## **Key Constraints**
33
+
34
+ 1. **Barrel Files**: Use `authentication.dart` at the feature root to export ONLY the domain layer.
35
+ 2. **Sub-directories**: Do not create more levels than shown above unless the feature has 20+ files.
36
+ 3. **Mappers**: Should be kept in the `data/` layer, typically as extensions on DTOs.
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: Flutter GetX Navigation
3
+ description: Context-less navigation, named routes, and middleware using GetX.
4
+ metadata:
5
+ labels: [navigation, getx, routing, middleware]
6
+ triggers:
7
+ files: ['**/app_pages.dart', '**/app_routes.dart']
8
+ keywords: [GetPage, Get.to, Get.off, Get.offAll, Get.toNamed, GetMiddleware]
9
+ ---
10
+
11
+ # GetX Navigation
12
+
13
+ ## **Priority: P0 (CRITICAL)**
14
+
15
+ Decoupled navigation system allowing UI transitions without `BuildContext`.
16
+
17
+ ## Implementation Guidelines
18
+
19
+ - **Prefer Named Routes**: Use `Get.toNamed('/path')` for better maintainability. Define routes in a centralized `AppPages` class.
20
+ - **No Context Navigation**: Leverage `Get.to()`, `Get.back()`, etc., directly from controllers.
21
+ - **Navigation Methods**:
22
+ - `Get.to()`: Navigate to next screen.
23
+ - `Get.off()`: Navigate and replace current screen (e.g., Splash -> Home).
24
+ - `Get.offAll()`: Clear stack and navigate (e.g., Logout -> Login).
25
+ - `Get.back()`: Close current screen, dialog, or bottom sheet.
26
+ - **Bindings Everywhere**: Always link routes with `Bindings` to manage controller lifecycles.
27
+ - **Middleware**: Use `GetMiddleware` for route guards (Auth, Permissions) instead of logic inside views.
28
+
29
+ ## Code Example
30
+
31
+ ```dart
32
+ // Route Definition
33
+ static final routes = [
34
+ GetPage(
35
+ name: _Paths.HOME,
36
+ page: () => HomeView(),
37
+ binding: HomeBinding(),
38
+ middlewares: [AuthMiddleware()],
39
+ ),
40
+ ];
41
+
42
+ // Usage in Controller
43
+ void logout() {
44
+ _authService.clear();
45
+ Get.offAllNamed(Routes.LOGIN);
46
+ }
47
+
48
+ // Route Guard
49
+ class AuthMiddleware extends GetMiddleware {
50
+ @override
51
+ RouteSettings? redirect(String? route) {
52
+ return isAuthenticated ? null : RouteSettings(name: Routes.LOGIN);
53
+ }
54
+ }
55
+ ```
56
+
57
+ ## Anti-Patterns
58
+
59
+ - **Mixing Context and GetX**: Do not use `Navigator.of(context)` when GetX is the primary router.
60
+ - **Hardcoded Strings**: Always use a `Routes` constant class for names.
61
+ - **Dialogs without GetX**: Use `Get.dialog()` and `Get.snackbar()` for consistency.
62
+
63
+ ## Reference & Examples
64
+
65
+ For centralized route configuration and middleware guards:
66
+ See [references/app-pages.md](references/app-pages.md) and [references/middleware-example.md](references/middleware-example.md).
67
+
68
+ ## Related Topics
69
+
70
+ getx-state-management | feature-based-clean-architecture
@@ -0,0 +1,40 @@
1
+ # Centralized Route Management
2
+
3
+ Organizing routes in a single location for scalability.
4
+
5
+ ```dart
6
+ // app_routes.dart
7
+ abstract class Routes {
8
+ static const HOME = _Paths.HOME;
9
+ static const LOGIN = _Paths.LOGIN;
10
+ }
11
+
12
+ abstract class _Paths {
13
+ static const HOME = '/home';
14
+ static const LOGIN = '/login';
15
+ }
16
+
17
+ // app_pages.dart
18
+ class AppPages {
19
+ static const INITIAL = Routes.LOGIN;
20
+
21
+ static final routes = [
22
+ GetPage(
23
+ name: _Paths.HOME,
24
+ page: () => HomeView(),
25
+ binding: HomeBinding(),
26
+ ),
27
+ GetPage(
28
+ name: _Paths.LOGIN,
29
+ page: () => LoginView(),
30
+ binding: LoginBinding(),
31
+ ),
32
+ ];
33
+ }
34
+
35
+ // main.dart
36
+ GetMaterialApp(
37
+ initialRoute: AppPages.INITIAL,
38
+ getPages: AppPages.routes,
39
+ )
40
+ ```
@@ -0,0 +1,29 @@
1
+ # Route Middleware (Guards)
2
+
3
+ Use middleware to protect routes from unauthorized access or handle redirections.
4
+
5
+ ```dart
6
+ class AuthMiddleware extends GetMiddleware {
7
+ @override
8
+ int? get priority => 1;
9
+
10
+ @override
11
+ RouteSettings? redirect(String? route) {
12
+ bool isAuthenticated = AuthService.to.isLoggedInValue;
13
+
14
+ if (isAuthenticated) {
15
+ return null; // Continue to target route
16
+ } else {
17
+ // Redirect to login if user is not authenticated
18
+ return const RouteSettings(name: Routes.LOGIN);
19
+ }
20
+ }
21
+ }
22
+
23
+ // Usage in AppPages
24
+ GetPage(
25
+ name: Routes.PROFILE,
26
+ page: () => ProfileView(),
27
+ middlewares: [AuthMiddleware()],
28
+ )
29
+ ```