biucingcli 0.9.1__py3-none-any.whl

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 (269) hide show
  1. biucingcli/__init__.py +5 -0
  2. biucingcli/cli.py +849 -0
  3. biucingcli/template_data/android/template/.editorconfig +9 -0
  4. biucingcli/template_data/android/template/.gitignore +26 -0
  5. biucingcli/template_data/android/template/.mise.toml +3 -0
  6. biucingcli/template_data/android/template/Brewfile +6 -0
  7. biucingcli/template_data/android/template/Makefile +103 -0
  8. biucingcli/template_data/android/template/README.md +163 -0
  9. biucingcli/template_data/android/template/app/build.gradle.kts +178 -0
  10. biucingcli/template_data/android/template/app/proguard-rules.pro +1 -0
  11. biucingcli/template_data/android/template/app/src/androidTest/java/app/HomeRouteUiTest.kt +21 -0
  12. biucingcli/template_data/android/template/app/src/main/AndroidManifest.xml +18 -0
  13. biucingcli/template_data/android/template/app/src/main/java/app/MainActivity.kt +36 -0
  14. biucingcli/template_data/android/template/app/src/main/res/values/strings.xml +4 -0
  15. biucingcli/template_data/android/template/app/src/main/res/values/themes.xml +8 -0
  16. biucingcli/template_data/android/template/app/src/test/java/app/AppSmokeTest.kt +19 -0
  17. biucingcli/template_data/android/template/build.gradle.kts +27 -0
  18. biucingcli/template_data/android/template/core/designsystem/build.gradle.kts +33 -0
  19. biucingcli/template_data/android/template/core/designsystem/src/main/java/designsystem/Components.kt +75 -0
  20. biucingcli/template_data/android/template/core/designsystem/src/main/java/designsystem/DesignTokens.kt +23 -0
  21. biucingcli/template_data/android/template/core/designsystem/src/main/java/designsystem/Theme.kt +110 -0
  22. biucingcli/template_data/android/template/core/model/build.gradle.kts +26 -0
  23. biucingcli/template_data/android/template/core/model/src/main/java/model/Greeting.kt +6 -0
  24. biucingcli/template_data/android/template/core/model/src/test/java/model/GreetingTest.kt +16 -0
  25. biucingcli/template_data/android/template/core/network/build.gradle.kts +26 -0
  26. biucingcli/template_data/android/template/core/network/src/main/java/network/AppEnvironment.kt +17 -0
  27. biucingcli/template_data/android/template/core/testing/build.gradle.kts +27 -0
  28. biucingcli/template_data/android/template/core/testing/src/main/java/testing/FakeAppEnvironmentProvider.kt +13 -0
  29. biucingcli/template_data/android/template/docs/release-delivery.md +68 -0
  30. biucingcli/template_data/android/template/docs/release-signing.properties.example +20 -0
  31. biucingcli/template_data/android/template/fastlane/.env.example +22 -0
  32. biucingcli/template_data/android/template/fastlane/Appfile +1 -0
  33. biucingcli/template_data/android/template/fastlane/Fastfile +121 -0
  34. biucingcli/template_data/android/template/feature/home/build.gradle.kts +35 -0
  35. biucingcli/template_data/android/template/feature/home/src/main/java/home/HomeRoute.kt +38 -0
  36. biucingcli/template_data/android/template/feature/settings/build.gradle.kts +34 -0
  37. biucingcli/template_data/android/template/feature/settings/src/main/java/settings/SettingsRoute.kt +35 -0
  38. biucingcli/template_data/android/template/gradle/libs.versions.toml +35 -0
  39. biucingcli/template_data/android/template/gradle/verification-metadata.xml +3462 -0
  40. biucingcli/template_data/android/template/gradle/wrapper/gradle-wrapper.jar +0 -0
  41. biucingcli/template_data/android/template/gradle/wrapper/gradle-wrapper.jar.sha256 +1 -0
  42. biucingcli/template_data/android/template/gradle/wrapper/gradle-wrapper.properties +10 -0
  43. biucingcli/template_data/android/template/gradle.properties +4 -0
  44. biucingcli/template_data/android/template/gradlew +252 -0
  45. biucingcli/template_data/android/template/gradlew.bat +94 -0
  46. biucingcli/template_data/android/template/scripts/artifact-info +11 -0
  47. biucingcli/template_data/android/template/scripts/bootstrap +17 -0
  48. biucingcli/template_data/android/template/scripts/doctor +133 -0
  49. biucingcli/template_data/android/template/scripts/setup-android-sdk +23 -0
  50. biucingcli/template_data/android/template/scripts/sync-gradle-wrapper +19 -0
  51. biucingcli/template_data/android/template/scripts/verify-gradle-supply-chain +61 -0
  52. biucingcli/template_data/android/template/scripts/verify-release-artifact +104 -0
  53. biucingcli/template_data/android/template/settings.gradle.kts +25 -0
  54. biucingcli/template_data/android/template.json +146 -0
  55. biucingcli/template_data/apple/template/.gitignore +28 -0
  56. biucingcli/template_data/apple/template/.mise.toml +4 -0
  57. biucingcli/template_data/apple/template/.swiftformat +10 -0
  58. biucingcli/template_data/apple/template/.swiftlint.yml +33 -0
  59. biucingcli/template_data/apple/template/App/Config/ProjectDescriptionHelpers/Module.swift +6 -0
  60. biucingcli/template_data/apple/template/App/Config/XCConfig/Base.xcconfig +4 -0
  61. biucingcli/template_data/apple/template/App/Project.swift +66 -0
  62. biucingcli/template_data/apple/template/App/Targets/App/Resources/.gitkeep +1 -0
  63. biucingcli/template_data/apple/template/App/Targets/App/Sources/AppEntry.swift +9 -0
  64. biucingcli/template_data/apple/template/App/Targets/App/Sources/HomeView.swift +18 -0
  65. biucingcli/template_data/apple/template/App/Targets/App/Sources/HomeViewModel.swift +38 -0
  66. biucingcli/template_data/apple/template/App/Targets/AppTests/Sources/AppTests.swift +59 -0
  67. biucingcli/template_data/apple/template/Brewfile +8 -0
  68. biucingcli/template_data/apple/template/Makefile +128 -0
  69. biucingcli/template_data/apple/template/Packages/AppServices/Package.swift +20 -0
  70. biucingcli/template_data/apple/template/Packages/AppServices/Sources/AppServices/StarterMetadata.swift +52 -0
  71. biucingcli/template_data/apple/template/Packages/DesignSystem/Package.swift +20 -0
  72. biucingcli/template_data/apple/template/Packages/DesignSystem/Sources/DesignSystem/Theme.swift +8 -0
  73. biucingcli/template_data/apple/template/README.md +133 -0
  74. biucingcli/template_data/apple/template/Tuist.swift +8 -0
  75. biucingcli/template_data/apple/template/Workspace.swift +11 -0
  76. biucingcli/template_data/apple/template/docs/release-delivery.md +55 -0
  77. biucingcli/template_data/apple/template/fastlane/.env.example +20 -0
  78. biucingcli/template_data/apple/template/fastlane/Appfile +3 -0
  79. biucingcli/template_data/apple/template/fastlane/Fastfile +126 -0
  80. biucingcli/template_data/apple/template/fastlane/Matchfile +7 -0
  81. biucingcli/template_data/apple/template/scripts/bootstrap +9 -0
  82. biucingcli/template_data/apple/template/scripts/doctor +163 -0
  83. biucingcli/template_data/apple/template/scripts/setup-xcode +6 -0
  84. biucingcli/template_data/apple/template/scripts/test-destination +42 -0
  85. biucingcli/template_data/apple/template/scripts/verify-release-identity +88 -0
  86. biucingcli/template_data/apple/template.json +110 -0
  87. biucingcli/template_data/frontend/template/.dockerignore +8 -0
  88. biucingcli/template_data/frontend/template/.env.example +1 -0
  89. biucingcli/template_data/frontend/template/.gitignore +7 -0
  90. biucingcli/template_data/frontend/template/.npmrc +1 -0
  91. biucingcli/template_data/frontend/template/.prettierignore +2 -0
  92. biucingcli/template_data/frontend/template/.prettierrc.json +4 -0
  93. biucingcli/template_data/frontend/template/Dockerfile +25 -0
  94. biucingcli/template_data/frontend/template/Dockerfile.dev +35 -0
  95. biucingcli/template_data/frontend/template/Dockerfile.dev.full +40 -0
  96. biucingcli/template_data/frontend/template/Makefile +137 -0
  97. biucingcli/template_data/frontend/template/README.md +146 -0
  98. biucingcli/template_data/frontend/template/compose.dev.yaml +29 -0
  99. biucingcli/template_data/frontend/template/eslint.config.js +27 -0
  100. biucingcli/template_data/frontend/template/index.html +12 -0
  101. biucingcli/template_data/frontend/template/nginx.conf +11 -0
  102. biucingcli/template_data/frontend/template/package.json +50 -0
  103. biucingcli/template_data/frontend/template/playwright.production.config.ts +21 -0
  104. biucingcli/template_data/frontend/template/playwright.smoke.config.ts +19 -0
  105. biucingcli/template_data/frontend/template/pnpm-lock.yaml +4054 -0
  106. biucingcli/template_data/frontend/template/public/.gitkeep +1 -0
  107. biucingcli/template_data/frontend/template/scripts/browser-smoke-production +55 -0
  108. biucingcli/template_data/frontend/template/scripts/doctor +46 -0
  109. biucingcli/template_data/frontend/template/src/App.test.tsx +18 -0
  110. biucingcli/template_data/frontend/template/src/App.tsx +5 -0
  111. biucingcli/template_data/frontend/template/src/components/MetricCard.tsx +14 -0
  112. biucingcli/template_data/frontend/template/src/components/TaskPanel.tsx +32 -0
  113. biucingcli/template_data/frontend/template/src/config/env.ts +3 -0
  114. biucingcli/template_data/frontend/template/src/hooks/useProjectOverview.ts +24 -0
  115. biucingcli/template_data/frontend/template/src/index.css +208 -0
  116. biucingcli/template_data/frontend/template/src/main.tsx +11 -0
  117. biucingcli/template_data/frontend/template/src/pages/HomePage.tsx +60 -0
  118. biucingcli/template_data/frontend/template/src/router/AppRouter.tsx +14 -0
  119. biucingcli/template_data/frontend/template/src/services/api/client.ts +33 -0
  120. biucingcli/template_data/frontend/template/src/services/projectOverview.ts +39 -0
  121. biucingcli/template_data/frontend/template/src/test/setup.ts +1 -0
  122. biucingcli/template_data/frontend/template/src/types/projectOverview.ts +22 -0
  123. biucingcli/template_data/frontend/template/src/vite-env.d.ts +9 -0
  124. biucingcli/template_data/frontend/template/tests/browser-smoke.spec.ts +16 -0
  125. biucingcli/template_data/frontend/template/tests/production-browser-smoke.spec.ts +22 -0
  126. biucingcli/template_data/frontend/template/tsconfig.json +21 -0
  127. biucingcli/template_data/frontend/template/vite.config.ts +12 -0
  128. biucingcli/template_data/frontend/template.json +81 -0
  129. biucingcli/template_data/harmonyos/template/.gitignore +21 -0
  130. biucingcli/template_data/harmonyos/template/.mise.toml +2 -0
  131. biucingcli/template_data/harmonyos/template/AppScope/app.json5 +10 -0
  132. biucingcli/template_data/harmonyos/template/AppScope/resources/base/element/string.json +8 -0
  133. biucingcli/template_data/harmonyos/template/AppScope/resources/base/media/background.svg +3 -0
  134. biucingcli/template_data/harmonyos/template/AppScope/resources/base/media/foreground.svg +4 -0
  135. biucingcli/template_data/harmonyos/template/AppScope/resources/base/media/layered_image.json +6 -0
  136. biucingcli/template_data/harmonyos/template/Makefile +106 -0
  137. biucingcli/template_data/harmonyos/template/README.md +152 -0
  138. biucingcli/template_data/harmonyos/template/build-profile.json5 +36 -0
  139. biucingcli/template_data/harmonyos/template/code-linter.json5 +12 -0
  140. biucingcli/template_data/harmonyos/template/docs/release-signing.local.properties.example +14 -0
  141. biucingcli/template_data/harmonyos/template/entry/build-profile.json5 +9 -0
  142. biucingcli/template_data/harmonyos/template/entry/hvigorfile.ts +6 -0
  143. biucingcli/template_data/harmonyos/template/entry/oh-package.json5 +9 -0
  144. biucingcli/template_data/harmonyos/template/entry/src/main/ets/core/config/AppConfig.ets +10 -0
  145. biucingcli/template_data/harmonyos/template/entry/src/main/ets/core/designsystem/Tokens.ets +28 -0
  146. biucingcli/template_data/harmonyos/template/entry/src/main/ets/entryability/EntryAbility.ets +29 -0
  147. biucingcli/template_data/harmonyos/template/entry/src/main/ets/pages/Index.ets +47 -0
  148. biucingcli/template_data/harmonyos/template/entry/src/main/ets/pages/Settings.ets +96 -0
  149. biucingcli/template_data/harmonyos/template/entry/src/main/module.json5 +34 -0
  150. biucingcli/template_data/harmonyos/template/entry/src/main/resources/base/element/color.json +24 -0
  151. biucingcli/template_data/harmonyos/template/entry/src/main/resources/base/element/string.json +12 -0
  152. biucingcli/template_data/harmonyos/template/entry/src/main/resources/base/media/app_icon.svg +5 -0
  153. biucingcli/template_data/harmonyos/template/entry/src/main/resources/base/profile/main_pages.json +6 -0
  154. biucingcli/template_data/harmonyos/template/entry/src/test/List.test.ets +11 -0
  155. biucingcli/template_data/harmonyos/template/hvigor/hvigor-config.json5 +8 -0
  156. biucingcli/template_data/harmonyos/template/hvigorfile.ts +6 -0
  157. biucingcli/template_data/harmonyos/template/oh-package-lock.json5 +19 -0
  158. biucingcli/template_data/harmonyos/template/oh-package.json5 +13 -0
  159. biucingcli/template_data/harmonyos/template/scripts/artifact-info +31 -0
  160. biucingcli/template_data/harmonyos/template/scripts/bootstrap +38 -0
  161. biucingcli/template_data/harmonyos/template/scripts/doctor +147 -0
  162. biucingcli/template_data/harmonyos/template/scripts/lint +105 -0
  163. biucingcli/template_data/harmonyos/template/scripts/release-build +199 -0
  164. biucingcli/template_data/harmonyos/template/scripts/release-preflight +109 -0
  165. biucingcli/template_data/harmonyos/template/scripts/test +28 -0
  166. biucingcli/template_data/harmonyos/template/scripts/verify-release-artifact +173 -0
  167. biucingcli/template_data/harmonyos/template/scripts/verify-supply-chain +70 -0
  168. biucingcli/template_data/harmonyos/template.json +134 -0
  169. biucingcli/template_data/microservice/template/.air.toml +11 -0
  170. biucingcli/template_data/microservice/template/.dockerignore +5 -0
  171. biucingcli/template_data/microservice/template/.gitignore +4 -0
  172. biucingcli/template_data/microservice/template/.mise.toml +3 -0
  173. biucingcli/template_data/microservice/template/Brewfile +7 -0
  174. biucingcli/template_data/microservice/template/Dockerfile +44 -0
  175. biucingcli/template_data/microservice/template/Dockerfile.dev +50 -0
  176. biucingcli/template_data/microservice/template/Makefile +145 -0
  177. biucingcli/template_data/microservice/template/README.md +191 -0
  178. biucingcli/template_data/microservice/template/api/buf.gen.yaml +11 -0
  179. biucingcli/template_data/microservice/template/api/buf.yaml +11 -0
  180. biucingcli/template_data/microservice/template/api/proto/service/v1/service.proto +18 -0
  181. biucingcli/template_data/microservice/template/cmd/server/main.go +81 -0
  182. biucingcli/template_data/microservice/template/compose.dev.yaml +49 -0
  183. biucingcli/template_data/microservice/template/configs/config.yaml +18 -0
  184. biucingcli/template_data/microservice/template/deploy/compose.yaml +35 -0
  185. biucingcli/template_data/microservice/template/deploy/otel-collector.yaml +15 -0
  186. biucingcli/template_data/microservice/template/go.mod +53 -0
  187. biucingcli/template_data/microservice/template/go.sum +138 -0
  188. biucingcli/template_data/microservice/template/internal/config/config.go +112 -0
  189. biucingcli/template_data/microservice/template/internal/config/config_test.go +92 -0
  190. biucingcli/template_data/microservice/template/internal/handler/health.go +25 -0
  191. biucingcli/template_data/microservice/template/internal/handler/ping.go +25 -0
  192. biucingcli/template_data/microservice/template/internal/model/health.go +8 -0
  193. biucingcli/template_data/microservice/template/internal/model/ping.go +7 -0
  194. biucingcli/template_data/microservice/template/internal/repository/.gitkeep +1 -0
  195. biucingcli/template_data/microservice/template/internal/router/router.go +26 -0
  196. biucingcli/template_data/microservice/template/internal/runtime/server.go +116 -0
  197. biucingcli/template_data/microservice/template/internal/runtime/server_test.go +161 -0
  198. biucingcli/template_data/microservice/template/internal/service/health.go +26 -0
  199. biucingcli/template_data/microservice/template/internal/service/ping.go +23 -0
  200. biucingcli/template_data/microservice/template/internal/telemetry/telemetry.go +56 -0
  201. biucingcli/template_data/microservice/template/internal/transport/grpc.go +51 -0
  202. biucingcli/template_data/microservice/template/internal/transport/ping.go +28 -0
  203. biucingcli/template_data/microservice/template/scripts/bootstrap +29 -0
  204. biucingcli/template_data/microservice/template/scripts/doctor +115 -0
  205. biucingcli/template_data/microservice/template/tests/server_test.go +153 -0
  206. biucingcli/template_data/microservice/template.json +114 -0
  207. biucingcli/template_data/web-service/template/.air.toml +11 -0
  208. biucingcli/template_data/web-service/template/.dockerignore +5 -0
  209. biucingcli/template_data/web-service/template/.gitignore +5 -0
  210. biucingcli/template_data/web-service/template/.mise.toml +2 -0
  211. biucingcli/template_data/web-service/template/Brewfile +5 -0
  212. biucingcli/template_data/web-service/template/Dockerfile +41 -0
  213. biucingcli/template_data/web-service/template/Dockerfile.dev +45 -0
  214. biucingcli/template_data/web-service/template/Makefile +113 -0
  215. biucingcli/template_data/web-service/template/README.md +164 -0
  216. biucingcli/template_data/web-service/template/cmd/server/main.go +50 -0
  217. biucingcli/template_data/web-service/template/compose.dev.yaml +28 -0
  218. biucingcli/template_data/web-service/template/compose.yaml +14 -0
  219. biucingcli/template_data/web-service/template/configs/config.yaml +10 -0
  220. biucingcli/template_data/web-service/template/go.mod +36 -0
  221. biucingcli/template_data/web-service/template/go.sum +89 -0
  222. biucingcli/template_data/web-service/template/internal/config/config.go +84 -0
  223. biucingcli/template_data/web-service/template/internal/config/config_test.go +88 -0
  224. biucingcli/template_data/web-service/template/internal/handler/health.go +25 -0
  225. biucingcli/template_data/web-service/template/internal/handler/ping.go +25 -0
  226. biucingcli/template_data/web-service/template/internal/handler/user.go +40 -0
  227. biucingcli/template_data/web-service/template/internal/model/health.go +6 -0
  228. biucingcli/template_data/web-service/template/internal/model/ping.go +7 -0
  229. biucingcli/template_data/web-service/template/internal/model/user.go +7 -0
  230. biucingcli/template_data/web-service/template/internal/repository/.gitkeep +1 -0
  231. biucingcli/template_data/web-service/template/internal/repository/user.go +37 -0
  232. biucingcli/template_data/web-service/template/internal/router/router.go +28 -0
  233. biucingcli/template_data/web-service/template/internal/runtime/server.go +76 -0
  234. biucingcli/template_data/web-service/template/internal/runtime/server_test.go +139 -0
  235. biucingcli/template_data/web-service/template/internal/service/health.go +22 -0
  236. biucingcli/template_data/web-service/template/internal/service/ping.go +23 -0
  237. biucingcli/template_data/web-service/template/internal/service/user.go +27 -0
  238. biucingcli/template_data/web-service/template/scripts/bootstrap +23 -0
  239. biucingcli/template_data/web-service/template/scripts/doctor +83 -0
  240. biucingcli/template_data/web-service/template/tests/server_test.go +160 -0
  241. biucingcli/template_data/web-service/template.json +88 -0
  242. biucingcli/template_data/worker/template/.dockerignore +3 -0
  243. biucingcli/template_data/worker/template/.gitignore +2 -0
  244. biucingcli/template_data/worker/template/.mise.toml +2 -0
  245. biucingcli/template_data/worker/template/Brewfile +1 -0
  246. biucingcli/template_data/worker/template/Dockerfile +19 -0
  247. biucingcli/template_data/worker/template/Dockerfile.dev +9 -0
  248. biucingcli/template_data/worker/template/Makefile +105 -0
  249. biucingcli/template_data/worker/template/README.md +164 -0
  250. biucingcli/template_data/worker/template/cmd/worker/main.go +41 -0
  251. biucingcli/template_data/worker/template/compose.dev.yaml +29 -0
  252. biucingcli/template_data/worker/template/configs/config.json +11 -0
  253. biucingcli/template_data/worker/template/go.mod +3 -0
  254. biucingcli/template_data/worker/template/go.sum +1 -0
  255. biucingcli/template_data/worker/template/internal/config/config.go +108 -0
  256. biucingcli/template_data/worker/template/internal/config/config_test.go +86 -0
  257. biucingcli/template_data/worker/template/internal/runtime/runner.go +199 -0
  258. biucingcli/template_data/worker/template/internal/runtime/runner_test.go +215 -0
  259. biucingcli/template_data/worker/template/internal/task/heartbeat.go +19 -0
  260. biucingcli/template_data/worker/template/scripts/bootstrap +6 -0
  261. biucingcli/template_data/worker/template/scripts/doctor +41 -0
  262. biucingcli/template_data/worker/template/tests/worker_test.go +44 -0
  263. biucingcli/template_data/worker/template.json +100 -0
  264. biucingcli/templates.py +902 -0
  265. biucingcli-0.9.1.dist-info/METADATA +204 -0
  266. biucingcli-0.9.1.dist-info/RECORD +269 -0
  267. biucingcli-0.9.1.dist-info/WHEEL +5 -0
  268. biucingcli-0.9.1.dist-info/entry_points.txt +2 -0
  269. biucingcli-0.9.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,12 @@
1
+ import { defineConfig } from "vite";
2
+ import react from "@vitejs/plugin-react";
3
+
4
+ export default defineConfig({
5
+ plugins: [react()],
6
+ test: {
7
+ environment: "jsdom",
8
+ globals: true,
9
+ setupFiles: "./src/test/setup.ts",
10
+ include: ["src/**/*.test.{ts,tsx}"],
11
+ },
12
+ });
@@ -0,0 +1,81 @@
1
+ {
2
+ "name": "frontend",
3
+ "description": "React + TypeScript starter for independent projects",
4
+ "category": "frontend",
5
+ "stack": ["React", "TypeScript"],
6
+ "tags": ["web", "docker", "playwright", "vitest"],
7
+ "platforms": ["web"],
8
+ "maturity": {
9
+ "level": "validated",
10
+ "summary": "Docker-first frontend starter with test and browser-smoke workflows."
11
+ },
12
+ "validation": {
13
+ "status": "real-build-verified",
14
+ "verification_tier": "real-build",
15
+ "evidence": [
16
+ "python unittest template rendering coverage",
17
+ "real docker runtime image builds",
18
+ "real docker development image builds",
19
+ "real Playwright browser checks against the production Nginx image"
20
+ ]
21
+ },
22
+ "operating_assumptions": [
23
+ "Local development is expected to run through Docker-first workflows.",
24
+ "Browser smoke coverage and runtime packaging are part of the starter contract."
25
+ ],
26
+ "workflow_labels": ["bootstrap", "dev", "test", "build", "runtime"],
27
+ "commands": {
28
+ "bootstrap": "make bootstrap",
29
+ "doctor": "make doctor",
30
+ "lint": "make lint",
31
+ "test": "make test",
32
+ "verify": "make verify",
33
+ "build": "make build",
34
+ "clean": "make clean",
35
+ "help": "make help"
36
+ },
37
+ "worktree": {
38
+ "support_level": "worktree-ready",
39
+ "isolation_dimensions": [
40
+ "runtime-names",
41
+ "ports",
42
+ "caches",
43
+ "generated-output",
44
+ "cleanup",
45
+ "diagnostics"
46
+ ],
47
+ "diagnostics": [
48
+ "make worktree-info",
49
+ "make worktree-doctor"
50
+ ],
51
+ "cleanup": [
52
+ "make clean-worktree"
53
+ ]
54
+ },
55
+ "variables": [
56
+ {
57
+ "name": "project_name",
58
+ "required": true,
59
+ "validator": "project-name"
60
+ },
61
+ {
62
+ "name": "display_name",
63
+ "required": false,
64
+ "default_from": "project_name",
65
+ "validator": "display-name"
66
+ },
67
+ {
68
+ "name": "package_name",
69
+ "required": false,
70
+ "default_from": "project_name",
71
+ "validator": "npm-package"
72
+ }
73
+ ],
74
+ "next_steps": [
75
+ "make bootstrap",
76
+ "make dev",
77
+ "make test",
78
+ "make docker-build",
79
+ "make docker-run"
80
+ ]
81
+ }
@@ -0,0 +1,21 @@
1
+ .hvigor/
2
+ .ohpm/
3
+ build/
4
+ entry/build/
5
+ node_modules/
6
+ oh_modules/
7
+ local.properties
8
+ *.hap
9
+ *.app
10
+ *.log
11
+
12
+ # Local credentials, signing material, and release backups
13
+ .env
14
+ .env.*
15
+ !.env.example
16
+ /credentials/
17
+ /signing/
18
+ /.biucing/
19
+ *.p8
20
+ *.p12
21
+ *.pfx
@@ -0,0 +1,2 @@
1
+ [tools]
2
+ node = "22"
@@ -0,0 +1,10 @@
1
+ {
2
+ "app": {
3
+ "bundleName": "{{BUNDLE_NAME}}",
4
+ "vendor": "{{ORGANIZATION_NAME}}",
5
+ "versionCode": {{HARMONY_VERSION_CODE}},
6
+ "versionName": "{{HARMONY_VERSION_NAME}}",
7
+ "icon": "$media:layered_image",
8
+ "label": "$string:app_name"
9
+ }
10
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "string": [
3
+ {
4
+ "name": "app_name",
5
+ "value": "{{DISPLAY_NAME}}"
6
+ }
7
+ ]
8
+ }
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128">
2
+ <rect width="128" height="128" rx="28" fill="#1F6FEB"/>
3
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128">
2
+ <path d="M33 78c14-31 48-31 62 0" fill="none" stroke="#FFFFFF" stroke-width="10" stroke-linecap="round"/>
3
+ <circle cx="64" cy="50" r="12" fill="#FFFFFF"/>
4
+ </svg>
@@ -0,0 +1,6 @@
1
+ {
2
+ "layered-image": {
3
+ "background": "$media:background",
4
+ "foreground": "$media:foreground"
5
+ }
6
+ }
@@ -0,0 +1,106 @@
1
+ SHELL := /bin/zsh
2
+ HVIGOR ?= hvigorw
3
+
4
+ APP_NAME={{PROJECT_NAME}}
5
+ WORKTREE_ROOT ?= $(shell git rev-parse --show-toplevel 2>/dev/null || pwd)
6
+ WORKTREE_LABEL ?= $(shell basename "$(WORKTREE_ROOT)" | tr '[:upper:]' '[:lower:]' | tr -cs 'a-z0-9' '-' | sed 's/^-//; s/-$$//')
7
+ WORKTREE_ID ?= $(shell printf '%s' "$(WORKTREE_ROOT)" | shasum | cut -c1-8)
8
+ WORKTREE_SLUG ?= $(APP_NAME)-$(WORKTREE_ID)
9
+ HVIGOR_HOME ?= $(WORKTREE_ROOT)/.hvigor/worktree/$(WORKTREE_ID)
10
+ OHPM_HOME ?= $(WORKTREE_ROOT)/.ohpm/worktree/$(WORKTREE_ID)
11
+ OH_MODULES_DIR ?= $(WORKTREE_ROOT)/oh_modules
12
+ MODULE_BUILD_DIR ?= $(WORKTREE_ROOT)/{{HARMONY_MODULE_NAME}}/build
13
+ LOCAL_PROPERTIES ?= $(WORKTREE_ROOT)/local.properties
14
+ DEBUG_BUNDLE_SUFFIX ?= .$(WORKTREE_ID)
15
+ EFFECTIVE_DEBUG_BUNDLE_NAME ?= {{BUNDLE_NAME}}$(DEBUG_BUNDLE_SUFFIX)
16
+ HVIGOR_PROPS := -p module={{HARMONY_MODULE_NAME}} -p biucing.worktree.id=$(WORKTREE_ID) -p biucing.worktree.bundleSuffix=$(DEBUG_BUNDLE_SUFFIX)
17
+
18
+ export HVIGOR_HOME
19
+ export OHPM_HOME
20
+ export BIUCING_HARMONY_DEBUG_BUNDLE_SUFFIX := $(DEBUG_BUNDLE_SUFFIX)
21
+
22
+ .PHONY: bootstrap doctor verify-supply-chain lint test build package artifact-info verify verify-release-artifact release-preflight release signing-info clean open worktree-info worktree-doctor worktree-debug-identity clean-worktree help
23
+
24
+ bootstrap:
25
+ ./scripts/bootstrap
26
+
27
+ doctor:
28
+ ./scripts/doctor
29
+
30
+ verify-supply-chain:
31
+ ./scripts/verify-supply-chain
32
+
33
+ lint test build release-preflight release: verify-supply-chain
34
+
35
+ lint:
36
+ ./scripts/lint
37
+
38
+ test:
39
+ ./scripts/test
40
+
41
+ build:
42
+ $(HVIGOR) assembleHap --mode module $(HVIGOR_PROPS)
43
+
44
+ package: build
45
+
46
+ artifact-info:
47
+ ./scripts/artifact-info
48
+
49
+ verify-release-artifact:
50
+ ./scripts/verify-release-artifact
51
+
52
+ verify: verify-supply-chain doctor lint test build artifact-info
53
+
54
+ release-preflight:
55
+ ./scripts/release-preflight
56
+
57
+ release:
58
+ ./scripts/release-build
59
+
60
+ signing-info:
61
+ @printf '%s\n' "Configure signing in DevEco Studio or copy docs/release-signing.local.properties.example to local.properties, then run make release-preflight and make release."
62
+
63
+ clean:
64
+ $(HVIGOR) clean
65
+
66
+ open:
67
+ open -a "DevEco Studio" .
68
+
69
+ worktree-info:
70
+ @printf '%s\n' "Project: {{PROJECT_NAME}}"
71
+ @printf '%s\n' "Worktree root: $(WORKTREE_ROOT)"
72
+ @printf '%s\n' "WORKTREE_LABEL: $(WORKTREE_LABEL)"
73
+ @printf '%s\n' "WORKTREE_ID: $(WORKTREE_ID)"
74
+ @printf '%s\n' "WORKTREE_SLUG: $(WORKTREE_SLUG)"
75
+ @printf '%s\n' "HVIGOR_HOME: $(HVIGOR_HOME)"
76
+ @printf '%s\n' "OHPM_HOME: $(OHPM_HOME)"
77
+ @printf '%s\n' "oh_modules: $(OH_MODULES_DIR)"
78
+ @printf '%s\n' "Module build dir: $(MODULE_BUILD_DIR)"
79
+ @printf '%s\n' "local.properties: $(LOCAL_PROPERTIES)"
80
+ @printf '%s\n' "Debug bundle suffix: $(DEBUG_BUNDLE_SUFFIX)"
81
+ @printf '%s\n' "Diagnostic debug bundle name: $(EFFECTIVE_DEBUG_BUNDLE_NAME)"
82
+ @printf '%s\n' "Debug bundle rewriting: deferred; AppScope/app.json5 stays stable by default."
83
+
84
+ worktree-doctor:
85
+ @printf '%s\n' "Checking HarmonyOS worktree isolation..."
86
+ @test -n "$(WORKTREE_ID)" || (printf '%s\n' "WORKTREE_ID is empty" && exit 1)
87
+ @case "$(HVIGOR_HOME)" in "$(WORKTREE_ROOT)"/*) ;; *) printf '%s\n' "HVIGOR_HOME should stay inside this worktree: $(HVIGOR_HOME)"; exit 1;; esac
88
+ @case "$(OHPM_HOME)" in "$(WORKTREE_ROOT)"/*) ;; *) printf '%s\n' "OHPM_HOME should stay inside this worktree: $(OHPM_HOME)"; exit 1;; esac
89
+ @if [ -f "$(LOCAL_PROPERTIES)" ]; then printf '%s\n' "local.properties is local to this worktree and must remain untracked."; else printf '%s\n' "local.properties is absent; make release requires local signing material."; fi
90
+ @printf '%s\n' "Debug identity check: make worktree-debug-identity"
91
+ @printf '%s\n' "HarmonyOS worktree isolation looks ready."
92
+
93
+ worktree-debug-identity:
94
+ @printf '%s\n' "HarmonyOS debug identity status"
95
+ @printf '%s\n' "Base bundle name: {{BUNDLE_NAME}}"
96
+ @printf '%s\n' "Debug bundle suffix: $(DEBUG_BUNDLE_SUFFIX)"
97
+ @printf '%s\n' "Diagnostic debug bundle name: $(EFFECTIVE_DEBUG_BUNDLE_NAME)"
98
+ @printf '%s\n' "Hvigor properties: biucing.worktree.id=$(WORKTREE_ID), biucing.worktree.bundleSuffix=$(DEBUG_BUNDLE_SUFFIX)"
99
+ @printf '%s\n' "Status: bundle rewriting is deferred until the DevEco/hvigor app metadata hook is verified."
100
+ @printf '%s\n' "AppScope/app.json5 remains the source of truth for bundleName."
101
+
102
+ clean-worktree:
103
+ rm -rf "$(HVIGOR_HOME)" "$(OHPM_HOME)" "$(MODULE_BUILD_DIR)" build .biucing/release
104
+
105
+ help:
106
+ @printf '%s\n' "Common commands:" " make bootstrap Prepare project dependencies and tooling" " make doctor Check the local environment" " make lint Run static checks" " make test Run automated tests" " make verify Run the template quality gate" " make build Build the project" " make clean Remove generated build state" " make help Show this command contract"
@@ -0,0 +1,152 @@
1
+ # {{DISPLAY_NAME}}
2
+
3
+ This project was generated by BiucingCLI as an ArkTS HarmonyOS starter.
4
+
5
+ ## Stack
6
+
7
+ - ArkTS
8
+ - ArkUI declarative UI
9
+ - HarmonyOS Stage model
10
+ - DevEco Studio
11
+ - hvigor or hvigorw
12
+ - ohpm
13
+
14
+ ## Configuration
15
+
16
+ - Bundle name: `{{BUNDLE_NAME}}`
17
+ - Entry module: `{{HARMONY_MODULE_NAME}}`
18
+ - Entry ability: `{{ABILITY_NAME}}`
19
+ - Compatible SDK: `{{COMPATIBLE_SDK_VERSION}}`
20
+ - Target SDK: `{{TARGET_SDK_VERSION}}`
21
+ - Minimum API: `{{MIN_API_VERSION}}`
22
+ - Version: `{{HARMONY_VERSION_NAME}}` (`{{HARMONY_VERSION_CODE}}`)
23
+
24
+ ## Repository Layout
25
+
26
+ - `AppScope/app.json5`: application-level HarmonyOS metadata
27
+ - `entry/`: installable HarmonyOS entry module
28
+ - `entry/src/main/module.json5`: module, ability, device, and page routing metadata
29
+ - `entry/src/main/ets/core/config/`: generated app configuration constants
30
+ - `entry/src/main/ets/core/designsystem/`: shared ArkUI tokens for color, spacing, radius, and type
31
+ - `entry/src/main/ets/entryability/`: Stage model ability lifecycle
32
+ - `entry/src/main/ets/pages/`: ArkUI `Index` and `Settings` pages
33
+ - `scripts/`: bootstrap and local environment checks
34
+ - `docs/`: release signing notes and local-only signing property examples
35
+
36
+ ## Getting Started
37
+
38
+ ```bash
39
+ make bootstrap
40
+ make doctor
41
+ make verify-supply-chain
42
+ make lint
43
+ make test
44
+ make build
45
+ make artifact-info
46
+ make verify
47
+ make release-preflight
48
+ make verify-release-artifact
49
+ make release
50
+ ```
51
+
52
+ `make doctor` checks Node.js, ohpm, hvigor or hvigorw, `DEVECO_SDK_HOME`, and common HarmonyOS SDK environment variables before you spend time on a build.
53
+ For a default macOS DevEco Studio install, the CLI build environment usually looks like:
54
+
55
+ ```bash
56
+ export PATH="/Applications/DevEco-Studio.app/Contents/tools/ohpm/bin:/Applications/DevEco-Studio.app/Contents/tools/hvigor/bin:$PATH"
57
+ export DEVECO_SDK_HOME="/Applications/DevEco-Studio.app/Contents/sdk"
58
+ export HOS_SDK_HOME="/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony"
59
+ ```
60
+ Open the project with DevEco Studio when you need signing, device management, previewer, or emulator workflows.
61
+ `make bootstrap` first verifies exact ohpm versions, the approved registry, and every lockfile SHA-512 integrity value; it fails if installation rewrites the lockfile. `make test` runs the starter Hypium suite through `hvigorw test`. `make build` creates an unsigned HAP by default. `make artifact-info` verifies the latest HAP exists, is non-empty, and prints its checksum. `make verify` includes the supply-chain gate before `doctor`, `lint`, `test`, `build`, and `artifact-info`. `make release-preflight` checks local signing material and rejects signing values left in the tracked build profile. `make release` requires a clean tracked `build-profile.json5`, temporarily injects release signing config, runs hvigor with `buildMode=release`, verifies the signed HAP, and restores the exact original profile on exit.
62
+
63
+ ## Worktree Workflow
64
+
65
+ Each worktree derives a human-readable `WORKTREE_LABEL` from its directory name
66
+ and a hash-based `WORKTREE_ID` from the worktree root path. Override
67
+ `WORKTREE_ID` when you want a shorter or stable value across renamed folders:
68
+
69
+ ```bash
70
+ WORKTREE_ID=feature-a make worktree-info
71
+ WORKTREE_ID=feature-a make worktree-debug-identity
72
+ WORKTREE_ID=feature-a make build
73
+ WORKTREE_ID=feature-a make clean-worktree
74
+ ```
75
+
76
+ `make worktree-info` prints the isolated hvigor, ohpm, `oh_modules`, module
77
+ build, and signing-file paths. `make worktree-doctor` checks that tool caches
78
+ stay inside this worktree and reminds you that `local.properties` is local-only
79
+ signing material.
80
+
81
+ `make worktree-debug-identity` prints the base bundle name, requested
82
+ `DEBUG_BUNDLE_SUFFIX`, diagnostic debug bundle name, and hvigor properties. It
83
+ is intentionally read-only: `AppScope/app.json5` remains the source of truth for
84
+ `bundleName`. Automatic per-worktree bundle rewriting is deferred until the
85
+ DevEco/hvigor app metadata hook is verified on a configured HarmonyOS
86
+ workstation.
87
+
88
+ ## Standard Commands
89
+
90
+ ```bash
91
+ make bootstrap
92
+ make doctor
93
+ make verify-supply-chain
94
+ make lint
95
+ make test
96
+ make build
97
+ make package
98
+ make artifact-info
99
+ make verify
100
+ make release-preflight
101
+ make verify-release-artifact
102
+ make release
103
+ make signing-info
104
+ make clean
105
+ make open
106
+ make help
107
+ ```
108
+
109
+ ## Testing
110
+
111
+ The generated starter exposes `make test` through `hvigorw test --mode module -p module={{HARMONY_MODULE_NAME}}`. The template includes `@ohos/hypium` as a dev dependency and a starter smoke suite at `entry/src/test/List.test.ets`. Run `make bootstrap` before `make test` so ohpm can install test dependencies.
112
+
113
+ `make verify` treats tests as a required release-readiness gate. If the local ohpm registry, SDK, or Hypium dependency is unavailable, the test command fails with a clear setup message instead of silently skipping tests.
114
+
115
+ ## Linting
116
+
117
+ `make lint` is a project guard, not a full ArkTS linter. It validates `code-linter.json5`, required HarmonyOS source/config files, and unrendered template placeholders. DevEco Studio remains the full lint surface until a stable public CLI lint or format command is verified for generated HAP projects.
118
+
119
+ ## Release Signing
120
+
121
+ Local builds produce an unsigned HAP unless signing is configured. Use DevEco Studio for interactive signing setup, or copy `docs/release-signing.local.properties.example` to `local.properties` for local-only signing values. Put `.cer`, `.p7b`, and `.p12` signing material under the ignored `signing/` directory. `make release-preflight` fails fast when required values are missing, paths do not resolve, or signing material remains in tracked `build-profile.json5`.
122
+
123
+ `make release` stores a mode-restricted backup under the ignored `.biucing/release/` directory, writes the injected profile atomically, and restores the original bytes after success, build failure, `HUP`, `INT`, or `TERM`. Before reporting success it uses the SDK's `hap-sign-tool verify-app` and `verify-profile` commands, compares the embedded signer certificate and profile with the configured inputs, and verifies the profile's bundle name is exactly `{{BUNDLE_NAME}}`. Any mismatch fails the release. `SIGKILL` cannot run cleanup handlers; the next preflight detects a non-empty signing configuration. Do not stage Git changes concurrently with a signed release build.
124
+
125
+ Set `HAP_SIGN_TOOL` only when the SDK tool cannot be found under `DEVECO_SDK_HOME` or the default DevEco Studio installation. CI should point it at the reviewed SDK's `hap-sign-tool.jar`, not an arbitrary replacement.
126
+
127
+ The ignore rules also protect `credentials/`, private-key containers, and local environment files. They only apply to untracked files and do not override `git add -f`. If a real credential has already been committed, revoke or rotate it first, remove it from the index, and assess whether repository history must be rewritten.
128
+
129
+ ## Pre-Distribution Coverage
130
+
131
+ The template intentionally stops before app-market upload or enterprise distribution. Before that handoff, the supported local stages are:
132
+
133
+ - `make bootstrap`: verify the lockfile, install HarmonyOS dependencies, and reject lockfile drift.
134
+ - `make verify-supply-chain`: enforce exact package versions, approved ohpm registry URLs, and SHA-512 integrity values.
135
+ - `make doctor`: verify DevEco Studio, Node.js, ohpm, hvigor, and SDK paths.
136
+ - `make lint`: validate committed lint/config shape and generated template integrity.
137
+ - `make test`: run ArkTS/Hypium CLI tests.
138
+ - `make build`: produce an unsigned HAP.
139
+ - `make artifact-info`: verify and fingerprint the package artifact.
140
+ - `make release-preflight`: verify signing material is present.
141
+ - `make verify-release-artifact`: cryptographically verify a signed HAP, signer, profile, and bundle identity.
142
+ - `make release`: produce and verify a release HAP when signing material is configured.
143
+
144
+ ## Notes
145
+
146
+ - `oh-package.json5` is the project dependency manifest; dependencies must use exact versions and stay aligned with `oh-package-lock.json5`.
147
+ - `build-profile.json5` declares the app signing placeholder and entry module.
148
+ - `code-linter.json5` is committed so DevEco Studio and later CLI lint wiring share one rule source.
149
+ - `docs/release-signing.local.properties.example` documents placeholder-only local signing keys; `local.properties`, `signing/`, `credentials/`, and `.biucing/` are git-ignored.
150
+ - The generated starter keeps app metadata in `AppConfig` and visual constants in `core/designsystem` so feature pages do not duplicate bundle, version, spacing, or color values.
151
+ - Signing is left to DevEco Studio or CI-specific `local.properties` configuration.
152
+ - Keep `bundleName`, module name, and SDK versions aligned with your target HarmonyOS release channel before store packaging.
@@ -0,0 +1,36 @@
1
+ {
2
+ "app": {
3
+ "signingConfigs": [],
4
+ "products": [
5
+ {
6
+ "name": "default",
7
+ "signingConfig": "default",
8
+ "compatibleSdkVersion": "{{COMPATIBLE_SDK_VERSION}}",
9
+ "targetSdkVersion": "{{TARGET_SDK_VERSION}}",
10
+ "runtimeOS": "HarmonyOS"
11
+ }
12
+ ],
13
+ "buildModeSet": [
14
+ {
15
+ "name": "debug"
16
+ },
17
+ {
18
+ "name": "release"
19
+ }
20
+ ]
21
+ },
22
+ "modules": [
23
+ {
24
+ "name": "{{HARMONY_MODULE_NAME}}",
25
+ "srcPath": "./entry",
26
+ "targets": [
27
+ {
28
+ "name": "default",
29
+ "applyToProducts": [
30
+ "default"
31
+ ]
32
+ }
33
+ ]
34
+ }
35
+ ]
36
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "files": [
3
+ "**/*.ets",
4
+ "**/*.ts"
5
+ ],
6
+ "ignore": [
7
+ "oh_modules/**",
8
+ "build/**",
9
+ ".hvigor/**"
10
+ ],
11
+ "rules": {}
12
+ }
@@ -0,0 +1,14 @@
1
+ # This example must contain placeholders only. Never put real credentials here.
2
+ # Copy these keys into local.properties for local-only HarmonyOS signing setup.
3
+ # Do not commit real signing material.
4
+ #
5
+ # DevEco Studio can manage signing interactively. Use this file only when the
6
+ # team has agreed on CLI/CI signing property names.
7
+
8
+ biucing.harmony.signing.certpath=signing/release.cer
9
+ biucing.harmony.signing.profile=signing/release.p7b
10
+ biucing.harmony.signing.storeFile=signing/release.p12
11
+ biucing.harmony.signing.storePassword=change-me-32-characters-minimum
12
+ biucing.harmony.signing.keyAlias=release
13
+ biucing.harmony.signing.keyPassword=change-me-32-characters-minimum
14
+ biucing.harmony.signing.signAlg=SHA256withECDSA
@@ -0,0 +1,9 @@
1
+ {
2
+ "apiType": "stageMode",
3
+ "buildOption": {},
4
+ "targets": [
5
+ {
6
+ "name": "default"
7
+ }
8
+ ]
9
+ }
@@ -0,0 +1,6 @@
1
+ import { hapTasks } from '@ohos/hvigor-ohos-plugin';
2
+
3
+ export default {
4
+ system: hapTasks,
5
+ plugins: []
6
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "{{HARMONY_MODULE_NAME}}",
3
+ "version": "{{HARMONY_VERSION_NAME}}",
4
+ "description": "{{DISPLAY_NAME}} entry module",
5
+ "main": "",
6
+ "author": "{{ORGANIZATION_NAME}}",
7
+ "license": "MIT",
8
+ "dependencies": {}
9
+ }
@@ -0,0 +1,10 @@
1
+ export class AppConfig {
2
+ static readonly displayName: string = '{{DISPLAY_NAME}}';
3
+ static readonly bundleName: string = '{{BUNDLE_NAME}}';
4
+ static readonly worktreeBundleSuffix: string = '';
5
+ static readonly moduleName: string = '{{HARMONY_MODULE_NAME}}';
6
+ static readonly abilityName: string = '{{ABILITY_NAME}}';
7
+ static readonly versionName: string = '{{HARMONY_VERSION_NAME}}';
8
+ static readonly versionCode: string = '{{HARMONY_VERSION_CODE}}';
9
+ static readonly releaseChannel: string = 'local';
10
+ }
@@ -0,0 +1,28 @@
1
+ export class BiucingColors {
2
+ static readonly accent: string = '#246BFD';
3
+ static readonly accentSoft: string = '#E8F0FF';
4
+ static readonly success: string = '#137333';
5
+ static readonly successSoft: string = '#E7F4EC';
6
+ }
7
+
8
+ export class BiucingSpacing {
9
+ static readonly xSmall: number = 4;
10
+ static readonly small: number = 8;
11
+ static readonly medium: number = 12;
12
+ static readonly large: number = 16;
13
+ static readonly xLarge: number = 24;
14
+ static readonly xxLarge: number = 32;
15
+ }
16
+
17
+ export class BiucingRadius {
18
+ static readonly small: number = 8;
19
+ static readonly medium: number = 12;
20
+ static readonly large: number = 16;
21
+ }
22
+
23
+ export class BiucingTypography {
24
+ static readonly title: number = 30;
25
+ static readonly sectionTitle: number = 20;
26
+ static readonly body: number = 16;
27
+ static readonly caption: number = 14;
28
+ }
@@ -0,0 +1,29 @@
1
+ import AbilityConstant from '@ohos.app.ability.AbilityConstant';
2
+ import UIAbility from '@ohos.app.ability.UIAbility';
3
+ import Want from '@ohos.app.ability.Want';
4
+ import hilog from '@ohos.hilog';
5
+ import window from '@ohos.window';
6
+
7
+ const DOMAIN = 0x0000;
8
+ const TAG = '{{ABILITY_NAME}}';
9
+
10
+ export default class {{ABILITY_NAME}} extends UIAbility {
11
+ onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
12
+ hilog.info(DOMAIN, TAG, 'Ability created for {{DISPLAY_NAME}}.');
13
+ }
14
+
15
+ onWindowStageCreate(windowStage: window.WindowStage): void {
16
+ windowStage.loadContent('pages/Index', (error) => {
17
+ if (error.code) {
18
+ hilog.error(DOMAIN, TAG, 'Failed to load content. code=%{public}d message=%{public}s', error.code, error.message);
19
+ return;
20
+ }
21
+
22
+ hilog.info(DOMAIN, TAG, 'Loaded {{DISPLAY_NAME}} content.');
23
+ });
24
+ }
25
+
26
+ onDestroy(): void {
27
+ hilog.info(DOMAIN, TAG, 'Ability destroyed.');
28
+ }
29
+ }
@@ -0,0 +1,47 @@
1
+ import { AppConfig } from '../core/config/AppConfig';
2
+ import { BiucingColors, BiucingRadius, BiucingSpacing, BiucingTypography } from '../core/designsystem/Tokens';
3
+
4
+ @Entry
5
+ @Component
6
+ struct Index {
7
+ build() {
8
+ Column({ space: BiucingSpacing.large }) {
9
+ Text(AppConfig.displayName)
10
+ .fontSize(BiucingTypography.title)
11
+ .fontWeight(FontWeight.Bold)
12
+ .fontColor($r('app.color.text_primary'))
13
+
14
+ Text('Generated by BiucingCLI')
15
+ .fontSize(BiucingTypography.body)
16
+ .fontColor($r('app.color.text_secondary'))
17
+
18
+ Column({ space: BiucingSpacing.small }) {
19
+ Text(`Bundle: ${AppConfig.bundleName}`)
20
+ .fontSize(BiucingTypography.caption)
21
+ Text(`Module: ${AppConfig.moduleName}`)
22
+ .fontSize(BiucingTypography.caption)
23
+ Text(`Channel: ${AppConfig.releaseChannel}`)
24
+ .fontSize(BiucingTypography.caption)
25
+ .fontColor(BiucingColors.success)
26
+ }
27
+ .alignItems(HorizontalAlign.Start)
28
+ .padding(BiucingSpacing.large)
29
+ .borderRadius(BiucingRadius.medium)
30
+ .backgroundColor($r('app.color.surface'))
31
+ .width('100%')
32
+
33
+ Button('Open settings')
34
+ .fontSize(BiucingTypography.body)
35
+ .backgroundColor(BiucingColors.accent)
36
+ .onClick(() => {
37
+ this.getUIContext().getRouter().pushUrl({ url: 'pages/Settings' });
38
+ })
39
+ }
40
+ .justifyContent(FlexAlign.Center)
41
+ .alignItems(HorizontalAlign.Center)
42
+ .height('100%')
43
+ .width('100%')
44
+ .padding(BiucingSpacing.xLarge)
45
+ .backgroundColor($r('app.color.page_background'))
46
+ }
47
+ }