@bleedingdev/modern-js-create 3.2.0-ultramodern.98 → 3.4.0-ultramodern.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 (194) hide show
  1. package/README.md +281 -106
  2. package/bin/run.js +1 -0
  3. package/dist/cjs/create-package-root.cjs +63 -0
  4. package/dist/cjs/index.cjs +658 -0
  5. package/dist/cjs/locale/en.cjs +101 -0
  6. package/dist/cjs/locale/index.cjs +50 -0
  7. package/dist/cjs/locale/zh.cjs +101 -0
  8. package/dist/cjs/ultramodern-package-source.cjs +135 -0
  9. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +603 -0
  10. package/dist/cjs/ultramodern-workspace/app-files.cjs +223 -0
  11. package/dist/cjs/ultramodern-workspace/codesmith.cjs +134 -0
  12. package/dist/cjs/ultramodern-workspace/contracts.cjs +837 -0
  13. package/dist/cjs/ultramodern-workspace/demo-components.cjs +422 -0
  14. package/dist/cjs/ultramodern-workspace/descriptors.cjs +222 -0
  15. package/dist/cjs/ultramodern-workspace/effect-api.cjs +952 -0
  16. package/dist/cjs/ultramodern-workspace/fs-io.cjs +191 -0
  17. package/dist/cjs/ultramodern-workspace/generation-result.cjs +158 -0
  18. package/dist/cjs/ultramodern-workspace/index.cjs +51 -0
  19. package/dist/cjs/ultramodern-workspace/locales.cjs +173 -0
  20. package/dist/cjs/ultramodern-workspace/module-federation.cjs +487 -0
  21. package/dist/cjs/ultramodern-workspace/naming.cjs +161 -0
  22. package/dist/cjs/ultramodern-workspace/overlays.cjs +120 -0
  23. package/dist/cjs/ultramodern-workspace/package-json.cjs +406 -0
  24. package/dist/cjs/ultramodern-workspace/package-source.cjs +59 -0
  25. package/dist/cjs/ultramodern-workspace/policy.cjs +248 -0
  26. package/dist/cjs/ultramodern-workspace/public-api.cjs +47 -0
  27. package/dist/cjs/ultramodern-workspace/public-surface.cjs +268 -0
  28. package/dist/cjs/ultramodern-workspace/routes.cjs +375 -0
  29. package/dist/cjs/ultramodern-workspace/types.cjs +61 -0
  30. package/dist/cjs/ultramodern-workspace/versions.cjs +161 -0
  31. package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +154 -0
  32. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +197 -0
  33. package/dist/esm/create-package-root.js +14 -0
  34. package/dist/esm/index.js +621 -0
  35. package/dist/esm/locale/en.js +63 -0
  36. package/dist/esm/locale/index.js +9 -0
  37. package/dist/esm/locale/zh.js +63 -0
  38. package/dist/esm/ultramodern-package-source.js +63 -0
  39. package/dist/esm/ultramodern-workspace/add-vertical.js +511 -0
  40. package/dist/esm/ultramodern-workspace/app-files.js +149 -0
  41. package/dist/esm/ultramodern-workspace/codesmith.js +86 -0
  42. package/dist/esm/ultramodern-workspace/contracts.js +742 -0
  43. package/dist/esm/ultramodern-workspace/demo-components.js +363 -0
  44. package/dist/esm/ultramodern-workspace/descriptors.js +133 -0
  45. package/dist/esm/ultramodern-workspace/effect-api.js +854 -0
  46. package/dist/esm/ultramodern-workspace/fs-io.js +90 -0
  47. package/dist/esm/ultramodern-workspace/generation-result.js +102 -0
  48. package/dist/esm/ultramodern-workspace/index.js +3 -0
  49. package/dist/esm/ultramodern-workspace/locales.js +122 -0
  50. package/dist/esm/ultramodern-workspace/module-federation.js +415 -0
  51. package/dist/esm/ultramodern-workspace/naming.js +71 -0
  52. package/dist/esm/ultramodern-workspace/overlays.js +79 -0
  53. package/dist/esm/ultramodern-workspace/package-json.js +338 -0
  54. package/dist/esm/ultramodern-workspace/package-source.js +21 -0
  55. package/dist/esm/ultramodern-workspace/policy.js +183 -0
  56. package/dist/esm/ultramodern-workspace/public-api.js +2 -0
  57. package/dist/esm/ultramodern-workspace/public-surface.js +183 -0
  58. package/dist/esm/ultramodern-workspace/routes.js +280 -0
  59. package/dist/esm/ultramodern-workspace/types.js +16 -0
  60. package/dist/esm/ultramodern-workspace/versions.js +36 -0
  61. package/dist/esm/ultramodern-workspace/workspace-scripts.js +92 -0
  62. package/dist/esm/ultramodern-workspace/write-workspace.js +143 -0
  63. package/dist/esm-node/create-package-root.js +15 -0
  64. package/dist/esm-node/index.js +622 -0
  65. package/dist/esm-node/locale/en.js +64 -0
  66. package/dist/esm-node/locale/index.js +10 -0
  67. package/dist/esm-node/locale/zh.js +64 -0
  68. package/dist/esm-node/ultramodern-package-source.js +64 -0
  69. package/dist/esm-node/ultramodern-workspace/add-vertical.js +512 -0
  70. package/dist/esm-node/ultramodern-workspace/app-files.js +150 -0
  71. package/dist/esm-node/ultramodern-workspace/codesmith.js +87 -0
  72. package/dist/esm-node/ultramodern-workspace/contracts.js +743 -0
  73. package/dist/esm-node/ultramodern-workspace/demo-components.js +364 -0
  74. package/dist/esm-node/ultramodern-workspace/descriptors.js +134 -0
  75. package/dist/esm-node/ultramodern-workspace/effect-api.js +855 -0
  76. package/dist/esm-node/ultramodern-workspace/fs-io.js +91 -0
  77. package/dist/esm-node/ultramodern-workspace/generation-result.js +103 -0
  78. package/dist/esm-node/ultramodern-workspace/index.js +4 -0
  79. package/dist/esm-node/ultramodern-workspace/locales.js +123 -0
  80. package/dist/esm-node/ultramodern-workspace/module-federation.js +416 -0
  81. package/dist/esm-node/ultramodern-workspace/naming.js +72 -0
  82. package/dist/esm-node/ultramodern-workspace/overlays.js +80 -0
  83. package/dist/esm-node/ultramodern-workspace/package-json.js +339 -0
  84. package/dist/esm-node/ultramodern-workspace/package-source.js +22 -0
  85. package/dist/esm-node/ultramodern-workspace/policy.js +184 -0
  86. package/dist/esm-node/ultramodern-workspace/public-api.js +3 -0
  87. package/dist/esm-node/ultramodern-workspace/public-surface.js +184 -0
  88. package/dist/esm-node/ultramodern-workspace/routes.js +281 -0
  89. package/dist/esm-node/ultramodern-workspace/types.js +17 -0
  90. package/dist/esm-node/ultramodern-workspace/versions.js +37 -0
  91. package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +93 -0
  92. package/dist/esm-node/ultramodern-workspace/write-workspace.js +144 -0
  93. package/dist/types/create-package-root.d.ts +1 -0
  94. package/dist/types/locale/en.d.ts +12 -8
  95. package/dist/types/locale/index.d.ts +125 -2
  96. package/dist/types/locale/zh.d.ts +12 -8
  97. package/dist/types/ultramodern-package-source.d.ts +28 -0
  98. package/dist/types/ultramodern-workspace/add-vertical.d.ts +36 -0
  99. package/dist/types/ultramodern-workspace/app-files.d.ts +14 -0
  100. package/dist/types/ultramodern-workspace/codesmith.d.ts +53 -0
  101. package/dist/types/ultramodern-workspace/contracts.d.ts +21 -0
  102. package/dist/types/ultramodern-workspace/demo-components.d.ts +9 -0
  103. package/dist/types/ultramodern-workspace/descriptors.d.ts +39 -0
  104. package/dist/types/ultramodern-workspace/effect-api.d.ts +73 -0
  105. package/dist/types/ultramodern-workspace/fs-io.d.ts +18 -0
  106. package/dist/types/ultramodern-workspace/generation-result.d.ts +14 -0
  107. package/dist/types/ultramodern-workspace/index.d.ts +4 -0
  108. package/dist/types/ultramodern-workspace/locales.d.ts +183 -0
  109. package/dist/types/ultramodern-workspace/module-federation.d.ts +16 -0
  110. package/dist/types/ultramodern-workspace/naming.d.ts +16 -0
  111. package/dist/types/ultramodern-workspace/overlays.d.ts +6 -0
  112. package/dist/types/ultramodern-workspace/package-json.d.ts +12 -0
  113. package/dist/types/ultramodern-workspace/package-source.d.ts +2 -0
  114. package/dist/types/ultramodern-workspace/policy.d.ts +60 -0
  115. package/dist/types/ultramodern-workspace/public-api.d.ts +3 -0
  116. package/dist/types/ultramodern-workspace/public-surface.d.ts +37 -0
  117. package/dist/types/ultramodern-workspace/routes.d.ts +25 -0
  118. package/dist/types/ultramodern-workspace/types.d.ts +197 -0
  119. package/dist/types/ultramodern-workspace/versions.d.ts +40 -0
  120. package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +10 -0
  121. package/dist/types/ultramodern-workspace/write-workspace.d.ts +4 -0
  122. package/package.json +58 -15
  123. package/template-workspace/.agents/agent-reference-repos.json +24 -0
  124. package/template-workspace/.agents/rstackjs-agent-skills-LICENSE +21 -0
  125. package/template-workspace/.agents/skills/rsbuild-best-practices/SKILL.md +57 -0
  126. package/template-workspace/.agents/skills/rsdoctor-analysis/SKILL.md +96 -0
  127. package/template-workspace/.agents/skills/rsdoctor-analysis/references/command-map.md +113 -0
  128. package/template-workspace/.agents/skills/rsdoctor-analysis/references/common-analysis-patterns.md +190 -0
  129. package/template-workspace/.agents/skills/rsdoctor-analysis/references/install-rsdoctor-common.md +88 -0
  130. package/template-workspace/.agents/skills/rsdoctor-analysis/references/install-rsdoctor-rspack.md +138 -0
  131. package/template-workspace/.agents/skills/rsdoctor-analysis/references/install-rsdoctor-webpack.md +71 -0
  132. package/template-workspace/.agents/skills/rsdoctor-analysis/references/install-rsdoctor.md +39 -0
  133. package/template-workspace/.agents/skills/rsdoctor-analysis/references/rsdoctor-data-types.md +103 -0
  134. package/template-workspace/.agents/skills/rslib-best-practices/SKILL.md +58 -0
  135. package/template-workspace/.agents/skills/rslib-modern-package/SKILL.md +173 -0
  136. package/template-workspace/.agents/skills/rspack-best-practices/SKILL.md +70 -0
  137. package/template-workspace/.agents/skills/rspack-tracing/SKILL.md +75 -0
  138. package/template-workspace/.agents/skills/rspack-tracing/references/bottlenecks.md +47 -0
  139. package/template-workspace/.agents/skills/rspack-tracing/references/tracing-guide.md +38 -0
  140. package/template-workspace/.agents/skills/rspack-tracing/scripts/analyze_trace.js +184 -0
  141. package/template-workspace/.agents/skills/rstest-best-practices/SKILL.md +133 -0
  142. package/template-workspace/.agents/skills-lock.json +114 -0
  143. package/template-workspace/.codex/hooks.json +16 -0
  144. package/template-workspace/.github/renovate.json +29 -0
  145. package/template-workspace/.github/workflows/ultramodern-workspace-gates.yml.handlebars +67 -0
  146. package/template-workspace/.gitignore.handlebars +5 -0
  147. package/template-workspace/.mise.toml.handlebars +3 -0
  148. package/template-workspace/{AGENTS.md → AGENTS.md.handlebars} +20 -9
  149. package/template-workspace/README.md.handlebars +85 -14
  150. package/template-workspace/lefthook.yml +18 -4
  151. package/template-workspace/pnpm-workspace.yaml.handlebars +45 -0
  152. package/template-workspace/scripts/bootstrap-agent-skills.mjs +69 -75
  153. package/template-workspace/scripts/setup-agent-reference-repos.mjs +8 -6
  154. package/templates/app/shell-frame.tsx +49 -0
  155. package/templates/app/ultramodern-route-head.tsx.handlebars +142 -0
  156. package/templates/packages/shared-contracts-index.ts +466 -0
  157. package/templates/workspace-scripts/assert-mf-types.mjs.handlebars +69 -0
  158. package/templates/workspace-scripts/check-ultramodern-i18n-boundaries.mjs +9 -0
  159. package/templates/workspace-scripts/generate-public-surface-assets.mjs +529 -0
  160. package/templates/workspace-scripts/proof-cloudflare-version.mjs +125 -0
  161. package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +851 -0
  162. package/templates/workspace-scripts/ultramodern-performance-readiness.config.mjs +7 -0
  163. package/templates/workspace-scripts/ultramodern-performance-readiness.mjs +223 -0
  164. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +986 -0
  165. package/dist/index.js +0 -6625
  166. package/dist/types/ultramodern-workspace.d.ts +0 -31
  167. package/template/AGENTS.md +0 -23
  168. package/template/README.md +0 -105
  169. package/template/api/effect/index.ts.handlebars +0 -34
  170. package/template/api/lambda/hello.ts.handlebars +0 -6
  171. package/template/config/public/locales/cs/translation.json +0 -39
  172. package/template/config/public/locales/en/translation.json +0 -39
  173. package/template/lefthook.yml +0 -10
  174. package/template/modern.config.ts.handlebars +0 -71
  175. package/template/oxfmt.config.ts +0 -15
  176. package/template/oxlint.config.ts +0 -19
  177. package/template/package.json.handlebars +0 -66
  178. package/template/pnpm-workspace.yaml +0 -29
  179. package/template/postcss.config.mjs.handlebars +0 -6
  180. package/template/rstest.config.mts +0 -5
  181. package/template/scripts/bootstrap-agent-skills.mjs +0 -228
  182. package/template/scripts/check-i18n-strings.mjs +0 -94
  183. package/template/scripts/validate-ultramodern.mjs.handlebars +0 -538
  184. package/template/shared/effect/api.ts.handlebars +0 -17
  185. package/template/src/modern-app-env.d.ts +0 -3
  186. package/template/src/modern.runtime.ts.handlebars +0 -23
  187. package/template/src/routes/[lang]/page.tsx.handlebars +0 -211
  188. package/template/src/routes/index.css.handlebars +0 -129
  189. package/template/src/routes/layout.tsx.handlebars +0 -10
  190. package/template/tailwind.config.ts.handlebars +0 -10
  191. package/template/tests/tsconfig.json +0 -7
  192. package/template/tests/ultramodern.contract.test.ts.handlebars +0 -78
  193. package/template/tsconfig.json +0 -120
  194. package/template-workspace/pnpm-workspace.yaml +0 -35
@@ -1,31 +0,0 @@
1
- type UltramodernPackageSourceStrategy = 'workspace' | 'install';
2
- export type UltramodernWorkspaceOptions = {
3
- targetDir: string;
4
- packageName: string;
5
- modernVersion: string;
6
- enableTailwind?: boolean;
7
- packageSource?: {
8
- strategy?: UltramodernPackageSourceStrategy;
9
- modernPackageVersion?: string;
10
- registry?: string;
11
- aliasScope?: string;
12
- aliasPackageNamePrefix?: string;
13
- };
14
- };
15
- export type AddUltramodernVerticalOptions = {
16
- workspaceRoot: string;
17
- name: string;
18
- modernVersion: string;
19
- enableTailwind?: boolean;
20
- packageSource?: UltramodernWorkspaceOptions['packageSource'];
21
- };
22
- export declare const ULTRAMODERN_WORKSPACE_FLAG = "--ultramodern-workspace";
23
- export declare function addUltramodernVertical(options: AddUltramodernVerticalOptions): void;
24
- export declare function generateUltramodernWorkspace(options: UltramodernWorkspaceOptions): void;
25
- export declare const ultramodernWorkspaceVersions: {
26
- tanstackRouter: string;
27
- moduleFederation: string;
28
- tailwind: string;
29
- tailwindPostcss: string;
30
- };
31
- export {};
@@ -1,23 +0,0 @@
1
- # UltraModern Agent Contract
2
-
3
- This project is generated for Codex-first UltraModern.js work.
4
-
5
- ## Quality Gates
6
-
7
- - `pnpm lint` runs Oxlint with the Ultracite preset.
8
- - `pnpm format` runs oxfmt.
9
- - `pnpm typecheck` runs effect-tsgo as the TypeScript checker.
10
- - `pnpm i18n:check` rejects hardcoded user-visible JSX text.
11
- - `pnpm ultramodern:check` verifies the generated contract.
12
- - Generated Codex stop hooks and subagent-stop hooks run `pnpm format && pnpm lint:fix && pnpm ultramodern:check`.
13
- - `postinstall` formats the generated tree, installs private orchestration skills when available, initializes a Git repository when needed, and installs `lefthook`. Generated `lefthook.yml` runs `pnpm format && pnpm lint:fix && pnpm ultramodern:check` on pre-commit; pre-push runs `pnpm ultramodern:check`.
14
-
15
- ## Internationalization
16
-
17
- Runtime i18n is enabled by default. Agents must put user-visible UI copy in `config/public/locales/<lang>/translation.json` and render it through `react-i18next` or `@modern-js/plugin-i18n/runtime`. Do not add hardcoded JSX text, `aria-label`, `title`, `alt`, or `placeholder` strings unless the value is a non-translatable technical token.
18
-
19
- Routes are locale-prefixed by default through `localePathRedirect: true`. Keep localized pages under `src/routes/[lang]`, use links for language switching, and preserve canonical plus `hreflang` metadata. Production builds fail unless `MODERN_PUBLIC_SITE_URL` is set, so deployed canonical URLs always use the production origin.
20
-
21
- ## Private Skills
22
-
23
- Private orchestration skills are installed automatically during `pnpm install` when the current developer is authorized for `TechsioCZ/skills`. The installer clones that private repository and copies only the allowlisted skills from `.agents/skills-lock.json`; unauthorized developers get a warning and can continue with the public contract.
@@ -1,105 +0,0 @@
1
- # UltraModern.js 3.0 Starter
2
-
3
- This generated app is a simple UltraModern.js starting point. It gives one app
4
- with localized routes, production URL metadata, optional BFF support, Rstest,
5
- Oxlint, oxfmt, and a local contract check. You can build a useful product here
6
- without deleting fake product areas, shell packages, or deployment topology.
7
-
8
- ## Setup
9
-
10
- Install the dependencies:
11
-
12
- ```bash
13
- mise install
14
- pnpm install
15
- ```
16
-
17
- ## Get Started
18
-
19
- Start the dev server:
20
-
21
- ```bash
22
- pnpm dev
23
- ```
24
-
25
- Build the app for production:
26
-
27
- ```bash
28
- MODERN_PUBLIC_SITE_URL=https://example.com pnpm build
29
- ```
30
-
31
- Preview the production build locally:
32
-
33
- ```bash
34
- pnpm serve
35
- ```
36
-
37
- Run the local gates before treating the scaffold as ready:
38
-
39
- ```bash
40
- pnpm run ultramodern:check
41
- MODERN_PUBLIC_SITE_URL=https://example.com pnpm run build
42
- ```
43
-
44
- ## What You Get
45
-
46
- The default app is intentionally monolith-friendly:
47
-
48
- | Area | Starting Point |
49
- | --- | --- |
50
- | App routes | Locale-prefixed pages under `src/routes/[lang]` |
51
- | Copy | English and Czech resources in `config/public/locales` |
52
- | Styling | App-local CSS, with Tailwind files only when selected |
53
- | Server logic | Optional BFF entrypoints under `api/` |
54
- | Tests | Rstest smoke coverage in `tests/` |
55
- | Agent workflow | Generated `AGENTS.md`, hooks, and local quality gates |
56
-
57
- Keep feature code in the app while one team owns the workflow, release train,
58
- and operational behavior. Add ordinary workspace packages for shared tokens,
59
- small UI primitives, generated clients, or domain-neutral utilities when that
60
- keeps the app easier to understand.
61
-
62
- ## Customize The App
63
-
64
- Start with the generated page and replace the placeholder cards with your first
65
- real routes, actions, and API calls. Put user-visible text in
66
- `config/public/locales/<lang>/translation.json`, then render it through
67
- `react-i18next` or `@modern-js/plugin-i18n/runtime`.
68
-
69
- Tune the preset in `modern.config.ts`. Production builds require
70
- `MODERN_PUBLIC_SITE_URL` so canonical and `hreflang` URLs use your deployed
71
- origin. The local fallback is `http://localhost:8080`.
72
-
73
- The generated preset defaults are opt-out. Disable specific contracts via env
74
- vars when your app needs a softer lane:
75
-
76
- ```bash
77
- MODERN_BASELINE_ENABLE_MF_SSR=false
78
- MODERN_BASELINE_ENABLE_BFF_REQUEST_ID=false
79
- MODERN_BASELINE_ENABLE_TELEMETRY_EXPORTERS=false
80
- ```
81
-
82
- ## Grow When Needed
83
-
84
- Stay in the single app until a boundary has a real owner and operational reason
85
- to split. A separate package is usually enough when you only need reusable code.
86
- Consider a larger workspace boundary later when a feature needs independent
87
- ownership, rollout, rollback, incident routing, or deployment evidence.
88
-
89
- The public opinionated entrypoint is `presetUltramodern(...)`. It keeps Effect,
90
- TanStack, SSR, BFF, i18n, and quality gates available without requiring a
91
- distributed app layout on day one.
92
-
93
- ## Generated Automation
94
-
95
- The generated starter includes `.github/workflows/ultramodern-gates.yml` and
96
- `.github/renovate.json` for full app projects. The workflow runs
97
- `pnpm run ultramodern:check` and `pnpm run build` on every push and pull request
98
- with read-only permissions, commit-pinned actions, frozen installs, and
99
- StepSecurity audit-mode runner hardening. Renovate is configured for dependency
100
- dashboard review, one-day release age, grouped updates, action digest pinning,
101
- and manual approval for major upgrades.
102
-
103
- For more information, see the
104
- [UltraModern.js guide](https://bleedingdev.github.io/ultramodern.js/guides/get-started/ultramodern.html)
105
- and the [UltraModern.js documentation](https://bleedingdev.github.io/ultramodern.js/).
@@ -1,34 +0,0 @@
1
- {{#if useEffectBff}}import {
2
- Effect,
3
- HttpApiBuilder,
4
- Layer,
5
- defineEffectBff,
6
- } from '@modern-js/plugin-bff/effect-server';
7
- import type { HttpApi, HttpApiGroup } from '@modern-js/plugin-bff/effect-server';
8
- import { bffEffectApi } from '../../shared/effect/api';
9
-
10
- type ApiGroups<TApi> = TApi extends HttpApi.HttpApi<string, infer TGroups> ? TGroups : never;
11
- type GreetingsHandlers = HttpApiBuilder.Handlers.FromGroup<
12
- HttpApiGroup.WithName<ApiGroups<typeof bffEffectApi>, 'greetings'>
13
- >;
14
-
15
- const greetingsLayer = HttpApiBuilder.group(
16
- bffEffectApi,
17
- 'greetings',
18
- (handlers: GreetingsHandlers) =>
19
- handlers.handle('hello', () =>
20
- Effect.succeed({
21
- message: 'Hello from Effect HttpApi',
22
- runtime: 'effect' as const,
23
- }),
24
- ),
25
- );
26
-
27
- const layer = HttpApiBuilder.layer(bffEffectApi).pipe(
28
- Layer.provide(greetingsLayer),
29
- );
30
-
31
- export default defineEffectBff({
32
- api: bffEffectApi,
33
- layer,
34
- });{{/if}}
@@ -1,6 +0,0 @@
1
- {{#if useHonoBff}}export default async () => {
2
- return {
3
- message: 'Hello from UltraModern.js BFF ({{bffRuntime}})',
4
- };
5
- };
6
- {{/if}}
@@ -1,39 +0,0 @@
1
- {
2
- "home": {
3
- "bff": {
4
- "response": "Odpoved Effect HttpApi:"
5
- },
6
- "cards": {
7
- "bff": {
8
- "body": "Pridej serverovou logiku, kdyz route potrebuje typovana data nebo mutace.",
9
- "title": "BFF + Effect"
10
- },
11
- "config": {
12
- "body": "Upravuj vychozi hodnoty v modern.config.ts podle rustu aplikace.",
13
- "title": "Konfigurace presetUltramodern"
14
- },
15
- "gates": {
16
- "body": "Pred releasem spust ultramodern:check, testy, typecheck, lint a build.",
17
- "title": "Ultramodern kontroly"
18
- },
19
- "guide": {
20
- "body": "Zacni jednou aplikaci a pridej routy, API nebo balicky az kdyz pomuzou.",
21
- "title": "UltraModern.js pruvodce"
22
- }
23
- },
24
- "description": {
25
- "afterConfig": "podle rustu aplikace a udrzuj",
26
- "afterPreset": "profilem. Lad",
27
- "end": "zelene pri pridavani rout, API a workspace balicku.",
28
- "intro": "Zacni s verejnym"
29
- },
30
- "language": {
31
- "cs": "Cestina",
32
- "en": "Anglictina",
33
- "switcher": "Jazyk"
34
- },
35
- "logoAlt": "Logo UltraModern.js",
36
- "name": "Jednoduchy starter aplikace",
37
- "title": "UltraModern.js Starter"
38
- }
39
- }
@@ -1,39 +0,0 @@
1
- {
2
- "home": {
3
- "bff": {
4
- "response": "Effect HttpApi response:"
5
- },
6
- "cards": {
7
- "bff": {
8
- "body": "Add server logic when a route needs typed data or mutation handling.",
9
- "title": "BFF + Effect"
10
- },
11
- "config": {
12
- "body": "Tune generated defaults in modern.config.ts as the app grows.",
13
- "title": "Configure presetUltramodern"
14
- },
15
- "gates": {
16
- "body": "Run ultramodern:check, tests, typecheck, lint, and build before release.",
17
- "title": "Ultramodern Gates"
18
- },
19
- "guide": {
20
- "body": "Start with one app, then add routes, APIs, and packages when they help.",
21
- "title": "UltraModern.js Guide"
22
- }
23
- },
24
- "description": {
25
- "afterConfig": "as the app grows, and keep",
26
- "afterPreset": "profile. Tune",
27
- "end": "green while you add routes, APIs, and workspace packages.",
28
- "intro": "Start from the public"
29
- },
30
- "language": {
31
- "cs": "Czech",
32
- "en": "English",
33
- "switcher": "Language"
34
- },
35
- "logoAlt": "UltraModern.js Logo",
36
- "name": "Simple app starter",
37
- "title": "UltraModern.js Starter"
38
- }
39
- }
@@ -1,10 +0,0 @@
1
- pre-commit:
2
- commands:
3
- fix-and-check:
4
- run: pnpm format && pnpm lint:fix && pnpm ultramodern:check
5
- stage_fixed: true
6
-
7
- pre-push:
8
- commands:
9
- check:
10
- run: pnpm ultramodern:check
@@ -1,71 +0,0 @@
1
- // @effect-diagnostics nodeBuiltinImport:off processEnv:off
2
- import { appTools, defineConfig, presetUltramodern } from '@modern-js/app-tools';
3
- import path from 'node:path';
4
- {{#if enableBff}}import { bffPlugin } from '@modern-js/plugin-bff';
5
- {{/if}}import { i18nPlugin } from '@modern-js/plugin-i18n';
6
- {{#if isTanstackRouter}}import { tanstackRouterPlugin } from '@modern-js/plugin-tanstack';
7
- {{/if}}
8
- const appId = process.env['MODERN_BASELINE_APP_ID'] || path.basename(process.cwd());
9
- const enableModuleFederationSSR = process.env['MODERN_BASELINE_ENABLE_MF_SSR'] !== 'false';
10
- const enableBffRequestId = process.env['MODERN_BASELINE_ENABLE_BFF_REQUEST_ID'] !== 'false';
11
- const enableTelemetryExporters =
12
- process.env['MODERN_BASELINE_ENABLE_TELEMETRY_EXPORTERS'] !== 'false';
13
- const telemetryFailLoudStartup = process.env['MODERN_TELEMETRY_FAIL_LOUD_STARTUP'] !== 'false';
14
- const otlpEndpoint = process.env['MODERN_TELEMETRY_OTLP_ENDPOINT'];
15
- const configuredSiteUrl = process.env['MODERN_PUBLIC_SITE_URL'];
16
- const hasConfiguredSiteUrl = typeof configuredSiteUrl === 'string' && configuredSiteUrl.length > 0;
17
- const isProductionBuild =
18
- process.env['NODE_ENV'] === 'production' || process.argv.includes('build');
19
-
20
- if (isProductionBuild && !hasConfiguredSiteUrl) {
21
- throw new Error(
22
- 'MODERN_PUBLIC_SITE_URL must be set for production builds so canonical and hreflang URLs use the deployed origin.',
23
- );
24
- }
25
-
26
- const siteUrl = hasConfiguredSiteUrl ? configuredSiteUrl : 'http://localhost:8080';
27
- const victoriaMetricsEndpoint = process.env['MODERN_TELEMETRY_VICTORIA_ENDPOINT'];
28
-
29
- // https://bleedingdev.github.io/ultramodern.js/configure/app/usage.html
30
- export default defineConfig(
31
- presetUltramodern(
32
- {
33
- {{#if enableBff}} bff: {
34
- {{#if useEffectBff}} effect: {
35
- openapi: true,
36
- },
37
-
38
- {{/if}} runtimeFramework: '{{bffRuntime}}',
39
- },
40
-
41
- {{/if}} plugins: [
42
- appTools(),
43
- i18nPlugin({
44
- localeDetection: {
45
- fallbackLanguage: 'en',
46
- languages: ['en', 'cs'],
47
- localePathRedirect: true,
48
- },
49
- }),
50
- {{#if isTanstackRouter}}
51
- tanstackRouterPlugin(),
52
- {{/if}}{{#if enableBff}}
53
- bffPlugin(),
54
- {{/if}} ],
55
- source: {
56
- globalVars: {
57
- ULTRAMODERN_SITE_URL: siteUrl,
58
- },
59
- },
60
- },
61
- {
62
- appId,
63
- enableBffRequestId,
64
- enableModuleFederationSSR,
65
- enableTelemetryExporters,
66
- telemetryFailLoudStartup,
67
- ...(typeof otlpEndpoint === 'string' ? { otlpEndpoint } : {}),
68
- ...(typeof victoriaMetricsEndpoint === 'string' ? { victoriaMetricsEndpoint } : {}),
69
- },
70
- ),
71
- );
@@ -1,15 +0,0 @@
1
- import { defineConfig } from 'oxfmt';
2
- import ultracite from 'ultracite/oxfmt';
3
-
4
- export default defineConfig({
5
- extends: [ultracite],
6
- ignorePatterns: [
7
- '.agents',
8
- 'dist',
9
- 'node_modules',
10
- '.modern',
11
- '.modernjs',
12
- '**/routeTree.gen.ts',
13
- ],
14
- singleQuote: true,
15
- });
@@ -1,19 +0,0 @@
1
- import { defineConfig } from 'oxlint';
2
- import core from 'ultracite/oxlint/core';
3
- import react from 'ultracite/oxlint/react';
4
-
5
- export default defineConfig({
6
- env: {
7
- browser: true,
8
- node: true,
9
- },
10
- extends: [core, react],
11
- ignorePatterns: [
12
- '.agents',
13
- 'dist',
14
- 'node_modules',
15
- '.modern',
16
- '.modernjs',
17
- '**/routeTree.gen.ts',
18
- ],
19
- });
@@ -1,66 +0,0 @@
1
- {
2
- "name": "{{packageName}}",
3
- "version": "0.1.0",
4
- "private": true,
5
- "type": "module",
6
- "packageManager": "pnpm@{{pnpmVersion}}",
7
- "scripts": {
8
- "reset": "npx rimraf node_modules ./**/node_modules",
9
- "dev": "modern dev",
10
- "build": "modern build",
11
- "serve": "modern serve",
12
- "test": "rstest run",
13
- "typecheck": "node -e \"const fs = require('node:fs'); const { execFileSync, spawnSync } = require('node:child_process'); const bin = execFileSync('effect-tsgo', ['get-exe-path'], { encoding: 'utf8' }).trim(); if (process.platform !== 'win32') fs.chmodSync(bin, 0o755); const result = spawnSync(bin, ['--noEmit', '-p', 'tsconfig.json'], { stdio: 'inherit' }); process.exit(result.status ?? 1);\"",
14
- "i18n:check": "node ./scripts/check-i18n-strings.mjs",
15
- {{#unless isSubproject}}
16
- "skills:install": "node ./scripts/bootstrap-agent-skills.mjs",
17
- "skills:check": "node ./scripts/bootstrap-agent-skills.mjs --check",
18
- "postinstall": "oxfmt . && node ./scripts/bootstrap-agent-skills.mjs",
19
- {{/unless}}
20
- "ultramodern:check": "{{#unless isSubproject}}pnpm format:check && pnpm lint && {{/unless}}pnpm typecheck && pnpm i18n:check && pnpm test{{#unless isSubproject}} && pnpm skills:check{{/unless}} && node ./scripts/validate-ultramodern.mjs"{{#unless isSubproject}},
21
- "format": "oxfmt .",
22
- "format:check": "oxfmt --check .",
23
- "lint": "oxlint .",
24
- "lint:fix": "oxlint . --fix"{{/unless}}
25
- },
26
- "dependencies": {
27
- "@modern-js/plugin-i18n": "{{pluginI18nVersion}}",
28
- {{#if isTanstackRouter}} "@modern-js/plugin-tanstack": "{{pluginTanstackVersion}}",
29
- {{/if}}
30
- "@modern-js/runtime": "{{runtimeVersion}}",
31
- {{#if isTanstackRouter}} "@tanstack/react-router": "{{tanstackRouterVersion}}",
32
- {{/if}}
33
- "i18next": "26.2.0",
34
- "react": "^19.2.6",
35
- "react-dom": "^19.2.6",
36
- "react-i18next": "17.0.8"
37
- },
38
- "devDependencies": {
39
- "@effect/tsgo": "0.13.0",
40
- "@modern-js/adapter-rstest": "{{adapterRstestVersion}}",
41
- "@modern-js/app-tools": "{{appToolsVersion}}",
42
- {{#if enableBff}} "@modern-js/plugin-bff": "{{pluginBffVersion}}",
43
- {{/if}} "@modern-js/tsconfig": "{{tsconfigVersion}}",
44
- "@rstest/core": "0.10.3",
45
- {{#if enableTailwind}}
46
- "@tailwindcss/postcss": "^{{tailwindPostcssVersion}}",
47
- {{/if}}
48
- "@types/node": "^20",
49
- "@types/react": "^19.1.8",
50
- "@types/react-dom": "^19.1.6",
51
- "@typescript/native-preview": "7.0.0-dev.20260527.2",
52
- "happy-dom": "^20.9.0",
53
- {{#unless isSubproject}}
54
- "lefthook": "^2.1.9",
55
- "oxfmt": "0.51.0",
56
- "oxlint": "1.66.0",
57
- {{/unless}}{{#if enableTailwind}} "postcss": "^8.5.6",
58
- {{/if}} "rimraf": "^6.1.3"{{#if enableTailwind}},
59
- "tailwindcss": "^{{tailwindVersion}}"{{/if}}{{#unless isSubproject}},
60
- "ultracite": "7.7.0"{{/unless}}
61
- },
62
- "engines": {
63
- "node": ">=20",
64
- "pnpm": ">={{pnpmVersion}} <11.6.0"
65
- }
66
- }
@@ -1,29 +0,0 @@
1
- minimumReleaseAge: 1440
2
- minimumReleaseAgeStrict: true
3
- minimumReleaseAgeIgnoreMissingTime: false
4
- minimumReleaseAgeExclude:
5
- - '@bleedingdev/modern-js-*'
6
- trustPolicy: no-downgrade
7
- trustPolicyIgnoreAfter: 1440
8
- blockExoticSubdeps: true
9
- engineStrict: true
10
- pmOnFail: error
11
- verifyDepsBeforeRun: error
12
- strictDepBuilds: true
13
-
14
- allowBuilds:
15
- '@swc/core': true
16
- core-js: true
17
- esbuild: true
18
- lefthook: true
19
- msgpackr-extract: true
20
- sharp: true
21
- workerd: true
22
- onlyBuiltDependencies:
23
- - '@swc/core'
24
- - core-js
25
- - esbuild
26
- - lefthook
27
- - msgpackr-extract
28
- - sharp
29
- - workerd
@@ -1,6 +0,0 @@
1
- {{#if enableTailwind}}export default {
2
- plugins: {
3
- '@tailwindcss/postcss': {},
4
- },
5
- };
6
- {{/if}}
@@ -1,5 +0,0 @@
1
- import { defineConfig } from '@rstest/core';
2
-
3
- export default defineConfig({
4
- testEnvironment: 'node',
5
- });