create-koppajs 1.0.1 → 1.1.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.
- package/CHANGELOG.md +105 -0
- package/README.md +169 -131
- package/bin/create-koppajs.js +201 -175
- package/package.json +54 -34
- package/template/AI_CONSTITUTION.md +50 -0
- package/template/ARCHITECTURE.md +86 -0
- package/template/CHANGELOG.md +34 -0
- package/template/CONTRIBUTING.md +92 -0
- package/template/DECISION_HIERARCHY.md +32 -0
- package/template/DEVELOPMENT_RULES.md +57 -0
- package/template/LICENSE +1 -1
- package/template/README.md +241 -49
- package/template/RELEASE.md +230 -0
- package/template/ROADMAP.md +34 -0
- package/template/TESTING_STRATEGY.md +93 -0
- package/template/_editorconfig +12 -0
- package/template/_gitattributes +1 -0
- package/template/_github/instructions/ai-workflow.md +33 -0
- package/template/_github/workflows/ci.yml +38 -0
- package/template/_github/workflows/release.yml +58 -0
- package/template/_gitignore +5 -0
- package/template/_husky/commit-msg +8 -0
- package/template/_husky/pre-commit +1 -0
- package/template/_npmrc +1 -0
- package/template/_prettierignore +7 -0
- package/template/commitlint.config.mjs +6 -0
- package/template/docs/adr/0001-keep-the-starter-minimal.md +32 -0
- package/template/docs/adr/0002-adopt-a-living-meta-layer.md +30 -0
- package/template/docs/adr/0003-normalize-kpa-plugin-output.md +24 -0
- package/template/docs/adr/0004-adopt-an-automated-quality-baseline.md +31 -0
- package/template/docs/adr/0005-adopt-a-tag-driven-release-baseline.md +45 -0
- package/template/docs/adr/0006-adopt-commit-message-conventions.md +39 -0
- package/template/docs/adr/README.md +37 -0
- package/template/docs/adr/TEMPLATE.md +18 -0
- package/template/docs/architecture/module-boundaries.md +48 -0
- package/template/docs/meta/maintenance.md +40 -0
- package/template/docs/quality/quality-gates.md +39 -0
- package/template/docs/specs/README.md +36 -0
- package/template/docs/specs/TEMPLATE.md +34 -0
- package/template/docs/specs/app-bootstrap.md +46 -0
- package/template/docs/specs/counter-component.md +48 -0
- package/template/docs/specs/quality-workflow.md +62 -0
- package/template/eslint.config.mjs +54 -0
- package/template/package.json +57 -6
- package/template/playwright.config.ts +31 -0
- package/template/pnpm-lock.yaml +3784 -0
- package/template/prettier.config.mjs +6 -0
- package/template/src/app-view.kpa +35 -36
- package/template/src/counter-component.kpa +87 -87
- package/template/src/style.css +5 -5
- package/template/tests/e2e/app.spec.ts +18 -0
- package/template/tests/integration/main-bootstrap.test.ts +33 -0
- package/template/tests/unit/normalize-kpa-module-export.test.ts +46 -0
- package/template/tsconfig.json +13 -2
- package/template/vite.config.d.mts +7 -0
- package/template/vite.config.mjs +39 -4
- package/template/vitest.config.mjs +19 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
## Setup
|
|
4
|
+
|
|
5
|
+
Requirements:
|
|
6
|
+
|
|
7
|
+
- Node.js 20.19+, 22.13+, or 24+
|
|
8
|
+
- pnpm 10 or newer
|
|
9
|
+
|
|
10
|
+
Node 23 is intentionally not part of the supported range because the current
|
|
11
|
+
upstream frontend tooling excludes it.
|
|
12
|
+
|
|
13
|
+
Install and run:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pnpm install
|
|
17
|
+
pnpm dev
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Install the Playwright browser once if you plan to run browser smoke tests locally:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
pnpm exec playwright install chromium
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Useful commands:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pnpm lint
|
|
30
|
+
pnpm format:check
|
|
31
|
+
pnpm typecheck
|
|
32
|
+
pnpm test:run
|
|
33
|
+
pnpm test:coverage
|
|
34
|
+
pnpm test:e2e
|
|
35
|
+
pnpm check
|
|
36
|
+
pnpm validate
|
|
37
|
+
pnpm release:check
|
|
38
|
+
pnpm build
|
|
39
|
+
pnpm serve
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Commit messages use Conventional Commits.
|
|
43
|
+
Examples:
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
feat: add release baseline
|
|
47
|
+
docs: update contributing guide
|
|
48
|
+
fix: align bootstrap docs
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Workflow
|
|
52
|
+
|
|
53
|
+
1. Read [DECISION_HIERARCHY.md](./DECISION_HIERARCHY.md), [ARCHITECTURE.md](./ARCHITECTURE.md), and any relevant spec or ADR before changing source files.
|
|
54
|
+
2. For non-trivial work, update or create the relevant spec in [docs/specs](./docs/specs) first.
|
|
55
|
+
3. If the change alters architecture, tooling, public tags, or repository workflow, add or update an ADR in [docs/adr](./docs/adr).
|
|
56
|
+
4. Implement the smallest change that satisfies the spec.
|
|
57
|
+
5. Run the applicable quality gates from [TESTING_STRATEGY.md](./TESTING_STRATEGY.md). Use `pnpm check` for the local baseline and `pnpm validate` before merge when the UI, bootstrap, or tooling changed.
|
|
58
|
+
6. If the change touches versioning, changelog, or release automation, update `CHANGELOG.md`, `RELEASE.md`, and the affected workflow in the same change.
|
|
59
|
+
7. Update architecture, development, testing, and README docs when the actual project state changes.
|
|
60
|
+
|
|
61
|
+
## Releases
|
|
62
|
+
|
|
63
|
+
- Release notes live in [`CHANGELOG.md`](./CHANGELOG.md).
|
|
64
|
+
- The maintainer release procedure lives in [`RELEASE.md`](./RELEASE.md).
|
|
65
|
+
- Releases are prepared on `develop`, moved through `release/*`, merged into `main`, and tagged as `vX.Y.Z`.
|
|
66
|
+
- The release workflow creates GitHub Releases only. The repository starts
|
|
67
|
+
`private`, so no npm publish step is configured by default.
|
|
68
|
+
- Run `pnpm release:check` before cutting a release tag.
|
|
69
|
+
|
|
70
|
+
## Commit policy
|
|
71
|
+
|
|
72
|
+
- Commit messages are validated by `.husky/commit-msg` using `commitlint`.
|
|
73
|
+
- Use Conventional Commits such as `feat: ...`, `fix: ...`, `docs: ...`, `test: ...`, `ci: ...`, or `chore: ...`.
|
|
74
|
+
- Keep the commit header at 72 characters or fewer.
|
|
75
|
+
- Merge, revert, `fixup!`, and `squash!` commits may bypass validation when Git creates them automatically.
|
|
76
|
+
|
|
77
|
+
## Pull request expectations
|
|
78
|
+
|
|
79
|
+
- Keep the starter minimal unless expansion is explicitly approved.
|
|
80
|
+
- Explain user-visible behavior changes and architecture-impacting decisions.
|
|
81
|
+
- Do not silently swap dependency sources, add build tools, or introduce new subsystems.
|
|
82
|
+
- Keep docs and code aligned in the same change.
|
|
83
|
+
- Keep hooks fast; heavy validation belongs in `pnpm validate` and CI, not in `pre-commit`.
|
|
84
|
+
|
|
85
|
+
## AI-assisted contributions
|
|
86
|
+
|
|
87
|
+
AI contributors follow the same rules as humans:
|
|
88
|
+
|
|
89
|
+
- read governing docs before editing,
|
|
90
|
+
- prefer existing patterns,
|
|
91
|
+
- do not invent architecture casually,
|
|
92
|
+
- update the meta layer whenever structure or rules change.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Decision Hierarchy
|
|
2
|
+
|
|
3
|
+
When repository documents conflict, use this order of precedence.
|
|
4
|
+
|
|
5
|
+
1. Approved specifications in [`docs/specs/`](./docs/specs)
|
|
6
|
+
2. Architecture Decision Records in [`docs/adr/`](./docs/adr)
|
|
7
|
+
3. [`AI_CONSTITUTION.md`](./AI_CONSTITUTION.md)
|
|
8
|
+
4. [`ARCHITECTURE.md`](./ARCHITECTURE.md) and supporting architecture docs in [`docs/architecture/`](./docs/architecture)
|
|
9
|
+
5. [`DEVELOPMENT_RULES.md`](./DEVELOPMENT_RULES.md) and [`TESTING_STRATEGY.md`](./TESTING_STRATEGY.md)
|
|
10
|
+
6. Quality and maintenance guidance in [`docs/quality/`](./docs/quality) and [`docs/meta/`](./docs/meta)
|
|
11
|
+
7. Contributor guidance and examples in [`CONTRIBUTING.md`](./CONTRIBUTING.md), [`README.md`](./README.md), and inline comments
|
|
12
|
+
|
|
13
|
+
## Interpretation rules
|
|
14
|
+
|
|
15
|
+
- The most specific document wins when two documents have the same rank.
|
|
16
|
+
- A newer document does not override a higher-ranked document by default.
|
|
17
|
+
- If a lower-ranked document is wrong, fix it instead of following it.
|
|
18
|
+
- If no applicable spec exists for a non-trivial change, create or update one before implementation.
|
|
19
|
+
- If a change would invalidate an ADR, create a superseding ADR instead of silently drifting away from it.
|
|
20
|
+
|
|
21
|
+
## Required reading order for non-trivial changes
|
|
22
|
+
|
|
23
|
+
1. This file
|
|
24
|
+
2. [AI_CONSTITUTION.md](./AI_CONSTITUTION.md)
|
|
25
|
+
3. [ARCHITECTURE.md](./ARCHITECTURE.md)
|
|
26
|
+
4. Relevant spec in [docs/specs](./docs/specs)
|
|
27
|
+
5. Relevant ADR in [docs/adr](./docs/adr)
|
|
28
|
+
6. [DEVELOPMENT_RULES.md](./DEVELOPMENT_RULES.md) and [TESTING_STRATEGY.md](./TESTING_STRATEGY.md)
|
|
29
|
+
|
|
30
|
+
## Escalation rule
|
|
31
|
+
|
|
32
|
+
When a change creates a new lasting rule, boundary, or tradeoff, encode it as a spec or ADR rather than relying on chat history or commit messages.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Development Rules
|
|
2
|
+
|
|
3
|
+
## Scope
|
|
4
|
+
|
|
5
|
+
These rules describe how code and documentation are expected to evolve in this repository.
|
|
6
|
+
|
|
7
|
+
## Source layout rules
|
|
8
|
+
|
|
9
|
+
- Keep `index.html` as a static shell with asset references and the single root element.
|
|
10
|
+
- Keep `src/main.ts` limited to bootstrap concerns: imports, `Core.take(...)` registrations, and the single public bootstrap call via `Core()`.
|
|
11
|
+
- Use `.kpa` files for UI composition, local component state, and component-scoped CSS.
|
|
12
|
+
- If logic becomes reusable, asynchronous, or branch-heavy, move it into `.ts` modules under `src/`.
|
|
13
|
+
- Keep `public/` for static assets only.
|
|
14
|
+
- Keep automated tests under `tests/`, split by `unit`, `integration`, and `e2e` only when each level is meaningfully used.
|
|
15
|
+
|
|
16
|
+
## Naming conventions
|
|
17
|
+
|
|
18
|
+
- Custom element names must be kebab-case.
|
|
19
|
+
- Root-level application components should use `app-` prefixes when they represent app shells or app-wide structure.
|
|
20
|
+
- Component filenames should match their primary exported or registered concept.
|
|
21
|
+
- New files and folders should use descriptive names over abbreviations.
|
|
22
|
+
|
|
23
|
+
## Dependency rules
|
|
24
|
+
|
|
25
|
+
- Runtime dependencies must be justified by a concrete need in a spec or ADR.
|
|
26
|
+
- Prefer browser APIs and KoppaJS primitives before adding helper libraries.
|
|
27
|
+
- Keep this repository wired to published npm packages unless there is an explicit ADR stating otherwise.
|
|
28
|
+
- Build tooling changes must update contributor docs and architecture docs in the same change.
|
|
29
|
+
- Quality tooling must stay proportionate to the starter. Prefer one clear tool per job over overlapping stacks.
|
|
30
|
+
|
|
31
|
+
## Coding patterns
|
|
32
|
+
|
|
33
|
+
- Favor simple, local state over premature abstraction.
|
|
34
|
+
- Keep methods short and named by behavior.
|
|
35
|
+
- Avoid hidden side effects during import.
|
|
36
|
+
- Keep CSS local to components unless the style truly applies application-wide.
|
|
37
|
+
- Preserve strict TypeScript settings; do not weaken `tsconfig.json` to work around errors.
|
|
38
|
+
- Give interactive controls stable accessible names when feasible so smoke tests can target public semantics instead of brittle selectors.
|
|
39
|
+
- Keep Playwright assertions user-facing. Implementation-detail checks belong in Vitest, not in browser tests.
|
|
40
|
+
|
|
41
|
+
## Forbidden without a spec and ADR
|
|
42
|
+
|
|
43
|
+
- Introducing routing
|
|
44
|
+
- Adding global state containers
|
|
45
|
+
- Adding network or persistence layers
|
|
46
|
+
- Introducing SSR, multi-page bootstraps, or multiple root entries
|
|
47
|
+
- Switching dependency sourcing from npm packages to local monorepo links
|
|
48
|
+
- Expanding the starter into a multi-feature demo application
|
|
49
|
+
- Adding heavyweight hooks that run the entire suite on every commit
|
|
50
|
+
|
|
51
|
+
## Documentation obligations
|
|
52
|
+
|
|
53
|
+
- Update [ARCHITECTURE.md](./ARCHITECTURE.md) when source layout or runtime flow changes.
|
|
54
|
+
- Update [TESTING_STRATEGY.md](./TESTING_STRATEGY.md) when quality gates or tooling change.
|
|
55
|
+
- Update or create a spec in [docs/specs](./docs/specs) for user-visible changes.
|
|
56
|
+
- Add an ADR in [docs/adr](./docs/adr) for durable technical decisions.
|
|
57
|
+
- Update [docs/quality/quality-gates.md](./docs/quality/quality-gates.md) when scripts, hooks, CI checks, or browser-smoke expectations change.
|
package/template/LICENSE
CHANGED
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
same "printed page" as the copyright notice for easier
|
|
187
187
|
identification within third-party archives.
|
|
188
188
|
|
|
189
|
-
Copyright
|
|
189
|
+
Copyright 2026 Bastian Bensch
|
|
190
190
|
|
|
191
191
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
192
|
you may not use this file except in compliance with the License.
|
package/template/README.md
CHANGED
|
@@ -1,49 +1,241 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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="./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
|
+
---
|
|
81
|
+
|
|
82
|
+
## Requirements
|
|
83
|
+
|
|
84
|
+
- Node.js 20.19+, 22.13+, or 24+
|
|
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
|
+
---
|
|
91
|
+
|
|
92
|
+
## Getting Started
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
pnpm install
|
|
96
|
+
pnpm dev
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Install the Playwright browser once if you want to run the browser smoke test locally:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
pnpm exec playwright install chromium
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Useful commands:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
pnpm lint
|
|
109
|
+
pnpm format:check
|
|
110
|
+
pnpm typecheck
|
|
111
|
+
pnpm test:run
|
|
112
|
+
pnpm test:coverage
|
|
113
|
+
pnpm build
|
|
114
|
+
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
|
+
```
|
|
147
|
+
|
|
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
|
+
## Project Structure
|
|
163
|
+
|
|
164
|
+
```text
|
|
165
|
+
__PROJECT_NAME__/
|
|
166
|
+
├── .editorconfig
|
|
167
|
+
├── .github/
|
|
168
|
+
├── .gitignore
|
|
169
|
+
├── .husky/
|
|
170
|
+
├── .npmrc
|
|
171
|
+
├── .prettierignore
|
|
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
|
|
183
|
+
├── index.html
|
|
184
|
+
├── package.json
|
|
185
|
+
├── playwright.config.ts
|
|
186
|
+
├── pnpm-lock.yaml
|
|
187
|
+
├── prettier.config.mjs
|
|
188
|
+
├── tsconfig.json
|
|
189
|
+
├── vite.config.mjs
|
|
190
|
+
├── vitest.config.mjs
|
|
191
|
+
├── docs/
|
|
192
|
+
│ ├── adr/
|
|
193
|
+
│ ├── architecture/
|
|
194
|
+
│ ├── meta/
|
|
195
|
+
│ ├── quality/
|
|
196
|
+
│ └── specs/
|
|
197
|
+
├── public/
|
|
198
|
+
│ └── favicon.svg
|
|
199
|
+
├── src/
|
|
200
|
+
│ ├── main.ts
|
|
201
|
+
│ ├── style.css
|
|
202
|
+
│ ├── app-view.kpa
|
|
203
|
+
│ └── counter-component.kpa
|
|
204
|
+
└── tests/
|
|
205
|
+
├── e2e/
|
|
206
|
+
├── integration/
|
|
207
|
+
└── unit/
|
|
208
|
+
```
|
|
209
|
+
|
|
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
|
|
240
|
+
|
|
241
|
+
Apache License 2.0 — © 2026 KoppaJS, Bastian Bensch
|