spinup-ts 0.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/README.md +82 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +96 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts.d.ts +17 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +264 -0
- package/dist/prompts.js.map +1 -0
- package/dist/scaffold.d.ts +5 -0
- package/dist/scaffold.d.ts.map +1 -0
- package/dist/scaffold.js +128 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/transforms/devcontainer.d.ts +3 -0
- package/dist/transforms/devcontainer.d.ts.map +1 -0
- package/dist/transforms/devcontainer.js +8 -0
- package/dist/transforms/devcontainer.js.map +1 -0
- package/dist/transforms/docker.d.ts +3 -0
- package/dist/transforms/docker.d.ts.map +1 -0
- package/dist/transforms/docker.js +11 -0
- package/dist/transforms/docker.js.map +1 -0
- package/dist/transforms/docs.d.ts +3 -0
- package/dist/transforms/docs.d.ts.map +1 -0
- package/dist/transforms/docs.js +22 -0
- package/dist/transforms/docs.js.map +1 -0
- package/dist/transforms/documentation.d.ts +3 -0
- package/dist/transforms/documentation.d.ts.map +1 -0
- package/dist/transforms/documentation.js +37 -0
- package/dist/transforms/documentation.js.map +1 -0
- package/dist/transforms/github-actions.d.ts +3 -0
- package/dist/transforms/github-actions.d.ts.map +1 -0
- package/dist/transforms/github-actions.js +48 -0
- package/dist/transforms/github-actions.js.map +1 -0
- package/dist/transforms/index.d.ts +3 -0
- package/dist/transforms/index.d.ts.map +1 -0
- package/dist/transforms/index.js +24 -0
- package/dist/transforms/index.js.map +1 -0
- package/dist/transforms/license.d.ts +3 -0
- package/dist/transforms/license.d.ts.map +1 -0
- package/dist/transforms/license.js +19 -0
- package/dist/transforms/license.js.map +1 -0
- package/dist/transforms/npm-publish.d.ts +3 -0
- package/dist/transforms/npm-publish.d.ts.map +1 -0
- package/dist/transforms/npm-publish.js +15 -0
- package/dist/transforms/npm-publish.js.map +1 -0
- package/dist/transforms/package-manager.d.ts +3 -0
- package/dist/transforms/package-manager.d.ts.map +1 -0
- package/dist/transforms/package-manager.js +31 -0
- package/dist/transforms/package-manager.js.map +1 -0
- package/dist/types.d.ts +116 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +52 -0
- package/dist/types.js.map +1 -0
- package/dist/update.d.ts +2 -0
- package/dist/update.d.ts.map +1 -0
- package/dist/update.js +207 -0
- package/dist/update.js.map +1 -0
- package/package.json +94 -0
- package/template/.commitlintrc.json +3 -0
- package/template/.devcontainer/.zshrc +159 -0
- package/template/.devcontainer/DISCOVER-DEPS.md +109 -0
- package/template/.devcontainer/README.md +223 -0
- package/template/.devcontainer/SETUP.md +191 -0
- package/template/.devcontainer/TOOLS.md +215 -0
- package/template/.devcontainer/devcontainer.json +106 -0
- package/template/.devcontainer/scripts/init-project.sh +167 -0
- package/template/.editorconfig +12 -0
- package/template/.github/.release-please-manifest.json +3 -0
- package/template/.github/ISSUE_TEMPLATE/bug_report.md +21 -0
- package/template/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
- package/template/.github/PULL_REQUEST_TEMPLATE.md +13 -0
- package/template/.github/actions/setup-node-env/action.yml +20 -0
- package/template/.github/dependabot.yml +17 -0
- package/template/.github/labeler.yml +17 -0
- package/template/.github/release-please-config.json +7 -0
- package/template/.github/workflows/ci.yml +95 -0
- package/template/.github/workflows/codeql.yml +31 -0
- package/template/.github/workflows/labeler.yml +18 -0
- package/template/.github/workflows/release-please.yml +72 -0
- package/template/.github/workflows/stale.yml +32 -0
- package/template/.husky/commit-msg +1 -0
- package/template/.husky/pre-commit +1 -0
- package/template/.nvmrc +1 -0
- package/template/.vscode/extensions.json +11 -0
- package/template/.vscode/settings.json +12 -0
- package/template/AGENTS.md +1 -0
- package/template/CHANGELOG.md +11 -0
- package/template/CLAUDE.md +0 -0
- package/template/CONTRIBUTING.md +22 -0
- package/template/Dockerfile +21 -0
- package/template/LICENSE.Apache-2.0 +17 -0
- package/template/LICENSE.BSD-3-Clause +28 -0
- package/template/LICENSE.GPL-3.0 +17 -0
- package/template/LICENSE.ISC +15 -0
- package/template/LICENSE.MIT +21 -0
- package/template/README.md +62 -0
- package/template/biome.json +49 -0
- package/template/docker-compose.yml +7 -0
- package/template/docs/architecture/api-layer.md +44 -0
- package/template/docs/architecture/constitution.md +24 -0
- package/template/docs/architecture/data-model.md +24 -0
- package/template/docs/architecture/index.md +15 -0
- package/template/docs/architecture/project.md +24 -0
- package/template/docs/architecture/quality-checks.md +28 -0
- package/template/docs/architecture/testing-plan.md +35 -0
- package/template/docs/architecture/ui.md +37 -0
- package/template/docs/changelog.md +9 -0
- package/template/docs/contributing.md +46 -0
- package/template/docs/developer-guide/architecture.md +22 -0
- package/template/docs/developer-guide/contributing.md +30 -0
- package/template/docs/developer-guide/data-model.md +25 -0
- package/template/docs/developer-guide/index.md +12 -0
- package/template/docs/developer-guide/testing.md +40 -0
- package/template/docs/examples.md +37 -0
- package/template/docs/getting-started.md +42 -0
- package/template/docs/installation.md +45 -0
- package/template/docs/intro.md +60 -0
- package/template/docs/post-mortems/.gitkeep +0 -0
- package/template/docs/reference/cli.md +32 -0
- package/template/docs/reference/configuration.md +33 -0
- package/template/docs/reference/hooks.md +27 -0
- package/template/docs/research/competitor-analysis.md +21 -0
- package/template/docs/research/real-world-demand.md +21 -0
- package/template/docs/user-guide/configuration.md +32 -0
- package/template/docs/user-guide/features.md +21 -0
- package/template/docs/user-guide/how-it-works.md +29 -0
- package/template/docs/user-guide/index.md +11 -0
- package/template/docusaurus.config.ts +93 -0
- package/template/eslint.config.mjs +66 -0
- package/template/justfile +51 -0
- package/template/package.json +88 -0
- package/template/pnpm-workspace.yaml +8 -0
- package/template/sidebars.ts +72 -0
- package/template/src/index.ts +3 -0
- package/template/static/img/logo.svg +4 -0
- package/template/tests/index.test.ts +8 -0
- package/template/tsconfig.json +23 -0
- package/template/vitest.config.ts +19 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"editor.defaultFormatter": "biomejs.biome",
|
|
3
|
+
"editor.formatOnSave": true,
|
|
4
|
+
"editor.codeActionsOnSave": {
|
|
5
|
+
"source.fixAll.biome": "explicit",
|
|
6
|
+
"source.organizeImports.biome": "explicit",
|
|
7
|
+
"source.fixAll.eslint": "explicit"
|
|
8
|
+
},
|
|
9
|
+
"[typescript]": { "editor.defaultFormatter": "biomejs.biome" },
|
|
10
|
+
"[javascript]": { "editor.defaultFormatter": "biomejs.biome" },
|
|
11
|
+
"[json]": { "editor.defaultFormatter": "biomejs.biome" }
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@CLAUDE.md
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Initial release
|
|
File without changes
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
## Development Setup
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
git clone https://github.com/__GITHUB_HANDLE__/__PROJECT_NAME__
|
|
7
|
+
cd __PROJECT_NAME__
|
|
8
|
+
pnpm install
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Workflow
|
|
12
|
+
|
|
13
|
+
1. Create a feature branch: `git checkout -b feat/my-feature`
|
|
14
|
+
2. Make your changes
|
|
15
|
+
3. Run checks: `pnpm check`
|
|
16
|
+
4. Run tests: `pnpm test`
|
|
17
|
+
5. Commit: `git commit -m "feat: my feature"`
|
|
18
|
+
6. Open a pull request
|
|
19
|
+
|
|
20
|
+
## Code Style
|
|
21
|
+
|
|
22
|
+
This project uses Biome for formatting and ESLint for linting. Run `pnpm lint:fix` to auto-fix issues.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
FROM node:__NODE_VERSION__-alpine AS base
|
|
2
|
+
RUN corepack enable pnpm
|
|
3
|
+
|
|
4
|
+
FROM base AS deps
|
|
5
|
+
WORKDIR /app
|
|
6
|
+
COPY package.json pnpm-lock.yaml ./
|
|
7
|
+
RUN pnpm install --frozen-lockfile --prod
|
|
8
|
+
|
|
9
|
+
FROM base AS builder
|
|
10
|
+
WORKDIR /app
|
|
11
|
+
COPY package.json pnpm-lock.yaml ./
|
|
12
|
+
RUN pnpm install --frozen-lockfile
|
|
13
|
+
COPY . .
|
|
14
|
+
RUN pnpm build
|
|
15
|
+
|
|
16
|
+
FROM node:__NODE_VERSION__-alpine AS runner
|
|
17
|
+
WORKDIR /app
|
|
18
|
+
COPY --from=builder /app/dist ./dist
|
|
19
|
+
COPY --from=deps /app/node_modules ./node_modules
|
|
20
|
+
COPY package.json ./
|
|
21
|
+
CMD ["node", "dist/index.js"]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
Copyright __YEAR__ __AUTHOR__
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
you may not use this file except in compliance with the License.
|
|
9
|
+
You may obtain a copy of the License at
|
|
10
|
+
|
|
11
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
|
|
13
|
+
Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
See the License for the specific language governing permissions and
|
|
17
|
+
limitations under the License.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) __YEAR__, __AUTHOR__
|
|
4
|
+
|
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
|
6
|
+
modification, are permitted provided that the following conditions are met:
|
|
7
|
+
|
|
8
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
9
|
+
list of conditions and the following disclaimer.
|
|
10
|
+
|
|
11
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
12
|
+
this list of conditions and the following disclaimer in the documentation
|
|
13
|
+
and/or other materials provided with the distribution.
|
|
14
|
+
|
|
15
|
+
3. Neither the name of the copyright holder nor the names of its contributors
|
|
16
|
+
may be used to endorse or promote products derived from this software
|
|
17
|
+
without specific prior written permission.
|
|
18
|
+
|
|
19
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
20
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
21
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
22
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
23
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
24
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
25
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
26
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
27
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
28
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
GNU GENERAL PUBLIC LICENSE
|
|
2
|
+
Version 3, 29 June 2007
|
|
3
|
+
|
|
4
|
+
Copyright (C) __YEAR__ __AUTHOR__
|
|
5
|
+
|
|
6
|
+
This program is free software: you can redistribute it and/or modify
|
|
7
|
+
it under the terms of the GNU General Public License as published by
|
|
8
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
9
|
+
(at your option) any later version.
|
|
10
|
+
|
|
11
|
+
This program is distributed in the hope that it will be useful,
|
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
GNU General Public License for more details.
|
|
15
|
+
|
|
16
|
+
You should have received a copy of the GNU General Public License
|
|
17
|
+
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
ISC License
|
|
2
|
+
|
|
3
|
+
Copyright (c) __YEAR__ __AUTHOR__
|
|
4
|
+
|
|
5
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
7
|
+
copyright notice and this permission notice appear in all copies.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
10
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
11
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
12
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
13
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
14
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
15
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) __YEAR__ __AUTHOR__
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# __PROJECT_NAME__
|
|
2
|
+
|
|
3
|
+
> __DESCRIPTION__
|
|
4
|
+
|
|
5
|
+
[](https://npmjs.com/package/__PROJECT_NAME__)
|
|
6
|
+
[](https://github.com/__GITHUB_HANDLE__/__PROJECT_NAME__/actions/workflows/ci.yml)
|
|
7
|
+
[](https://codecov.io/gh/__GITHUB_HANDLE__/__PROJECT_NAME__)
|
|
8
|
+
[](https://__GITHUB_HANDLE__.github.io/__PROJECT_NAME__)
|
|
9
|
+
[](LICENSE)
|
|
10
|
+
[](https://nodejs.org)
|
|
11
|
+
|
|
12
|
+
## What is __PROJECT_NAME__?
|
|
13
|
+
|
|
14
|
+
Replace this paragraph with a 2–3 sentence description. What does it do? Who is it for?
|
|
15
|
+
Why should someone choose it over alternatives?
|
|
16
|
+
|
|
17
|
+
## Features
|
|
18
|
+
|
|
19
|
+
| | Feature | Description |
|
|
20
|
+
|---|---------|-------------|
|
|
21
|
+
| ⚡ | **Fast** | Replace with a real performance claim |
|
|
22
|
+
| 🔒 | **Type-safe** | Full TypeScript with strict types |
|
|
23
|
+
| 🧪 | **Well tested** | Comprehensive test suite with coverage |
|
|
24
|
+
| 📦 | **Lightweight** | Minimal dependencies |
|
|
25
|
+
|
|
26
|
+
## Installation
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# pnpm
|
|
30
|
+
pnpm add __PROJECT_NAME__
|
|
31
|
+
|
|
32
|
+
# npm
|
|
33
|
+
npm install __PROJECT_NAME__
|
|
34
|
+
|
|
35
|
+
# bun
|
|
36
|
+
bun add __PROJECT_NAME__
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Quick Start
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
import { yourExport } from '__PROJECT_NAME__';
|
|
43
|
+
|
|
44
|
+
// Replace with the simplest possible working example
|
|
45
|
+
const result = yourExport({ input: 'value' });
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Documentation
|
|
49
|
+
|
|
50
|
+
Full documentation at **[__GITHUB_HANDLE__.github.io/__PROJECT_NAME__](https://__GITHUB_HANDLE__.github.io/__PROJECT_NAME__)**
|
|
51
|
+
|
|
52
|
+
- [Getting Started](https://__GITHUB_HANDLE__.github.io/__PROJECT_NAME__/getting-started)
|
|
53
|
+
- [User Guide](https://__GITHUB_HANDLE__.github.io/__PROJECT_NAME__/user-guide/)
|
|
54
|
+
- [API Reference](https://__GITHUB_HANDLE__.github.io/__PROJECT_NAME__/api)
|
|
55
|
+
|
|
56
|
+
## Contributing
|
|
57
|
+
|
|
58
|
+
See [CONTRIBUTING](https://__GITHUB_HANDLE__.github.io/__PROJECT_NAME__/contributing) for development setup and PR guidelines.
|
|
59
|
+
|
|
60
|
+
## License
|
|
61
|
+
|
|
62
|
+
[__LICENSE__](LICENSE) © __YEAR__ [__AUTHOR__](https://github.com/__GITHUB_HANDLE__)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
|
|
3
|
+
"organizeImports": { "enabled": true },
|
|
4
|
+
"formatter": {
|
|
5
|
+
"enabled": true,
|
|
6
|
+
"indentStyle": "space",
|
|
7
|
+
"indentWidth": 2,
|
|
8
|
+
"lineEnding": "lf",
|
|
9
|
+
"lineWidth": 100
|
|
10
|
+
},
|
|
11
|
+
"javascript": {
|
|
12
|
+
"formatter": {
|
|
13
|
+
"quoteStyle": "single",
|
|
14
|
+
"trailingCommas": "all",
|
|
15
|
+
"semicolons": "always",
|
|
16
|
+
"arrowParentheses": "always"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"linter": {
|
|
20
|
+
"enabled": true,
|
|
21
|
+
"rules": {
|
|
22
|
+
"recommended": true,
|
|
23
|
+
"correctness": {
|
|
24
|
+
"noUnusedVariables": "error",
|
|
25
|
+
"noUnusedImports": "error",
|
|
26
|
+
"useExhaustiveDependencies": "off"
|
|
27
|
+
},
|
|
28
|
+
"style": {
|
|
29
|
+
"useConst": "error",
|
|
30
|
+
"noNonNullAssertion": "warn",
|
|
31
|
+
"useTemplate": "error",
|
|
32
|
+
"useNamingConvention": {
|
|
33
|
+
"level": "error",
|
|
34
|
+
"options": { "strictCase": false }
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"suspicious": {
|
|
38
|
+
"noExplicitAny": "error",
|
|
39
|
+
"noConsole": "warn"
|
|
40
|
+
},
|
|
41
|
+
"complexity": {
|
|
42
|
+
"noExcessiveCognitiveComplexity": "warn"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"files": {
|
|
47
|
+
"ignore": ["node_modules", "dist", "coverage", "*.generated.ts"]
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: API Layer
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# API Layer
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
Describe the API layer of __PROJECT_NAME__ — how it exposes functionality to consumers.
|
|
10
|
+
|
|
11
|
+
## Public API Surface
|
|
12
|
+
|
|
13
|
+
Everything exported from `src/index.ts` is part of the public API and subject to semver.
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
// Example: primary exports
|
|
17
|
+
export { yourMainExport } from './core.js';
|
|
18
|
+
export type { Config, Result } from './types.js';
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## API Design Principles
|
|
22
|
+
|
|
23
|
+
- **Minimal surface** — only expose what consumers need; keep internals private
|
|
24
|
+
- **Type-safe** — every parameter and return type is fully typed; no `any`
|
|
25
|
+
- **Stable** — breaking changes require a major version bump
|
|
26
|
+
|
|
27
|
+
## Request / Response Flow
|
|
28
|
+
|
|
29
|
+
Describe how a call flows from consumer → public API → internal implementation → return value.
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
Consumer → yourMainExport(input)
|
|
33
|
+
→ validate(input)
|
|
34
|
+
→ process(validated)
|
|
35
|
+
→ Result
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Error Handling
|
|
39
|
+
|
|
40
|
+
Describe how errors surface to callers (thrown exceptions, returned error objects, Result types, etc.).
|
|
41
|
+
|
|
42
|
+
## Versioning
|
|
43
|
+
|
|
44
|
+
Describe your semver strategy and how you signal deprecations before breaking changes.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Constitution
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Constitution
|
|
6
|
+
|
|
7
|
+
The non-negotiable architectural principles for __PROJECT_NAME__.
|
|
8
|
+
|
|
9
|
+
## Core Principles
|
|
10
|
+
|
|
11
|
+
1. **TypeScript-first** — every public API is fully typed; no `any` in source code
|
|
12
|
+
2. **Zero runtime dependencies** — replace or remove if your project has deps
|
|
13
|
+
3. **Immutability** — replace with your principle
|
|
14
|
+
4. **Replace with your principle** — describe it
|
|
15
|
+
|
|
16
|
+
## Constraints
|
|
17
|
+
|
|
18
|
+
- Node.js `>= __NODE_VERSION__` — minimum runtime requirement
|
|
19
|
+
- ESM-only — no CommonJS output
|
|
20
|
+
- Add other constraints relevant to your project
|
|
21
|
+
|
|
22
|
+
## What This Is Not
|
|
23
|
+
|
|
24
|
+
Describe what __PROJECT_NAME__ explicitly does NOT do. Scope boundaries matter.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Data Model
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Data Model
|
|
6
|
+
|
|
7
|
+
## Type Hierarchy
|
|
8
|
+
|
|
9
|
+
Replace with your project's type hierarchy diagram or description.
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
RootType
|
|
13
|
+
├── SubTypeA
|
|
14
|
+
│ └── LeafType
|
|
15
|
+
└── SubTypeB
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Source of Truth
|
|
19
|
+
|
|
20
|
+
The canonical types are defined in `src/types.ts`. Replace with your actual types file.
|
|
21
|
+
|
|
22
|
+
## Versioning
|
|
23
|
+
|
|
24
|
+
Describe how breaking changes to types are handled.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Architecture
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Architecture
|
|
6
|
+
|
|
7
|
+
This section documents the architectural decisions, constraints, and structure of __PROJECT_NAME__.
|
|
8
|
+
|
|
9
|
+
- [Constitution](./constitution) — principles and non-negotiable constraints
|
|
10
|
+
- [Data Model](./data-model) — schema and type hierarchy
|
|
11
|
+
- [Project Structure](./project) — file and module layout
|
|
12
|
+
- [API Layer](./api-layer) — public API surface, request/response flow, versioning
|
|
13
|
+
- [UI](./ui) — component structure, state management, styling
|
|
14
|
+
- [Quality Checks](./quality-checks) — linting, typing, testing gates
|
|
15
|
+
- [Testing Plan](./testing-plan) — test strategy and coverage goals
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Project Structure
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Project Structure
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
__PROJECT_NAME__/
|
|
9
|
+
├── src/
|
|
10
|
+
│ ├── index.ts # public API exports
|
|
11
|
+
│ └── ... # replace with your structure
|
|
12
|
+
├── docs/ # documentation source
|
|
13
|
+
├── dist/ # build output (gitignored)
|
|
14
|
+
└── package.json
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Module Boundaries
|
|
18
|
+
|
|
19
|
+
Describe the internal module structure and how modules relate.
|
|
20
|
+
|
|
21
|
+
## Public API
|
|
22
|
+
|
|
23
|
+
Everything exported from `src/index.ts` is part of the public API and subject to semver.
|
|
24
|
+
Everything else is internal and may change without notice.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Quality Checks
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Quality Checks
|
|
6
|
+
|
|
7
|
+
## On Every Commit (pre-commit hook)
|
|
8
|
+
|
|
9
|
+
- Biome format + lint
|
|
10
|
+
- ESLint strict mode
|
|
11
|
+
|
|
12
|
+
## On Every Push / PR (CI)
|
|
13
|
+
|
|
14
|
+
- `pnpm typecheck` — TypeScript strict mode, zero errors allowed
|
|
15
|
+
- `pnpm lint` — Biome CI + ESLint with `--max-warnings=0`
|
|
16
|
+
- `pnpm test:coverage` — Vitest with v8 coverage
|
|
17
|
+
- `pnpm depcheck` — no unused dependencies
|
|
18
|
+
- `pnpm docs:build` — Docusaurus + TypeDoc build (docs branch only)
|
|
19
|
+
- Dependency Review — blocks PRs with known-vulnerable dependencies (CVE severity: moderate+)
|
|
20
|
+
|
|
21
|
+
## Gates
|
|
22
|
+
|
|
23
|
+
| Gate | Threshold |
|
|
24
|
+
|------|-----------|
|
|
25
|
+
| Test coverage | Replace with your target (e.g., 80%) |
|
|
26
|
+
| TypeScript errors | 0 |
|
|
27
|
+
| ESLint warnings | 0 |
|
|
28
|
+
| Dependency vulnerabilities | 0 moderate+ |
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Testing Plan
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Testing Plan
|
|
6
|
+
|
|
7
|
+
## Test Strategy
|
|
8
|
+
|
|
9
|
+
Replace with your project's testing strategy. For a library:
|
|
10
|
+
- **Unit tests** — every exported function, edge cases, error paths
|
|
11
|
+
- **Integration tests** — key workflows end-to-end
|
|
12
|
+
- No mocking of internal implementation details
|
|
13
|
+
|
|
14
|
+
## Coverage Goals
|
|
15
|
+
|
|
16
|
+
| Metric | Target |
|
|
17
|
+
|--------|--------|
|
|
18
|
+
| Line coverage | > 80% (replace with your target) |
|
|
19
|
+
| Branch coverage | > 75% |
|
|
20
|
+
| Function coverage | > 90% |
|
|
21
|
+
|
|
22
|
+
## Test File Conventions
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
src/
|
|
26
|
+
├── myModule.ts
|
|
27
|
+
└── __tests__/
|
|
28
|
+
└── myModule.test.ts # co-located with source
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## What We Do Not Test
|
|
32
|
+
|
|
33
|
+
- Third-party library internals
|
|
34
|
+
- Build tooling (TypeScript, Biome)
|
|
35
|
+
- Generated files
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: UI
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# UI
|
|
6
|
+
|
|
7
|
+
Remove this section if __PROJECT_NAME__ has no user interface.
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
Describe the UI layer — component structure, rendering approach, and how it connects to the core library.
|
|
12
|
+
|
|
13
|
+
## Component Structure
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
src/
|
|
17
|
+
└── ui/
|
|
18
|
+
├── components/ # reusable primitives
|
|
19
|
+
├── views/ # page-level compositions
|
|
20
|
+
└── index.ts # public UI exports
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## State Management
|
|
24
|
+
|
|
25
|
+
Describe how UI state is managed (local component state, context, external store, etc.) and how it stays in sync with library state.
|
|
26
|
+
|
|
27
|
+
## Theming & Styling
|
|
28
|
+
|
|
29
|
+
Describe the styling approach (CSS Modules, Tailwind, CSS-in-JS, etc.) and how consumers can customize the appearance.
|
|
30
|
+
|
|
31
|
+
## Accessibility
|
|
32
|
+
|
|
33
|
+
Describe your accessibility baseline (WCAG level, ARIA patterns, keyboard navigation support).
|
|
34
|
+
|
|
35
|
+
## Design Decisions
|
|
36
|
+
|
|
37
|
+
Document any non-obvious UI architecture choices — e.g., why a headless component pattern was chosen, or why rendering is decoupled from logic.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Changelog
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Changelog
|
|
6
|
+
|
|
7
|
+
All notable changes are tracked in [CHANGELOG.md](https://github.com/__GITHUB_HANDLE__/__PROJECT_NAME__/blob/main/CHANGELOG.md) on GitHub.
|
|
8
|
+
|
|
9
|
+
Releases are automated via [release-please](https://github.com/googleapis/release-please).
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Contributing
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Contributing
|
|
6
|
+
|
|
7
|
+
Thank you for your interest in contributing to __PROJECT_NAME__!
|
|
8
|
+
|
|
9
|
+
## Development Setup
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
git clone https://github.com/__GITHUB_HANDLE__/__PROJECT_NAME__.git
|
|
13
|
+
cd __PROJECT_NAME__
|
|
14
|
+
pnpm install
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Running Tests
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
pnpm test # run tests
|
|
21
|
+
pnpm test:coverage # run with coverage
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Code Quality
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
pnpm check # typecheck + lint
|
|
28
|
+
pnpm lint:fix # auto-fix linting issues
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Submitting a Pull Request
|
|
32
|
+
|
|
33
|
+
1. Fork the repository
|
|
34
|
+
2. Create a feature branch: `git checkout -b feat/your-feature`
|
|
35
|
+
3. Make your changes and add tests
|
|
36
|
+
4. Ensure all checks pass: `pnpm check && pnpm test`
|
|
37
|
+
5. Commit using [Conventional Commits](https://www.conventionalcommits.org/):
|
|
38
|
+
- `feat: add new feature`
|
|
39
|
+
- `fix: correct a bug`
|
|
40
|
+
- `docs: update documentation`
|
|
41
|
+
6. Open a pull request
|
|
42
|
+
|
|
43
|
+
## Release Process
|
|
44
|
+
|
|
45
|
+
Releases are automated via [release-please](https://github.com/googleapis/release-please).
|
|
46
|
+
Merging a release PR automatically publishes to npm and deploys the docs.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Architecture Overview
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Architecture Overview
|
|
6
|
+
|
|
7
|
+
See the [Architecture section](../architecture/) for detailed documentation.
|
|
8
|
+
|
|
9
|
+
## Quick Summary
|
|
10
|
+
|
|
11
|
+
Describe your architecture in 2-3 sentences for developers scanning this guide.
|
|
12
|
+
|
|
13
|
+
## Key Files
|
|
14
|
+
|
|
15
|
+
| File | Responsibility |
|
|
16
|
+
|------|----------------|
|
|
17
|
+
| `src/index.ts` | Public API exports |
|
|
18
|
+
| `src/core.ts` | Replace with your core module |
|
|
19
|
+
|
|
20
|
+
## Extension Points
|
|
21
|
+
|
|
22
|
+
Describe how the library can be extended or customized.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Contributing (Dev)
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Contributing — Developer Notes
|
|
6
|
+
|
|
7
|
+
This covers technical details for contributors. See the [user-facing contributing guide](../contributing) for the PR workflow.
|
|
8
|
+
|
|
9
|
+
## Project Setup
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
git clone https://github.com/__GITHUB_HANDLE__/__PROJECT_NAME__.git
|
|
13
|
+
cd __PROJECT_NAME__
|
|
14
|
+
pnpm install
|
|
15
|
+
pnpm build
|
|
16
|
+
pnpm test
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Code Conventions
|
|
20
|
+
|
|
21
|
+
- TypeScript strict mode — no `any`, no `@ts-ignore`
|
|
22
|
+
- Biome for formatting — `pnpm lint:fix` before committing
|
|
23
|
+
- Conventional commits — required for release-please automation
|
|
24
|
+
|
|
25
|
+
## Release Process
|
|
26
|
+
|
|
27
|
+
Releases are fully automated:
|
|
28
|
+
1. Commit with conventional commit messages
|
|
29
|
+
2. release-please opens a versioned PR automatically
|
|
30
|
+
3. Merge the PR → release created → npm published → docs deployed
|