create-koppajs 1.2.1 → 1.2.3
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.
- package/CHANGELOG.md +55 -0
- package/README.md +116 -21
- package/bin/create-koppajs.js +10 -16
- package/package.json +10 -7
- package/template/README.md +19 -209
- package/template/_gitignore +0 -3
- package/template/index.html +1 -1
- package/template/package.json +9 -46
- package/template/public/favicon.png +0 -0
- package/template/public/koppajs-logo.png +0 -0
- package/template/src/app-view.kpa +1 -3
- package/template/tsconfig.json +2 -9
- package/template/vite.config.mjs +0 -35
- package/template-overlays/router/README.md +25 -203
- package/template-overlays/router/index.html +1 -1
- package/template-overlays/router/package.json +10 -47
- package/template-overlays/router/src/app-view.kpa +21 -78
- package/template-overlays/router/src/home-page.kpa +23 -60
- package/template-overlays/router/src/main.ts +0 -9
- package/template-overlays/router/src/not-found-page.kpa +16 -48
- package/template-overlays/router/src/router-page.kpa +34 -69
- package/template-overlays/router/src/style.css +5 -29
- package/template/AI_CONSTITUTION.md +0 -50
- package/template/ARCHITECTURE.md +0 -86
- package/template/CHANGELOG.md +0 -34
- package/template/CONTRIBUTING.md +0 -92
- package/template/DECISION_HIERARCHY.md +0 -32
- package/template/DEVELOPMENT_RULES.md +0 -57
- package/template/LICENSE +0 -201
- package/template/RELEASE.md +0 -230
- package/template/ROADMAP.md +0 -34
- package/template/TESTING_STRATEGY.md +0 -93
- package/template/_editorconfig +0 -12
- package/template/_github/instructions/ai-workflow.md +0 -33
- package/template/_github/workflows/ci.yml +0 -38
- package/template/_github/workflows/release.yml +0 -58
- package/template/_husky/commit-msg +0 -8
- package/template/_husky/pre-commit +0 -1
- package/template/_prettierignore +0 -7
- package/template/commitlint.config.mjs +0 -6
- package/template/docs/adr/0001-keep-the-starter-minimal.md +0 -32
- package/template/docs/adr/0002-adopt-a-living-meta-layer.md +0 -30
- package/template/docs/adr/0003-normalize-kpa-plugin-output.md +0 -24
- package/template/docs/adr/0004-adopt-an-automated-quality-baseline.md +0 -31
- package/template/docs/adr/0005-adopt-a-tag-driven-release-baseline.md +0 -45
- package/template/docs/adr/0006-adopt-commit-message-conventions.md +0 -39
- package/template/docs/adr/README.md +0 -37
- package/template/docs/adr/TEMPLATE.md +0 -18
- package/template/docs/architecture/module-boundaries.md +0 -48
- package/template/docs/meta/maintenance.md +0 -40
- package/template/docs/quality/quality-gates.md +0 -39
- package/template/docs/specs/README.md +0 -36
- package/template/docs/specs/TEMPLATE.md +0 -34
- package/template/docs/specs/app-bootstrap.md +0 -46
- package/template/docs/specs/counter-component.md +0 -48
- package/template/docs/specs/quality-workflow.md +0 -62
- package/template/eslint.config.mjs +0 -54
- package/template/playwright.config.ts +0 -31
- package/template/pnpm-lock.yaml +0 -3777
- package/template/prettier.config.mjs +0 -6
- package/template/public/favicon.svg +0 -15
- package/template/tests/e2e/app.spec.ts +0 -18
- package/template/tests/integration/main-bootstrap.test.ts +0 -33
- package/template/tests/unit/normalize-kpa-module-export.test.ts +0 -46
- package/template/vite.config.d.mts +0 -7
- package/template/vitest.config.mjs +0 -19
- package/template-overlays/router/ARCHITECTURE.md +0 -86
- package/template-overlays/router/CHANGELOG.md +0 -44
- package/template-overlays/router/DEVELOPMENT_RULES.md +0 -57
- package/template-overlays/router/ROADMAP.md +0 -34
- package/template-overlays/router/TESTING_STRATEGY.md +0 -67
- package/template-overlays/router/docs/adr/0001-keep-the-starter-minimal.md +0 -32
- package/template-overlays/router/docs/architecture/module-boundaries.md +0 -39
- package/template-overlays/router/docs/meta/maintenance.md +0 -38
- package/template-overlays/router/docs/specs/README.md +0 -19
- package/template-overlays/router/docs/specs/app-bootstrap.md +0 -42
- package/template-overlays/router/docs/specs/router-navigation.md +0 -41
- package/template-overlays/router/pnpm-lock.yaml +0 -3786
- package/template-overlays/router/tests/e2e/app.spec.ts +0 -38
- package/template-overlays/router/tests/integration/main-bootstrap.test.ts +0 -150
package/CHANGELOG.md
CHANGED
|
@@ -16,6 +16,61 @@ _No unreleased changes yet._
|
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
+
## [1.2.3] — Lean Starter Maintenance
|
|
20
|
+
|
|
21
|
+
**2026-04-24**
|
|
22
|
+
|
|
23
|
+
Patch release to keep generated projects focused on runnable KoppaJS app code.
|
|
24
|
+
This is a maintainer-approved patch exception to the versioning policy because
|
|
25
|
+
the CLI invocation contract stays unchanged while the generated starter tree is
|
|
26
|
+
intentionally reduced.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- trimmed generated starters to app source, README, and Vite/TypeScript build
|
|
31
|
+
files
|
|
32
|
+
- switched generated starter views from the remote KoppaJS logo URL to a local
|
|
33
|
+
`public/koppajs-logo.png` asset
|
|
34
|
+
- switched generated starter favicon output from `public/favicon.svg` to
|
|
35
|
+
`public/favicon.png`
|
|
36
|
+
- stopped patching generated `CHANGELOG.md` and `RELEASE.md`; those files are
|
|
37
|
+
no longer included in new apps
|
|
38
|
+
- refreshed the compatible generated-starter toolchain to `vite@7.3.2` and
|
|
39
|
+
`@types/node@25.6.0` while keeping `typescript@5.9.3` within the current
|
|
40
|
+
`@koppajs/koppajs-vite-plugin` peer range
|
|
41
|
+
- raised repository and generated-starter pnpm metadata to `pnpm@10.33.2`,
|
|
42
|
+
with a declared minimum of `>=10.24.0`
|
|
43
|
+
- raised repository and generated-starter Node.js metadata to `>=22.12.0`
|
|
44
|
+
|
|
45
|
+
### Removed
|
|
46
|
+
|
|
47
|
+
- removed governance, ADR/spec docs, GitHub workflows, Husky hooks, commitlint,
|
|
48
|
+
lint-staged, release files, changelog files, license files, and starter
|
|
49
|
+
lockfiles from generated projects
|
|
50
|
+
- removed generated-starter lint, format, and test tooling, including ESLint,
|
|
51
|
+
Prettier, Vitest, Playwright, their configs, scripts, dependencies, and test
|
|
52
|
+
files
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## [1.2.2] — Node & Validation Baseline Alignment
|
|
57
|
+
|
|
58
|
+
**2026-03-27**
|
|
59
|
+
|
|
60
|
+
### Changed
|
|
61
|
+
|
|
62
|
+
- raised the repository and bundled starter minimum Node.js version to `>=22`
|
|
63
|
+
and expanded CI coverage to Node 24
|
|
64
|
+
- aligned CI and release validation around `pnpm validate`, added a packed-CLI
|
|
65
|
+
smoke test, and switched release automation to the maintainer default from
|
|
66
|
+
`.nvmrc`
|
|
67
|
+
- refreshed bundled starter dependencies to the current `@koppajs/koppajs-core`,
|
|
68
|
+
`@koppajs/koppajs-vite-plugin`, and `@koppajs/koppajs-router` baselines
|
|
69
|
+
- removed the obsolete starter-local `.kpa` export wrapper now that the Vite
|
|
70
|
+
plugin emits valid ES modules itself
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
19
74
|
## [1.2.1] — Starter Source Of Truth Cleanup
|
|
20
75
|
|
|
21
76
|
**2026-03-26**
|
package/README.md
CHANGED
|
@@ -1,9 +1,63 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
<a id="readme-top"></a>
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
<img src="https://public-assets-1b57ca06-687a-4142-a525-0635f7649a5c.s3.eu-central-1.amazonaws.com/koppajs/koppajs-logo-text-900x226.png" width="500" alt="KoppaJS Logo">
|
|
5
|
+
</div>
|
|
6
|
+
|
|
7
|
+
<br>
|
|
8
|
+
|
|
9
|
+
<div align="center">
|
|
10
|
+
<a href="https://www.npmjs.com/package/create-koppajs"><img src="https://img.shields.io/npm/v/create-koppajs?style=flat-square" alt="npm version"></a>
|
|
11
|
+
<a href="https://github.com/koppajs/create-koppajs/actions"><img src="https://img.shields.io/github/actions/workflow/status/koppajs/create-koppajs/ci.yml?branch=main&style=flat-square" alt="CI Status"></a>
|
|
12
|
+
<a href="./LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-blue?style=flat-square" alt="License"></a>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<br>
|
|
16
|
+
|
|
17
|
+
<div align="center">
|
|
18
|
+
<h1 align="center">create-koppajs</h1>
|
|
19
|
+
<h3 align="center">Official project scaffolder for KoppaJS</h3>
|
|
20
|
+
<p align="center">
|
|
21
|
+
<i>Generate a ready-to-run KoppaJS starter in one command.</i>
|
|
22
|
+
</p>
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
<br>
|
|
26
|
+
|
|
27
|
+
<div align="center">
|
|
28
|
+
<p align="center">
|
|
29
|
+
<a href="https://github.com/koppajs/koppajs-documentation">Documentation</a>
|
|
30
|
+
·
|
|
31
|
+
<a href="https://github.com/koppajs/koppajs-core">KoppaJS Core</a>
|
|
32
|
+
·
|
|
33
|
+
<a href="https://github.com/koppajs/koppajs-vite-plugin">Vite Plugin</a>
|
|
34
|
+
·
|
|
35
|
+
<a href="https://github.com/koppajs/koppajs-router">Router</a>
|
|
36
|
+
·
|
|
37
|
+
<a href="https://github.com/koppajs/create-koppajs/issues">Issues</a>
|
|
38
|
+
</p>
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<br>
|
|
42
|
+
|
|
43
|
+
<details>
|
|
44
|
+
<summary>Table of Contents</summary>
|
|
45
|
+
<ol>
|
|
46
|
+
<li><a href="#purpose">Purpose</a></li>
|
|
47
|
+
<li><a href="#repository-classification">Repository Classification</a></li>
|
|
48
|
+
<li><a href="#ownership-boundaries">Ownership Boundaries</a></li>
|
|
49
|
+
<li><a href="#public-contract">Public Contract</a></li>
|
|
50
|
+
<li><a href="#usage">Usage</a></li>
|
|
51
|
+
<li><a href="#requirements">Requirements</a></li>
|
|
52
|
+
<li><a href="#generated-starters">Generated Starters</a></li>
|
|
53
|
+
<li><a href="#ecosystem-fit">Ecosystem Fit</a></li>
|
|
54
|
+
<li><a href="#architecture-governance">Architecture & Governance</a></li>
|
|
55
|
+
<li><a href="#community-contribution">Community & Contribution</a></li>
|
|
56
|
+
<li><a href="#license">License</a></li>
|
|
57
|
+
</ol>
|
|
58
|
+
</details>
|
|
59
|
+
|
|
60
|
+
---
|
|
7
61
|
|
|
8
62
|
## Purpose
|
|
9
63
|
|
|
@@ -17,6 +71,8 @@ This repository exists to do one job well:
|
|
|
17
71
|
It is not a runtime package and it does not own application behavior after
|
|
18
72
|
generation.
|
|
19
73
|
|
|
74
|
+
---
|
|
75
|
+
|
|
20
76
|
## Repository Classification
|
|
21
77
|
|
|
22
78
|
- Repo type: CLI scaffolding package with a bundled starter family
|
|
@@ -27,6 +83,8 @@ generation.
|
|
|
27
83
|
- UI surface: none at the repository root; the generated starter owns the UI
|
|
28
84
|
- Maturity level: stable, contract-governed, maintenance-first
|
|
29
85
|
|
|
86
|
+
---
|
|
87
|
+
|
|
30
88
|
## Ownership Boundaries
|
|
31
89
|
|
|
32
90
|
- `bin/create-koppajs.js` owns argument parsing, prompting, validation, starter
|
|
@@ -45,6 +103,8 @@ The root package must not take on runtime concerns that belong in generated
|
|
|
45
103
|
applications, and generated applications must not depend on unpublished root
|
|
46
104
|
files after scaffold completion.
|
|
47
105
|
|
|
106
|
+
---
|
|
107
|
+
|
|
48
108
|
## Public Contract
|
|
49
109
|
|
|
50
110
|
The stable public contract of this repository is:
|
|
@@ -58,9 +118,8 @@ The stable public contract of this repository is:
|
|
|
58
118
|
target directories
|
|
59
119
|
- recursive copying of the bundled `template/` directory plus any selected
|
|
60
120
|
overlay
|
|
61
|
-
- restoration of publish-safe dotfiles
|
|
62
|
-
- patching of generated `package.json
|
|
63
|
-
`RELEASE.md`
|
|
121
|
+
- restoration of publish-safe dotfiles during copy
|
|
122
|
+
- patching of generated `package.json` and `README.md`
|
|
64
123
|
- the generated starter baselines defined by `template/` and
|
|
65
124
|
`template-overlays/`
|
|
66
125
|
- the npm package payload: `bin/`, `template/`, `template-overlays/`,
|
|
@@ -71,6 +130,8 @@ The governing specs for that contract are:
|
|
|
71
130
|
- [docs/specs/cli-scaffolding.md](./docs/specs/cli-scaffolding.md)
|
|
72
131
|
- [docs/specs/template-starter-contract.md](./docs/specs/template-starter-contract.md)
|
|
73
132
|
|
|
133
|
+
---
|
|
134
|
+
|
|
74
135
|
## Usage
|
|
75
136
|
|
|
76
137
|
Default starter:
|
|
@@ -107,11 +168,14 @@ pnpm install
|
|
|
107
168
|
pnpm dev
|
|
108
169
|
```
|
|
109
170
|
|
|
171
|
+
---
|
|
172
|
+
|
|
110
173
|
## Requirements
|
|
111
174
|
|
|
112
|
-
- for `create-koppajs`: Node.js `>=
|
|
113
|
-
- for generated starter projects:
|
|
114
|
-
|
|
175
|
+
- for `create-koppajs`: Node.js `>=22.12.0` and pnpm `>=10.24.0`
|
|
176
|
+
- for generated starter projects: Node.js `>=22.12.0` and pnpm `>=10.24.0`
|
|
177
|
+
|
|
178
|
+
---
|
|
115
179
|
|
|
116
180
|
## Generated Starters
|
|
117
181
|
|
|
@@ -124,15 +188,20 @@ The generated project includes one of two supported starters:
|
|
|
124
188
|
|
|
125
189
|
Every starter also includes:
|
|
126
190
|
|
|
127
|
-
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
191
|
+
- a focused README with setup, scripts, and project structure
|
|
192
|
+
|
|
193
|
+
The generated project intentionally excludes repository governance files,
|
|
194
|
+
release automation, GitHub workflows, Git hooks, changelog files, lockfiles,
|
|
195
|
+
and lint/format/test tooling. Those files belong to this scaffolder repository
|
|
196
|
+
or to project-specific app decisions, not to every new application created from
|
|
197
|
+
it.
|
|
131
198
|
|
|
132
199
|
The root repository treats those starters as versioned product surface, not
|
|
133
200
|
test data. `template/` plus the supported overlays are the only source of truth
|
|
134
201
|
for starter behavior.
|
|
135
202
|
|
|
203
|
+
---
|
|
204
|
+
|
|
136
205
|
## Ecosystem Fit
|
|
137
206
|
|
|
138
207
|
`create-koppajs` is the canonical entry point for starting a new KoppaJS
|
|
@@ -147,9 +216,11 @@ application. It complements:
|
|
|
147
216
|
The repository stays intentionally narrow so the CLI, starter contract, and
|
|
148
217
|
governance baseline can evolve together without hidden behavior.
|
|
149
218
|
|
|
150
|
-
|
|
219
|
+
---
|
|
151
220
|
|
|
152
|
-
|
|
221
|
+
## Architecture & Governance
|
|
222
|
+
|
|
223
|
+
Project intent, contributor rules, and documentation contracts live in the local repo meta layer:
|
|
153
224
|
|
|
154
225
|
- [AI_CONSTITUTION.md](./AI_CONSTITUTION.md)
|
|
155
226
|
- [ARCHITECTURE.md](./ARCHITECTURE.md)
|
|
@@ -158,12 +229,36 @@ The root meta layer defines how this repository changes:
|
|
|
158
229
|
- [TESTING_STRATEGY.md](./TESTING_STRATEGY.md)
|
|
159
230
|
- [RELEASE.md](./RELEASE.md)
|
|
160
231
|
- [ROADMAP.md](./ROADMAP.md)
|
|
161
|
-
- [
|
|
232
|
+
- [CHANGELOG.md](./CHANGELOG.md)
|
|
233
|
+
- [CONTRIBUTING.md](./CONTRIBUTING.md)
|
|
234
|
+
- [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md)
|
|
235
|
+
- [docs/specs/README.md](./docs/specs/README.md)
|
|
236
|
+
- [docs/specs/repository-documentation-contract.md](./docs/specs/repository-documentation-contract.md)
|
|
162
237
|
- [docs/architecture/README.md](./docs/architecture/README.md)
|
|
238
|
+
- [docs/meta/README.md](./docs/meta/README.md)
|
|
163
239
|
- [docs/quality/README.md](./docs/quality/README.md)
|
|
164
240
|
|
|
165
|
-
|
|
166
|
-
|
|
241
|
+
The file-shape contract for `README.md`, `CHANGELOG.md`, `CODE_OF_CONDUCT.md`, and `CONTRIBUTING.md` is defined in [docs/specs/repository-documentation-contract.md](./docs/specs/repository-documentation-contract.md).
|
|
242
|
+
|
|
243
|
+
Run the local document guard before committing:
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
pnpm run check:docs
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## Community & Contribution
|
|
252
|
+
|
|
253
|
+
Issues and pull requests are welcome:
|
|
254
|
+
|
|
255
|
+
https://github.com/koppajs/create-koppajs/issues
|
|
256
|
+
|
|
257
|
+
Contributor workflow details live in [CONTRIBUTING.md](./CONTRIBUTING.md).
|
|
258
|
+
|
|
259
|
+
Community expectations live in [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md).
|
|
260
|
+
|
|
261
|
+
---
|
|
167
262
|
|
|
168
263
|
## License
|
|
169
264
|
|
package/bin/create-koppajs.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, copyFileSync, statSync } from "node:fs";
|
|
3
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, copyFileSync, statSync, realpathSync } from "node:fs";
|
|
4
4
|
import { basename, join, dirname, resolve } from "node:path";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
import { createInterface } from "node:readline";
|
|
@@ -206,13 +206,9 @@ export function ensureTargetDir(targetPath) {
|
|
|
206
206
|
// npm excludes .gitignore from published packages — ship as _gitignore
|
|
207
207
|
// and rename during scaffolding (same approach as create-vite).
|
|
208
208
|
const RENAME_FILES = {
|
|
209
|
-
_editorconfig: ".editorconfig",
|
|
210
209
|
_gitattributes: ".gitattributes",
|
|
211
|
-
_github: ".github",
|
|
212
210
|
_gitignore: ".gitignore",
|
|
213
|
-
_husky: ".husky",
|
|
214
211
|
_npmrc: ".npmrc",
|
|
215
|
-
_prettierignore: ".prettierignore",
|
|
216
212
|
};
|
|
217
213
|
|
|
218
214
|
export function copyDirRecursive(src, dest) {
|
|
@@ -261,14 +257,6 @@ export function patchReadme(destDir, projectName) {
|
|
|
261
257
|
patchTextFile(destDir, "README.md", projectName);
|
|
262
258
|
}
|
|
263
259
|
|
|
264
|
-
export function patchChangelog(destDir, projectName) {
|
|
265
|
-
patchTextFile(destDir, "CHANGELOG.md", projectName);
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
export function patchReleaseNotes(destDir, projectName) {
|
|
269
|
-
patchTextFile(destDir, "RELEASE.md", projectName);
|
|
270
|
-
}
|
|
271
|
-
|
|
272
260
|
// ── Final output ────────────────────────────────────────────────────
|
|
273
261
|
|
|
274
262
|
export function printNextSteps(projectName) {
|
|
@@ -327,15 +315,21 @@ export async function runCli(
|
|
|
327
315
|
copyStarterTemplate(templateName, targetDir);
|
|
328
316
|
patchPackageJson(targetDir, projectName);
|
|
329
317
|
patchReadme(targetDir, projectName);
|
|
330
|
-
patchChangelog(targetDir, projectName);
|
|
331
|
-
patchReleaseNotes(targetDir, projectName);
|
|
332
318
|
printNextSteps(projectName);
|
|
333
319
|
|
|
334
320
|
return 0;
|
|
335
321
|
}
|
|
336
322
|
|
|
337
323
|
function isDirectExecution() {
|
|
338
|
-
|
|
324
|
+
if (!process.argv[1]) {
|
|
325
|
+
return false;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
try {
|
|
329
|
+
return realpathSync(process.argv[1]) === realpathSync(__filename);
|
|
330
|
+
} catch {
|
|
331
|
+
return resolve(process.argv[1]) === __filename;
|
|
332
|
+
}
|
|
339
333
|
}
|
|
340
334
|
|
|
341
335
|
if (isDirectExecution()) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-koppajs",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Scaffold a new KoppaJS project in seconds.",
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
"README.md",
|
|
16
16
|
"LICENSE"
|
|
17
17
|
],
|
|
18
|
-
"packageManager": "pnpm@10.
|
|
18
|
+
"packageManager": "pnpm@10.33.2",
|
|
19
19
|
"engines": {
|
|
20
|
-
"node": ">=
|
|
21
|
-
"pnpm": ">=10"
|
|
20
|
+
"node": ">=22.12.0",
|
|
21
|
+
"pnpm": ">=10.24.0"
|
|
22
22
|
},
|
|
23
23
|
"scripts": {
|
|
24
24
|
"check:meta": "node scripts/check-meta-layer.mjs",
|
|
@@ -29,12 +29,15 @@
|
|
|
29
29
|
"test:watch": "node scripts/run-unit-tests.mjs --watch",
|
|
30
30
|
"test:smoke": "node scripts/smoke-test.mjs",
|
|
31
31
|
"test:template-build": "node scripts/template-build-test.mjs",
|
|
32
|
+
"test:package": "node scripts/test-package-smoke.mjs",
|
|
32
33
|
"test": "npm run test:unit && npm run test:smoke",
|
|
33
34
|
"pack:dry-run": "npm pack --dry-run",
|
|
34
|
-
"check": "npm run check:meta && npm run lint && npm run format:check && npm run check:cli && npm test && npm run pack:dry-run",
|
|
35
|
-
"
|
|
35
|
+
"check": "pnpm run check:docs && npm run check:meta && npm run lint && npm run format:check && npm run check:cli && npm test && npm run pack:dry-run",
|
|
36
|
+
"validate": "pnpm run check && pnpm run test:template-build && pnpm run test:package",
|
|
37
|
+
"release:check": "pnpm run validate",
|
|
36
38
|
"prepare": "husky",
|
|
37
|
-
"clean": "node scripts/clean.mjs"
|
|
39
|
+
"clean": "node scripts/clean.mjs",
|
|
40
|
+
"check:docs": "node scripts/check-doc-contract.mjs"
|
|
38
41
|
},
|
|
39
42
|
"author": "Bastian Bensch",
|
|
40
43
|
"license": "Apache-2.0",
|
package/template/README.md
CHANGED
|
@@ -1,93 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
# __PROJECT_NAME__
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
<img src="https://public-assets-1b57ca06-687a-4142-a525-0635f7649a5c.s3.eu-central-1.amazonaws.com/koppajs/koppajs-logo-text-900x226.png" width="500" alt="KoppaJS Logo">
|
|
5
|
-
</div>
|
|
6
|
-
|
|
7
|
-
<br>
|
|
8
|
-
|
|
9
|
-
<div align="center">
|
|
10
|
-
<a href="./LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-blue?style=flat-square" alt="License"></a>
|
|
11
|
-
</div>
|
|
12
|
-
|
|
13
|
-
<br>
|
|
14
|
-
|
|
15
|
-
<div align="center">
|
|
16
|
-
<h1 align="center">__PROJECT_NAME__</h1>
|
|
17
|
-
<h3 align="center">KoppaJS starter project</h3>
|
|
18
|
-
<p align="center">
|
|
19
|
-
<i>Scaffolded from the current official KoppaJS starter baseline.</i>
|
|
20
|
-
</p>
|
|
21
|
-
</div>
|
|
22
|
-
|
|
23
|
-
<br>
|
|
24
|
-
|
|
25
|
-
<div align="center">
|
|
26
|
-
<p align="center">
|
|
27
|
-
<a href="https://github.com/koppajs/koppajs-documentation">Documentation</a>
|
|
28
|
-
·
|
|
29
|
-
<a href="https://github.com/koppajs/koppajs-core">KoppaJS Core</a>
|
|
30
|
-
·
|
|
31
|
-
<a href="https://github.com/koppajs/koppajs-vite-plugin">Vite Plugin</a>
|
|
32
|
-
</p>
|
|
33
|
-
</div>
|
|
34
|
-
|
|
35
|
-
<br>
|
|
36
|
-
|
|
37
|
-
<details>
|
|
38
|
-
<summary>Table of Contents</summary>
|
|
39
|
-
<ol>
|
|
40
|
-
<li><a href="#what-is-this">What is this?</a></li>
|
|
41
|
-
<li><a href="#requirements">Requirements</a></li>
|
|
42
|
-
<li><a href="#getting-started">Getting Started</a></li>
|
|
43
|
-
<li><a href="#quality-workflow">Quality Workflow</a></li>
|
|
44
|
-
<li><a href="#release-workflow">Release Workflow</a></li>
|
|
45
|
-
<li><a href="#project-structure">Project Structure</a></li>
|
|
46
|
-
<li><a href="#meta-layer">Meta Layer</a></li>
|
|
47
|
-
<li><a href="#community--contribution">Community & Contribution</a></li>
|
|
48
|
-
<li><a href="#license">License</a></li>
|
|
49
|
-
</ol>
|
|
50
|
-
</details>
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
## What is this?
|
|
55
|
-
|
|
56
|
-
This project was scaffolded from the current official minimal starter baseline
|
|
57
|
-
for KoppaJS.
|
|
58
|
-
|
|
59
|
-
It keeps the runtime intentionally small:
|
|
60
|
-
|
|
61
|
-
- one HTML shell
|
|
62
|
-
- one TypeScript bootstrap file
|
|
63
|
-
- one root view
|
|
64
|
-
- one stateful child component
|
|
65
|
-
|
|
66
|
-
It also carries a small quality baseline so the starter stays runnable and trustworthy:
|
|
67
|
-
|
|
68
|
-
- ESLint for source and tooling files
|
|
69
|
-
- Prettier plus `.editorconfig` for supported text formats
|
|
70
|
-
- Vitest for local unit and integration coverage
|
|
71
|
-
- Playwright for a real-browser smoke test
|
|
72
|
-
- Husky plus lint-staged for fast staged-file checks
|
|
73
|
-
- Conventional Commits enforcement via `commitlint`
|
|
74
|
-
- a tag-driven GitHub release baseline with `CHANGELOG.md` and `RELEASE.md`
|
|
75
|
-
|
|
76
|
-
Use it as a starting point for new KoppaJS projects or as a reference for how components are registered, composed, and validated.
|
|
77
|
-
|
|
78
|
-
> **Note:** This repository uses published npm packages, so it works as a standalone starter after `pnpm install`.
|
|
79
|
-
|
|
80
|
-
---
|
|
3
|
+
KoppaJS starter project scaffolded with `create-koppajs`.
|
|
81
4
|
|
|
82
5
|
## Requirements
|
|
83
6
|
|
|
84
|
-
- Node.js
|
|
85
|
-
- pnpm >= 10
|
|
86
|
-
|
|
87
|
-
Node 23 is intentionally not treated as supported here because the current
|
|
88
|
-
upstream frontend toolchain excludes it.
|
|
89
|
-
|
|
90
|
-
---
|
|
7
|
+
- Node.js >= 22.12.0
|
|
8
|
+
- pnpm >= 10.24.0
|
|
91
9
|
|
|
92
10
|
## Getting Started
|
|
93
11
|
|
|
@@ -96,146 +14,38 @@ pnpm install
|
|
|
96
14
|
pnpm dev
|
|
97
15
|
```
|
|
98
16
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
```bash
|
|
102
|
-
pnpm exec playwright install chromium
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
Useful commands:
|
|
17
|
+
## Scripts
|
|
106
18
|
|
|
107
19
|
```bash
|
|
108
|
-
pnpm lint
|
|
109
|
-
pnpm format:check
|
|
110
|
-
pnpm typecheck
|
|
111
|
-
pnpm test:run
|
|
112
|
-
pnpm test:coverage
|
|
113
20
|
pnpm build
|
|
21
|
+
pnpm typecheck
|
|
114
22
|
pnpm serve
|
|
115
|
-
pnpm release:check
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
Commit messages follow Conventional Commits, for example:
|
|
119
|
-
|
|
120
|
-
```text
|
|
121
|
-
feat: add release workflow
|
|
122
|
-
docs: update starter governance
|
|
123
|
-
fix: align counter button labels
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
## Quality Workflow
|
|
129
|
-
|
|
130
|
-
Fast local baseline:
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
pnpm check
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
Full validation, including Playwright:
|
|
137
|
-
|
|
138
|
-
```bash
|
|
139
|
-
pnpm validate
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
Standalone browser smoke test:
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
pnpm test:e2e
|
|
146
23
|
```
|
|
147
24
|
|
|
148
|
-
---
|
|
149
|
-
|
|
150
|
-
## Release Workflow
|
|
151
|
-
|
|
152
|
-
Tagged releases are documented in `CHANGELOG.md`.
|
|
153
|
-
The maintainer procedure lives in `RELEASE.md`.
|
|
154
|
-
|
|
155
|
-
Release tags must use the form `vX.Y.Z` and match `package.json`.
|
|
156
|
-
The included automation creates GitHub Releases only. If your project later
|
|
157
|
-
needs npm publishing or deployment-specific release steps, update `RELEASE.md`
|
|
158
|
-
and `.github/workflows/release.yml` together.
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
25
|
## Project Structure
|
|
163
26
|
|
|
164
27
|
```text
|
|
165
28
|
__PROJECT_NAME__/
|
|
166
|
-
├── .
|
|
167
|
-
├── .github/
|
|
29
|
+
├── .gitattributes
|
|
168
30
|
├── .gitignore
|
|
169
|
-
├── .husky/
|
|
170
31
|
├── .npmrc
|
|
171
|
-
├── .
|
|
172
|
-
├── CHANGELOG.md
|
|
173
|
-
├── commitlint.config.mjs
|
|
174
|
-
├── AI_CONSTITUTION.md
|
|
175
|
-
├── ARCHITECTURE.md
|
|
176
|
-
├── CONTRIBUTING.md
|
|
177
|
-
├── DECISION_HIERARCHY.md
|
|
178
|
-
├── DEVELOPMENT_RULES.md
|
|
179
|
-
├── RELEASE.md
|
|
180
|
-
├── ROADMAP.md
|
|
181
|
-
├── TESTING_STRATEGY.md
|
|
182
|
-
├── eslint.config.mjs
|
|
32
|
+
├── README.md
|
|
183
33
|
├── index.html
|
|
184
34
|
├── package.json
|
|
185
|
-
├── playwright.config.ts
|
|
186
|
-
├── pnpm-lock.yaml
|
|
187
|
-
├── prettier.config.mjs
|
|
188
35
|
├── tsconfig.json
|
|
189
36
|
├── vite.config.mjs
|
|
190
|
-
├── vitest.config.mjs
|
|
191
|
-
├── docs/
|
|
192
|
-
│ ├── adr/
|
|
193
|
-
│ ├── architecture/
|
|
194
|
-
│ ├── meta/
|
|
195
|
-
│ ├── quality/
|
|
196
|
-
│ └── specs/
|
|
197
37
|
├── public/
|
|
198
|
-
│
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
└──
|
|
205
|
-
├── e2e/
|
|
206
|
-
├── integration/
|
|
207
|
-
└── unit/
|
|
38
|
+
│ ├── favicon.png
|
|
39
|
+
│ └── koppajs-logo.png
|
|
40
|
+
└── src/
|
|
41
|
+
├── app-view.kpa
|
|
42
|
+
├── counter-component.kpa
|
|
43
|
+
├── main.ts
|
|
44
|
+
└── style.css
|
|
208
45
|
```
|
|
209
46
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
## Meta Layer
|
|
213
|
-
|
|
214
|
-
The repository includes an explicit meta layer so architecture, testing, and contributor rules evolve together with the codebase.
|
|
215
|
-
|
|
216
|
-
Start here:
|
|
217
|
-
|
|
218
|
-
- `DECISION_HIERARCHY.md`
|
|
219
|
-
- `AI_CONSTITUTION.md`
|
|
220
|
-
- `ARCHITECTURE.md`
|
|
221
|
-
- `DEVELOPMENT_RULES.md`
|
|
222
|
-
- `TESTING_STRATEGY.md`
|
|
223
|
-
- `CHANGELOG.md`
|
|
224
|
-
- `RELEASE.md`
|
|
225
|
-
- `docs/quality/quality-gates.md`
|
|
226
|
-
- `docs/adr/`
|
|
227
|
-
- `docs/specs/`
|
|
228
|
-
|
|
229
|
-
---
|
|
230
|
-
|
|
231
|
-
## Community & Contribution
|
|
232
|
-
|
|
233
|
-
Contribution workflow details live in `CONTRIBUTING.md`.
|
|
234
|
-
Update this section with your own repository links once the project has a
|
|
235
|
-
canonical home.
|
|
236
|
-
|
|
237
|
-
---
|
|
238
|
-
|
|
239
|
-
## License
|
|
47
|
+
## Useful Links
|
|
240
48
|
|
|
241
|
-
|
|
49
|
+
- [KoppaJS documentation](https://github.com/koppajs/koppajs-documentation)
|
|
50
|
+
- [KoppaJS core](https://github.com/koppajs/koppajs-core)
|
|
51
|
+
- [KoppaJS Vite plugin](https://github.com/koppajs/koppajs-vite-plugin)
|
package/template/_gitignore
CHANGED
package/template/index.html
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>KoppaJS Minimal Starter</title>
|
|
7
|
-
<link rel="icon" type="image/
|
|
7
|
+
<link rel="icon" type="image/png" href="/favicon.png" />
|
|
8
8
|
<link rel="stylesheet" href="/src/style.css" />
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|