@clubedge/create-clubedge-app 0.2.1 → 0.4.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 +19 -0
- package/README.md +67 -36
- package/bin/create.mjs +2 -469
- package/dist/cli/args.js +54 -0
- package/dist/cli/ui.js +87 -0
- package/dist/core/customize.js +95 -0
- package/dist/core/execute.js +60 -0
- package/dist/core/manifest.js +119 -0
- package/dist/core/plan.js +132 -0
- package/dist/core/source.js +107 -0
- package/dist/index.js +160 -0
- package/dist/package-info.js +8 -0
- package/dist/steps/git.js +11 -0
- package/dist/steps/install.js +19 -0
- package/dist/utils/fs.js +100 -0
- package/dist/utils/names.js +14 -0
- package/dist/utils/process.js +49 -0
- package/package.json +19 -7
- package/template/.dockerignore +11 -0
- package/template/.env.example +25 -0
- package/template/.gitattributes +6 -0
- package/template/.github/ISSUE_TEMPLATE/bug_report.yml +35 -0
- package/template/.github/ISSUE_TEMPLATE/config.yml +8 -0
- package/template/.github/ISSUE_TEMPLATE/feature_request.yml +24 -0
- package/template/.github/pull_request_template.md +20 -0
- package/template/.github/workflows/ci.yml +96 -0
- package/template/.prettierignore +2 -0
- package/template/.prettierrc.json +1 -0
- package/template/AGENTS.md +32 -0
- package/template/CODE_OF_CONDUCT.md +22 -0
- package/template/CONTRIBUTING.md +53 -0
- package/template/Dockerfile +32 -0
- package/template/LICENSE +201 -0
- package/template/NOTICE +6 -0
- package/template/PUBLISHING.md +27 -0
- package/template/README.md +170 -0
- package/template/SECURITY.md +15 -0
- package/template/SETUP.md +196 -0
- package/template/SUPPORT.md +8 -0
- package/template/_gitignore +17 -0
- package/template/apps/start/.env.example +27 -0
- package/template/apps/start/AGENTS.md +11 -0
- package/template/apps/start/Dockerfile +38 -0
- package/template/apps/start/package.json +37 -0
- package/template/apps/start/public/.well-known/logo.svg +1 -0
- package/template/apps/start/public/favicon.ico +0 -0
- package/template/apps/start/src/components/auth/auth-form-controls.tsx +108 -0
- package/template/apps/start/src/components/branding/clubedge-mark.tsx +24 -0
- package/template/apps/start/src/components/dashboard/account-button.tsx +33 -0
- package/template/apps/start/src/components/dashboard/app-sidebar.tsx +90 -0
- package/template/apps/start/src/components/landing/copy-command.tsx +46 -0
- package/template/apps/start/src/components/theme/theme-provider.tsx +41 -0
- package/template/apps/start/src/components/theme/theme-toggle.tsx +21 -0
- package/template/apps/start/src/config/site.json +11 -0
- package/template/apps/start/src/config/site.ts +20 -0
- package/template/apps/start/src/env/server.test.ts +48 -0
- package/template/apps/start/src/env/server.ts +67 -0
- package/template/apps/start/src/lib/login-url.test.ts +16 -0
- package/template/apps/start/src/lib/login-url.ts +16 -0
- package/template/apps/start/src/routeTree.gen.ts +220 -0
- package/template/apps/start/src/router.tsx +27 -0
- package/template/apps/start/src/routes/__root.tsx +59 -0
- package/template/apps/start/src/routes/api/health.ts +15 -0
- package/template/apps/start/src/routes/auth/callback.ts +10 -0
- package/template/apps/start/src/routes/auth/sign-in.ts +11 -0
- package/template/apps/start/src/routes/auth/sign-out.ts +11 -0
- package/template/apps/start/src/routes/auth/sign-up.ts +11 -0
- package/template/apps/start/src/routes/dashboard.tsx +351 -0
- package/template/apps/start/src/routes/index.tsx +233 -0
- package/template/apps/start/src/routes/login.tsx +164 -0
- package/template/apps/start/src/server/auth-forms.test.ts +169 -0
- package/template/apps/start/src/server/auth-forms.ts +118 -0
- package/template/apps/start/src/server/auth.functions.ts +27 -0
- package/template/apps/start/src/server/auth.ts +51 -0
- package/template/apps/start/src/server/cache.ts +38 -0
- package/template/apps/start/src/server/cookies.test.ts +41 -0
- package/template/apps/start/src/server/cookies.ts +31 -0
- package/template/apps/start/src/server/db.ts +16 -0
- package/template/apps/start/src/server/storage.ts +39 -0
- package/template/apps/start/src/server/users.ts +17 -0
- package/template/apps/start/src/start.ts +40 -0
- package/template/apps/start/src/styles.css +2 -0
- package/template/apps/start/tsconfig.json +19 -0
- package/template/apps/start/vite.config.ts +27 -0
- package/template/apps/web/AGENTS.md +9 -0
- package/template/apps/web/components.json +21 -0
- package/template/apps/web/next-env.d.ts +7 -0
- package/template/apps/web/next.config.ts +32 -0
- package/template/apps/web/package.json +33 -0
- package/template/apps/web/postcss.config.mjs +3 -0
- package/template/apps/web/public/.gitkeep +0 -0
- package/template/apps/web/public/.well-known/logo.svg +1 -0
- package/template/apps/web/scripts/start-standalone.mjs +36 -0
- package/template/apps/web/src/app/actions/auth.ts +85 -0
- package/template/apps/web/src/app/api/health/route.ts +11 -0
- package/template/apps/web/src/app/auth/callback/route.ts +21 -0
- package/template/apps/web/src/app/dashboard/_components/account-button.tsx +34 -0
- package/template/apps/web/src/app/dashboard/_components/app-sidebar.tsx +91 -0
- package/template/apps/web/src/app/dashboard/page.tsx +352 -0
- package/template/apps/web/src/app/favicon.ico +0 -0
- package/template/apps/web/src/app/layout.tsx +36 -0
- package/template/apps/web/src/app/login/_components/auth-form-controls.tsx +88 -0
- package/template/apps/web/src/app/login/page.tsx +149 -0
- package/template/apps/web/src/app/page.tsx +229 -0
- package/template/apps/web/src/app/theme-provider.tsx +43 -0
- package/template/apps/web/src/app/theme-toggle.tsx +23 -0
- package/template/apps/web/src/components/branding/clubedge-mark.tsx +25 -0
- package/template/apps/web/src/components/landing/copy-command.tsx +48 -0
- package/template/apps/web/src/config/site.json +11 -0
- package/template/apps/web/src/config/site.ts +20 -0
- package/template/apps/web/src/env/client.ts +22 -0
- package/template/apps/web/src/env/server.test.ts +35 -0
- package/template/apps/web/src/env/server.ts +45 -0
- package/template/apps/web/src/lib/login-url.test.ts +16 -0
- package/template/apps/web/src/lib/login-url.ts +16 -0
- package/template/apps/web/src/lib/utils.ts +1 -0
- package/template/apps/web/src/proxy.ts +31 -0
- package/template/apps/web/src/server/auth.ts +69 -0
- package/template/apps/web/src/server/cache.ts +38 -0
- package/template/apps/web/src/server/db.ts +16 -0
- package/template/apps/web/src/server/storage.ts +39 -0
- package/template/apps/web/src/server/users.ts +17 -0
- package/template/apps/web/tsconfig.json +36 -0
- package/template/clubedge.template.json +29 -0
- package/template/docker-compose.yml +8 -0
- package/template/e2e/app.ts +12 -0
- package/template/e2e/auth.spec.ts +37 -0
- package/template/e2e/home.spec.ts +15 -0
- package/template/eslint.config.mjs +67 -0
- package/template/package.json +47 -0
- package/template/packages/auth/package.json +23 -0
- package/template/packages/auth/src/index.ts +9 -0
- package/template/packages/auth/src/supabase.test.ts +126 -0
- package/template/packages/auth/src/supabase.ts +65 -0
- package/template/packages/auth/src/types.ts +59 -0
- package/template/packages/auth/tsconfig.json +4 -0
- package/template/packages/cache/package.json +20 -0
- package/template/packages/cache/src/index.test.ts +67 -0
- package/template/packages/cache/src/index.ts +19 -0
- package/template/packages/cache/src/rate-limit.test.ts +52 -0
- package/template/packages/cache/src/rate-limit.ts +74 -0
- package/template/packages/cache/src/redis.ts +106 -0
- package/template/packages/cache/tsconfig.json +4 -0
- package/template/packages/core/package.json +17 -0
- package/template/packages/core/src/client-ip.test.ts +19 -0
- package/template/packages/core/src/client-ip.ts +11 -0
- package/template/packages/core/src/errors.test.ts +20 -0
- package/template/packages/core/src/errors.ts +20 -0
- package/template/packages/core/src/index.ts +4 -0
- package/template/packages/core/src/redirect.test.ts +27 -0
- package/template/packages/core/src/redirect.ts +20 -0
- package/template/packages/core/src/result.ts +10 -0
- package/template/packages/core/tsconfig.json +4 -0
- package/template/packages/db/drizzle/0000_initial.sql +10 -0
- package/template/packages/db/drizzle/meta/_journal.json +13 -0
- package/template/packages/db/drizzle.config.ts +9 -0
- package/template/packages/db/package.json +30 -0
- package/template/packages/db/scripts/load-env.ts +14 -0
- package/template/packages/db/scripts/migrate.ts +11 -0
- package/template/packages/db/scripts/seed.ts +14 -0
- package/template/packages/db/src/client.ts +22 -0
- package/template/packages/db/src/index.ts +4 -0
- package/template/packages/db/src/schema/index.ts +1 -0
- package/template/packages/db/src/schema/users.ts +14 -0
- package/template/packages/db/src/users.ts +16 -0
- package/template/packages/db/tsconfig.json +4 -0
- package/template/packages/storage/package.json +24 -0
- package/template/packages/storage/src/index.ts +1 -0
- package/template/packages/storage/src/s3.test.ts +86 -0
- package/template/packages/storage/src/s3.ts +86 -0
- package/template/packages/storage/src/supabase.ts +69 -0
- package/template/packages/storage/src/types.ts +18 -0
- package/template/packages/storage/tsconfig.json +4 -0
- package/template/packages/ui/components.json +21 -0
- package/template/packages/ui/package.json +32 -0
- package/template/packages/ui/src/components/badge.tsx +48 -0
- package/template/packages/ui/src/components/breadcrumb.tsx +102 -0
- package/template/packages/ui/src/components/button.tsx +57 -0
- package/template/packages/ui/src/components/card.tsx +87 -0
- package/template/packages/ui/src/components/input.tsx +19 -0
- package/template/packages/ui/src/components/label.tsx +19 -0
- package/template/packages/ui/src/components/separator.tsx +20 -0
- package/template/packages/ui/src/components/sheet.tsx +125 -0
- package/template/packages/ui/src/components/sidebar.tsx +692 -0
- package/template/packages/ui/src/components/skeleton.tsx +13 -0
- package/template/packages/ui/src/components/switch.tsx +31 -0
- package/template/packages/ui/src/components/table.tsx +88 -0
- package/template/packages/ui/src/components/tooltip.tsx +53 -0
- package/template/packages/ui/src/hooks/use-mobile.ts +19 -0
- package/template/packages/ui/src/lib/utils.ts +1 -0
- package/template/packages/ui/src/styles/globals.css +126 -0
- package/template/packages/ui/tsconfig.json +19 -0
- package/template/playwright.config.ts +23 -0
- package/template/pnpm-lock.yaml +4987 -0
- package/template/pnpm-workspace.yaml +3 -0
- package/template/tsconfig.base.json +16 -0
- package/template/turbo.json +17 -0
- package/template/vitest.config.ts +10 -0
- package/template.lock.json +187 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `create-clubedge-app` are documented here.
|
|
4
4
|
|
|
5
|
+
## 0.4.0
|
|
6
|
+
|
|
7
|
+
- Default to Starter `v0.4.0`, which adds the TanStack Start app and template schema 2.
|
|
8
|
+
- Add `--framework next|tanstack-start`, and ask which framework to use when the Starter offers several. Next.js stays the default.
|
|
9
|
+
- Read template schema 2, which describes each framework's app, environment example, and Dockerfile. The selected app is moved to `apps/web`, the others are left out, and `pnpm-lock.yaml` is kept in step so frozen installs work.
|
|
10
|
+
- Record the chosen framework in the generated `package.json` and `README.md`.
|
|
11
|
+
- Test generated projects for both frameworks in CI and in the release smoke test.
|
|
12
|
+
|
|
13
|
+
## 0.3.0
|
|
14
|
+
|
|
15
|
+
- Default to Starter `v0.3.0`, which adds the `clubedge.template.json` template manifest.
|
|
16
|
+
- Rewrite the CLI in TypeScript, organized into argument parsing, planning, execution, and steps.
|
|
17
|
+
- Bundle the pinned Starter release into the package. The default scaffold no longer downloads from GitHub or requires Git.
|
|
18
|
+
- Read the Starter's `clubedge.template.json` manifest and refuse Starters with a newer template schema.
|
|
19
|
+
- Add `--dry-run`, `--yes`, and `--template-dir`.
|
|
20
|
+
- Remove everything written when scaffolding fails, instead of leaving a partial project.
|
|
21
|
+
- Check the Node.js version before starting, and fall back to `corepack pnpm` when `pnpm` is not on the path.
|
|
22
|
+
- Never copy local environment files, dependencies, or build output from a template directory, even when it sits inside another Git repository.
|
|
23
|
+
|
|
5
24
|
## 0.2.1
|
|
6
25
|
|
|
7
26
|
- Publish the default Starter pin in the `clubedge` field of `package.json`. The CLI and release workflow read it from there, and the npm registry exposes it so the website always shows the Starter each CLI version scaffolds.
|
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://github.com/Clubedge/create-clubedge-app/actions/workflows/ci.yml)
|
|
4
4
|
[](LICENSE)
|
|
5
5
|
|
|
6
|
-
Create a Next.js application from the [Clubedge Starter](https://github.com/Clubedge/clubedge-starter) reference implementation.
|
|
6
|
+
Create a Next.js or TanStack Start application from the [Clubedge Starter](https://github.com/Clubedge/clubedge-starter) reference implementation.
|
|
7
7
|
|
|
8
8
|
The CLI downloads a tested Starter release, names the generated project, creates `apps/web/.env.local` from the example, initializes Git, and installs dependencies. The Starter remains the source of truth for the generated architecture.
|
|
9
9
|
|
|
@@ -12,34 +12,34 @@ The CLI downloads a tested Starter release, names the generated project, creates
|
|
|
12
12
|
Each CLI release is tested against one specific Starter release:
|
|
13
13
|
|
|
14
14
|
```text
|
|
15
|
-
create-clubedge-app v0.
|
|
15
|
+
create-clubedge-app v0.4.0
|
|
16
16
|
|
|
|
17
17
|
v
|
|
18
|
-
Clubedge Starter v0.
|
|
19
|
-
commit
|
|
18
|
+
Clubedge Starter v0.4.0
|
|
19
|
+
commit fc01d33bb1a3944e099a1750679be87a96ff9a22
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
The current relationship is:
|
|
23
23
|
|
|
24
24
|
| CLI release | Default Starter release | Meaning |
|
|
25
25
|
| --- | --- | --- |
|
|
26
|
-
| `create-clubedge-app@0.
|
|
26
|
+
| `create-clubedge-app@0.4.0` | `clubedge-starter@v0.4.0` | The CLI's required, tested default |
|
|
27
27
|
|
|
28
28
|
This means the same CLI version always scaffolds the same Starter revision by default. The CLI does not silently follow Starter `main`.
|
|
29
29
|
|
|
30
|
-
The `v0.
|
|
31
|
-
`
|
|
30
|
+
The `v0.4.0` tag is expected to resolve to commit
|
|
31
|
+
`fc01d33bb1a3944e099a1750679be87a96ff9a22`. The CLI verifies this before
|
|
32
32
|
scaffolding with the default reference and fails rather than silently using a
|
|
33
33
|
moved tag.
|
|
34
34
|
|
|
35
|
-
When the Starter changes, its maintainers first publish a new versioned release, such as `v0.
|
|
35
|
+
When the Starter changes, its maintainers first publish a new versioned release, such as `v0.4.0`. The CLI is then updated to use that release, all generated-project checks must pass, and a new CLI version is published. This keeps Starter and CLI releases independently versioned while preserving a tested compatibility relationship.
|
|
36
36
|
|
|
37
37
|
## Requirements
|
|
38
38
|
|
|
39
39
|
- Node.js 22.12 or newer.
|
|
40
|
-
- pnpm 10.9.0 or newer
|
|
40
|
+
- pnpm 10.9.0 or newer. The generated project is a pnpm workspace, so dependencies are installed with pnpm even when you start the CLI with `npx`; the CLI falls back to `corepack pnpm` when `pnpm` is not on your path.
|
|
41
41
|
- Git, when using the default Git initialization.
|
|
42
|
-
- Internet access to
|
|
42
|
+
- Internet access to install dependencies. The default Starter release ships inside the CLI package, so GitHub is only contacted for `--ref`.
|
|
43
43
|
|
|
44
44
|
## Usage
|
|
45
45
|
|
|
@@ -68,58 +68,89 @@ When no destination is provided, the CLI asks where to create the project:
|
|
|
68
68
|
pnpm dlx @clubedge/create-clubedge-app
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
### Choosing a framework
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
Usage: pnpm dlx @clubedge/create-clubedge-app [project-directory] [options]
|
|
73
|
+
The Starter ships the same application for two React frameworks. Next.js is the default; pick TanStack Start with `--framework`, or choose interactively when the Starter offers more than one:
|
|
75
74
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
--no-git Skip Git initialization
|
|
79
|
-
-h, --help Show help
|
|
80
|
-
-v, --version Show the CLI version
|
|
75
|
+
```sh
|
|
76
|
+
pnpm dlx @clubedge/create-clubedge-app my-app --framework tanstack-start
|
|
81
77
|
```
|
|
82
78
|
|
|
83
|
-
|
|
79
|
+
| `--framework` | App | Production output |
|
|
80
|
+
| ---------------- | --------------------------- | ----------------------------- |
|
|
81
|
+
| `next` | Next.js App Router | Next.js standalone build |
|
|
82
|
+
| `tanstack-start` | TanStack Start with Vite | Nitro `.output` server bundle |
|
|
84
83
|
|
|
85
|
-
|
|
86
|
-
pnpm dlx @clubedge/create-clubedge-app my-app --ref <starter-tag-or-commit>
|
|
87
|
-
pnpm dlx @clubedge/create-clubedge-app my-app --no-install
|
|
88
|
-
```
|
|
84
|
+
Either way, the app lives in `apps/web` and uses the same shared packages, so the project layout, root scripts, and Docker commands are identical.
|
|
89
85
|
|
|
90
|
-
|
|
86
|
+
## Options
|
|
91
87
|
|
|
92
|
-
|
|
88
|
+
```text
|
|
89
|
+
Usage: pnpm dlx @clubedge/create-clubedge-app [project-directory] [options]
|
|
90
|
+
|
|
91
|
+
--framework <id> App framework: next (default) or tanstack-start
|
|
92
|
+
--ref <ref> Download this Starter tag, branch, or commit from GitHub instead
|
|
93
|
+
--template-dir <path> Scaffold from a local Starter checkout (for Starter development)
|
|
94
|
+
--dry-run Show what would be created without writing anything
|
|
95
|
+
-y, --yes Accept defaults and never prompt (default directory: my-app)
|
|
96
|
+
--no-install Skip dependency installation
|
|
97
|
+
--no-git Skip Git initialization
|
|
98
|
+
-h, --help Show help
|
|
99
|
+
-v, --version Show the CLI version
|
|
100
|
+
```
|
|
93
101
|
|
|
94
|
-
|
|
102
|
+
The target directory must be empty or not exist. The CLI never deletes or overwrites existing files, and if scaffolding fails it removes whatever it wrote, so a failed run leaves nothing behind.
|
|
103
|
+
|
|
104
|
+
Every generated project records its CLI version, Starter repository, Starter ref, Starter commit, and framework in `package.json` and `README.md`.
|
|
95
105
|
|
|
96
106
|
```sh
|
|
97
|
-
#
|
|
98
|
-
pnpm dlx @clubedge/create-clubedge-app my-app
|
|
107
|
+
# Preview the files and edits without writing anything
|
|
108
|
+
pnpm dlx @clubedge/create-clubedge-app my-app --dry-run
|
|
109
|
+
|
|
110
|
+
# Non-interactive, for scripts and CI
|
|
111
|
+
pnpm dlx @clubedge/create-clubedge-app my-app --yes --no-git --framework tanstack-start
|
|
99
112
|
|
|
100
113
|
# Try an unreleased Starter change
|
|
101
114
|
pnpm dlx @clubedge/create-clubedge-app my-app --ref main
|
|
102
115
|
|
|
103
116
|
# Reproduce a specific Starter release or commit
|
|
104
|
-
pnpm dlx @clubedge/create-clubedge-app my-app --ref v0.
|
|
117
|
+
pnpm dlx @clubedge/create-clubedge-app my-app --ref v0.4.0
|
|
105
118
|
pnpm dlx @clubedge/create-clubedge-app my-app --ref <commit-sha>
|
|
119
|
+
|
|
120
|
+
# Test local Starter changes before releasing them
|
|
121
|
+
pnpm dlx @clubedge/create-clubedge-app my-app --template-dir ../clubedge-starter
|
|
106
122
|
```
|
|
107
123
|
|
|
108
124
|
## How it works
|
|
109
125
|
|
|
110
|
-
|
|
126
|
+
Each CLI release bundles one Starter release. When the release is built, `scripts/bundle-template.mjs` clones the pinned Starter tag, verifies that it resolves to the pinned commit, and copies its tracked files into the package (`template/` and `template.lock.json`). Running the CLI then needs no GitHub access for the default Starter.
|
|
127
|
+
|
|
128
|
+
The Starter describes itself in `clubedge.template.json`: its app directory, site config, environment files, Docker image name, and files that stay out of generated projects. Schema 2 manifests also list each framework's app directory, environment example, and Dockerfile. The CLI moves the selected framework's app to `apps/web` (renaming its package to `@clubedge/web`), moves its environment example and Dockerfile to the project root, leaves the other frameworks out, and removes their entries from `pnpm-lock.yaml` so `pnpm install --frozen-lockfile` keeps working. The CLI refuses a Starter whose manifest schema is newer than it understands and asks you to update. Starters before v0.3.0 have no manifest and use the previous layout.
|
|
129
|
+
|
|
130
|
+
The CLI first builds a plan (the files to copy and the edits to make), which `--dry-run` prints, and then applies it. The source is organized the same way:
|
|
131
|
+
|
|
132
|
+
```text
|
|
133
|
+
src/
|
|
134
|
+
cli/ argument parsing and terminal output
|
|
135
|
+
core/ manifest, template sources, customizations, planning, and execution
|
|
136
|
+
steps/ Git initialization and dependency installation
|
|
137
|
+
utils/ file listing and copying, processes, and naming
|
|
138
|
+
```
|
|
111
139
|
|
|
112
140
|
## Development
|
|
113
141
|
|
|
114
142
|
```sh
|
|
115
143
|
corepack enable
|
|
116
144
|
pnpm install
|
|
117
|
-
|
|
118
|
-
pnpm
|
|
119
|
-
pnpm
|
|
145
|
+
pnpm check # type-check sources and tests
|
|
146
|
+
pnpm test # unit and scaffolding tests
|
|
147
|
+
pnpm build # compile src/ to dist/
|
|
148
|
+
node ./bin/create.mjs my-app --template-dir ../clubedge-starter --dry-run
|
|
120
149
|
```
|
|
121
150
|
|
|
122
|
-
|
|
151
|
+
Without a bundled template, a local build downloads the pinned Starter release from GitHub and verifies its commit. Run `pnpm bundle-template` to bundle it, or `pnpm bundle-template --from ../clubedge-starter` to bundle a local checkout.
|
|
152
|
+
|
|
153
|
+
CI packs the CLI with `npm pack`, scaffolds a clean project from the packed tarball, installs its dependencies, runs linting, typechecking, unit tests, browser checks, and a production build, then starts the generated app and checks the landing page, sign-up page, dashboard, health endpoint, logo, and favicon. A scheduled, non-blocking compatibility job also checks Starter `main`.
|
|
123
154
|
|
|
124
155
|
## Release workflow
|
|
125
156
|
|
|
@@ -128,11 +159,11 @@ CI scaffolds a clean project from the pinned Starter release, installs its depen
|
|
|
128
159
|
1. Make and validate changes in `clubedge-starter`.
|
|
129
160
|
2. Run lint, typecheck, unit tests, browser tests, and production build.
|
|
130
161
|
3. Update the Starter package versions.
|
|
131
|
-
4. Commit `main`, create a release tag such as `v0.
|
|
162
|
+
4. Commit `main`, create a release tag such as `v0.4.0`, and publish the Starter release.
|
|
132
163
|
|
|
133
164
|
### CLI maintainers
|
|
134
165
|
|
|
135
|
-
1.
|
|
166
|
+
1. Set `clubedge.starterRef` and `clubedge.starterCommit` in [`package.json`](package.json) to the new tested Starter tag, and bump `version`.
|
|
136
167
|
2. Update the version relationship table and changelog.
|
|
137
168
|
3. Generate a clean project from that exact tag.
|
|
138
169
|
4. Run install, lint, typecheck, unit tests, browser tests, production build, and runtime smoke checks.
|