@appsbyme/create-basekit 1.0.1 → 1.0.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/README.md CHANGED
@@ -73,7 +73,9 @@ Useful flags: `--yes`, `--no-git`, `--no-install`, `--monorepo`, `--port-offset
73
73
  | `--yes`, `-y` | Non-interactive mode with defaults |
74
74
  | `--mobile` | Include Expo mobile app (BE + FE + mobile) |
75
75
  | `--mobile-only` | Backend + Expo mobile only (skip web frontend) |
76
- | `--ai-helpers` | Sync AI helper assets after scaffold |
76
+ | `--ai-helpers` | Sync AI helper assets after scaffold (also passes `--with-claude`) |
77
+
78
+ The Django backend installs **`appsbyme-basekit[cli]` from PyPI** by default. Kit authors can override with `BASEKIT_DJANGO_BASE=/path/to/basekit` or a local `../basekit` sibling checkout. Frontend `@appsbyme/basekit-*` packages always come from the public npm registry when you use `npx` (no local `basekit-web` needed).
77
79
 
78
80
  ## Development
79
81
 
@@ -5232,7 +5232,7 @@ function createSpinner(text) {
5232
5232
  init_cjs_shims();
5233
5233
  var import_fs2 = __toESM(require("fs"), 1);
5234
5234
  var import_path = __toESM(require("path"), 1);
5235
- var DJANGO_BASE_GIT_URL = "git+https://github.com/AppsByME-Dev/basekit.git";
5235
+ var DJANGO_BASE_PYPI_REQUIREMENT = "appsbyme-basekit[cli]==1.0.0";
5236
5236
  function getWebKitRootFromPackage() {
5237
5237
  let dir = import_path.default.resolve(__dirname);
5238
5238
  for (let i = 0; i < 6; i += 1) {
@@ -5245,6 +5245,12 @@ function getWebKitRootFromPackage() {
5245
5245
  }
5246
5246
  return import_path.default.resolve(__dirname, "../../..");
5247
5247
  }
5248
+ function djangoBasePipInstallArg(spec) {
5249
+ if (spec.kind === "pypi") {
5250
+ return spec.pipSpec;
5251
+ }
5252
+ return `appsbyme-basekit[cli] @ ${spec.pipSpec}`;
5253
+ }
5248
5254
  function isUsableCheckout(dir) {
5249
5255
  return import_fs2.default.existsSync(dir) && (import_fs2.default.existsSync(import_path.default.join(dir, "pyproject.toml")) || import_fs2.default.existsSync(import_path.default.join(dir, "setup.py")) || import_fs2.default.existsSync(import_path.default.join(dir, "setup.cfg")));
5250
5256
  }
@@ -5286,9 +5292,9 @@ function resolveDjangoBaseInstallSpec(opts) {
5286
5292
  }
5287
5293
  }
5288
5294
  return {
5289
- kind: "git",
5290
- pipSpec: DJANGO_BASE_GIT_URL,
5291
- label: "GitHub (AppsByME-Dev/basekit)"
5295
+ kind: "pypi",
5296
+ pipSpec: DJANGO_BASE_PYPI_REQUIREMENT,
5297
+ label: "PyPI (appsbyme-basekit)"
5292
5298
  };
5293
5299
  }
5294
5300
 
@@ -5313,17 +5319,18 @@ async function scaffoldBackend(opts) {
5313
5319
  projectRoot,
5314
5320
  webKitRoot: getWebKitRootFromPackage()
5315
5321
  });
5316
- const installSpinner = createSpinner(`Installing basekit[cli] from ${djangoBase.label}\u2026`);
5322
+ const pipArg = djangoBasePipInstallArg(djangoBase);
5323
+ const installSpinner = createSpinner(`Installing appsbyme-basekit[cli] from ${djangoBase.label}\u2026`);
5317
5324
  const installResult = await execAsync(
5318
- `"${pip}" install "basekit[cli] @ ${djangoBase.pipSpec}"`,
5325
+ `"${pip}" install "${pipArg}"`,
5319
5326
  backendDir
5320
5327
  );
5321
5328
  if (!installResult.success) {
5322
- installSpinner.fail("Failed to install basekit[cli]");
5329
+ installSpinner.fail("Failed to install appsbyme-basekit[cli]");
5323
5330
  logError(installResult.error ?? "unknown error");
5324
5331
  throw new Error("pip install failed");
5325
5332
  }
5326
- installSpinner.succeed(`basekit[cli] installed (${djangoBase.label})`);
5333
+ installSpinner.succeed(`appsbyme-basekit[cli] installed (${djangoBase.label})`);
5327
5334
  const configPath = writeTempConfig(projectName, portOffset, includeMobile);
5328
5335
  logStep("Running basekit init (answer the remaining prompts)");
5329
5336
  console.log("");
@@ -6408,7 +6415,7 @@ async function runWebCommand(argv) {
6408
6415
  return;
6409
6416
  }
6410
6417
  if (args.includes("--version") || args.includes("-v")) {
6411
- console.log("1.0.1");
6418
+ console.log("1.0.3");
6412
6419
  return;
6413
6420
  }
6414
6421
  printBanner();
@@ -6612,7 +6619,7 @@ async function runWebCommand(argv) {
6612
6619
  function printBanner() {
6613
6620
  console.log("");
6614
6621
  console.log(" \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557");
6615
- console.log(` \u2551 create-basekit web v${"1.0.1"} \u2551`);
6622
+ console.log(` \u2551 create-basekit web v${"1.0.3"} \u2551`);
6616
6623
  console.log(" \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D");
6617
6624
  console.log("");
6618
6625
  }
@@ -7274,7 +7281,7 @@ async function runMobileCommand(argv) {
7274
7281
  return;
7275
7282
  }
7276
7283
  if (args.includes("--version") || args.includes("-v")) {
7277
- console.log("1.0.1");
7284
+ console.log("1.0.3");
7278
7285
  return;
7279
7286
  }
7280
7287
  printBanner2();
@@ -7377,7 +7384,7 @@ async function runMobileCommand(argv) {
7377
7384
  function printBanner2() {
7378
7385
  console.log("");
7379
7386
  console.log(" \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557");
7380
- console.log(` \u2551 create-basekit mobile v${"1.0.1"} \u2551`);
7387
+ console.log(` \u2551 create-basekit mobile v${"1.0.3"} \u2551`);
7381
7388
  console.log(" \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D");
7382
7389
  console.log("");
7383
7390
  console.log(" Expo (React Native) app scaffolder");
@@ -7496,6 +7503,20 @@ var import_path13 = __toESM(require("path"), 1);
7496
7503
  init_cjs_shims();
7497
7504
  var import_fs12 = __toESM(require("fs"), 1);
7498
7505
  var import_path12 = __toESM(require("path"), 1);
7506
+ var import_node_url3 = require("url");
7507
+ function resolveNewProjectFixturePath(fromDir = import_path12.default.dirname((0, import_node_url3.fileURLToPath)(importMetaUrl))) {
7508
+ const candidates = [
7509
+ import_path12.default.join(fromDir, "../../../fixtures/new_project.py"),
7510
+ import_path12.default.join(fromDir, "../fixtures/new_project.py")
7511
+ ];
7512
+ for (const candidate of candidates) {
7513
+ const resolved = import_path12.default.resolve(candidate);
7514
+ if (import_fs12.default.existsSync(resolved)) return resolved;
7515
+ }
7516
+ throw new Error(
7517
+ `fixtures/new_project.py missing (searched: ${candidates.map((c) => import_path12.default.resolve(c)).join(", ")})`
7518
+ );
7519
+ }
7499
7520
  function deriveProjectIdentity(projectName) {
7500
7521
  const slug = toPythonSlug(projectName);
7501
7522
  const name = projectName.split(/[-_\s]+/).filter(Boolean).map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
@@ -7514,7 +7535,7 @@ function writeProjectIdentity(projectRoot, projectName) {
7514
7535
  );
7515
7536
  const scriptsDir = import_path12.default.join(projectRoot, "scripts");
7516
7537
  mkdirp(scriptsDir);
7517
- const fixturePath = import_path12.default.resolve(__dirname, "../../../fixtures/new_project.py");
7538
+ const fixturePath = resolveNewProjectFixturePath();
7518
7539
  const scriptPath = import_path12.default.join(scriptsDir, "new_project.py");
7519
7540
  import_fs12.default.copyFileSync(fixturePath, scriptPath);
7520
7541
  import_fs12.default.chmodSync(scriptPath, 493);
@@ -8560,7 +8581,7 @@ async function runAppCommand(argv) {
8560
8581
  return;
8561
8582
  }
8562
8583
  if (args.includes("--version") || args.includes("-V")) {
8563
- console.log("1.0.1");
8584
+ console.log("1.0.3");
8564
8585
  return;
8565
8586
  }
8566
8587
  printBanner3();
@@ -8722,7 +8743,7 @@ function initRootGit(projectRoot, includeMobile = false) {
8722
8743
  function printBanner3() {
8723
8744
  console.log("");
8724
8745
  console.log(" \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557");
8725
- console.log(` \u2551 create-basekit app v${"1.0.1"} \u2551`);
8746
+ console.log(` \u2551 create-basekit app v${"1.0.3"} \u2551`);
8726
8747
  console.log(" \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D");
8727
8748
  console.log("");
8728
8749
  console.log(" Full-stack project scaffolder");
@@ -8730,7 +8751,7 @@ function printBanner3() {
8730
8751
  }
8731
8752
  function printHelp3() {
8732
8753
  console.log(`
8733
- create-basekit app v${"1.0.1"}
8754
+ create-basekit app v${"1.0.3"}
8734
8755
 
8735
8756
  Usage: npx @appsbyme/create-basekit app [project-name] [options]
8736
8757
 
@@ -5365,7 +5365,7 @@ async function runMobileCommand(argv) {
5365
5365
  return;
5366
5366
  }
5367
5367
  if (args.includes("--version") || args.includes("-v")) {
5368
- console.log("1.0.1");
5368
+ console.log("1.0.3");
5369
5369
  return;
5370
5370
  }
5371
5371
  printBanner();
@@ -5468,7 +5468,7 @@ async function runMobileCommand(argv) {
5468
5468
  function printBanner() {
5469
5469
  console.log("");
5470
5470
  console.log(" \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557");
5471
- console.log(` \u2551 create-basekit mobile v${"1.0.1"} \u2551`);
5471
+ console.log(` \u2551 create-basekit mobile v${"1.0.3"} \u2551`);
5472
5472
  console.log(" \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D");
5473
5473
  console.log("");
5474
5474
  console.log(" Expo (React Native) app scaffolder");
@@ -5957,7 +5957,7 @@ async function runWebCommand(argv) {
5957
5957
  return;
5958
5958
  }
5959
5959
  if (args.includes("--version") || args.includes("-v")) {
5960
- console.log("1.0.1");
5960
+ console.log("1.0.3");
5961
5961
  return;
5962
5962
  }
5963
5963
  printBanner();
@@ -6161,7 +6161,7 @@ async function runWebCommand(argv) {
6161
6161
  function printBanner() {
6162
6162
  console.log("");
6163
6163
  console.log(" \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557");
6164
- console.log(` \u2551 create-basekit web v${"1.0.1"} \u2551`);
6164
+ console.log(` \u2551 create-basekit web v${"1.0.3"} \u2551`);
6165
6165
  console.log(" \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D");
6166
6166
  console.log("");
6167
6167
  }
package/dist/index.cjs CHANGED
@@ -5974,7 +5974,7 @@ async function runWebCommand(argv) {
5974
5974
  return;
5975
5975
  }
5976
5976
  if (args.includes("--version") || args.includes("-v")) {
5977
- console.log("1.0.1");
5977
+ console.log("1.0.3");
5978
5978
  return;
5979
5979
  }
5980
5980
  printBanner();
@@ -6178,7 +6178,7 @@ async function runWebCommand(argv) {
6178
6178
  function printBanner() {
6179
6179
  console.log("");
6180
6180
  console.log(" \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557");
6181
- console.log(` \u2551 create-basekit web v${"1.0.1"} \u2551`);
6181
+ console.log(` \u2551 create-basekit web v${"1.0.3"} \u2551`);
6182
6182
  console.log(" \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D");
6183
6183
  console.log("");
6184
6184
  }
@@ -6716,7 +6716,7 @@ async function runMobileCommand(argv) {
6716
6716
  return;
6717
6717
  }
6718
6718
  if (args.includes("--version") || args.includes("-v")) {
6719
- console.log("1.0.1");
6719
+ console.log("1.0.3");
6720
6720
  return;
6721
6721
  }
6722
6722
  printBanner2();
@@ -6819,7 +6819,7 @@ async function runMobileCommand(argv) {
6819
6819
  function printBanner2() {
6820
6820
  console.log("");
6821
6821
  console.log(" \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557");
6822
- console.log(` \u2551 create-basekit mobile v${"1.0.1"} \u2551`);
6822
+ console.log(` \u2551 create-basekit mobile v${"1.0.3"} \u2551`);
6823
6823
  console.log(" \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D");
6824
6824
  console.log("");
6825
6825
  console.log(" Expo (React Native) app scaffolder");
@@ -7175,6 +7175,12 @@ function getWebKitRootFromPackage() {
7175
7175
  }
7176
7176
  return import_path6.default.resolve(__dirname, "../../..");
7177
7177
  }
7178
+ function djangoBasePipInstallArg(spec) {
7179
+ if (spec.kind === "pypi") {
7180
+ return spec.pipSpec;
7181
+ }
7182
+ return `appsbyme-basekit[cli] @ ${spec.pipSpec}`;
7183
+ }
7178
7184
  function isUsableCheckout(dir) {
7179
7185
  return import_fs7.default.existsSync(dir) && (import_fs7.default.existsSync(import_path6.default.join(dir, "pyproject.toml")) || import_fs7.default.existsSync(import_path6.default.join(dir, "setup.py")) || import_fs7.default.existsSync(import_path6.default.join(dir, "setup.cfg")));
7180
7186
  }
@@ -7216,19 +7222,19 @@ function resolveDjangoBaseInstallSpec(opts) {
7216
7222
  }
7217
7223
  }
7218
7224
  return {
7219
- kind: "git",
7220
- pipSpec: DJANGO_BASE_GIT_URL,
7221
- label: "GitHub (AppsByME-Dev/basekit)"
7225
+ kind: "pypi",
7226
+ pipSpec: DJANGO_BASE_PYPI_REQUIREMENT,
7227
+ label: "PyPI (appsbyme-basekit)"
7222
7228
  };
7223
7229
  }
7224
- var import_fs7, import_path6, DJANGO_BASE_GIT_URL;
7230
+ var import_fs7, import_path6, DJANGO_BASE_PYPI_REQUIREMENT;
7225
7231
  var init_resolve_django_base = __esm({
7226
7232
  "src/commands/app/resolve-django-base.ts"() {
7227
7233
  "use strict";
7228
7234
  init_cjs_shims();
7229
7235
  import_fs7 = __toESM(require("fs"), 1);
7230
7236
  import_path6 = __toESM(require("path"), 1);
7231
- DJANGO_BASE_GIT_URL = "git+https://github.com/AppsByME-Dev/basekit.git";
7237
+ DJANGO_BASE_PYPI_REQUIREMENT = "appsbyme-basekit[cli]==1.0.0";
7232
7238
  }
7233
7239
  });
7234
7240
 
@@ -7253,17 +7259,18 @@ async function scaffoldBackend(opts) {
7253
7259
  projectRoot,
7254
7260
  webKitRoot: getWebKitRootFromPackage()
7255
7261
  });
7256
- const installSpinner = createSpinner3(`Installing basekit[cli] from ${djangoBase.label}\u2026`);
7262
+ const pipArg = djangoBasePipInstallArg(djangoBase);
7263
+ const installSpinner = createSpinner3(`Installing appsbyme-basekit[cli] from ${djangoBase.label}\u2026`);
7257
7264
  const installResult = await execAsync3(
7258
- `"${pip}" install "basekit[cli] @ ${djangoBase.pipSpec}"`,
7265
+ `"${pip}" install "${pipArg}"`,
7259
7266
  backendDir
7260
7267
  );
7261
7268
  if (!installResult.success) {
7262
- installSpinner.fail("Failed to install basekit[cli]");
7269
+ installSpinner.fail("Failed to install appsbyme-basekit[cli]");
7263
7270
  logError3(installResult.error ?? "unknown error");
7264
7271
  throw new Error("pip install failed");
7265
7272
  }
7266
- installSpinner.succeed(`basekit[cli] installed (${djangoBase.label})`);
7273
+ installSpinner.succeed(`appsbyme-basekit[cli] installed (${djangoBase.label})`);
7267
7274
  const configPath = writeTempConfig(projectName, portOffset, includeMobile);
7268
7275
  logStep3("Running basekit init (answer the remaining prompts)");
7269
7276
  console.log("");
@@ -7619,6 +7626,19 @@ var init_mobile2 = __esm({
7619
7626
  });
7620
7627
 
7621
7628
  // src/commands/app/project-identity.ts
7629
+ function resolveNewProjectFixturePath(fromDir = import_path12.default.dirname((0, import_node_url3.fileURLToPath)(importMetaUrl))) {
7630
+ const candidates = [
7631
+ import_path12.default.join(fromDir, "../../../fixtures/new_project.py"),
7632
+ import_path12.default.join(fromDir, "../fixtures/new_project.py")
7633
+ ];
7634
+ for (const candidate of candidates) {
7635
+ const resolved = import_path12.default.resolve(candidate);
7636
+ if (import_fs12.default.existsSync(resolved)) return resolved;
7637
+ }
7638
+ throw new Error(
7639
+ `fixtures/new_project.py missing (searched: ${candidates.map((c) => import_path12.default.resolve(c)).join(", ")})`
7640
+ );
7641
+ }
7622
7642
  function deriveProjectIdentity(projectName) {
7623
7643
  const slug = toPythonSlug(projectName);
7624
7644
  const name = projectName.split(/[-_\s]+/).filter(Boolean).map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
@@ -7637,18 +7657,19 @@ function writeProjectIdentity(projectRoot, projectName) {
7637
7657
  );
7638
7658
  const scriptsDir = import_path12.default.join(projectRoot, "scripts");
7639
7659
  mkdirp(scriptsDir);
7640
- const fixturePath = import_path12.default.resolve(__dirname, "../../../fixtures/new_project.py");
7660
+ const fixturePath = resolveNewProjectFixturePath();
7641
7661
  const scriptPath = import_path12.default.join(scriptsDir, "new_project.py");
7642
7662
  import_fs12.default.copyFileSync(fixturePath, scriptPath);
7643
7663
  import_fs12.default.chmodSync(scriptPath, 493);
7644
7664
  }
7645
- var import_fs12, import_path12;
7665
+ var import_fs12, import_path12, import_node_url3;
7646
7666
  var init_project_identity = __esm({
7647
7667
  "src/commands/app/project-identity.ts"() {
7648
7668
  "use strict";
7649
7669
  init_cjs_shims();
7650
7670
  import_fs12 = __toESM(require("fs"), 1);
7651
7671
  import_path12 = __toESM(require("path"), 1);
7672
+ import_node_url3 = require("url");
7652
7673
  init_utils3();
7653
7674
  }
7654
7675
  });
@@ -8725,7 +8746,7 @@ async function runAppCommand(argv) {
8725
8746
  return;
8726
8747
  }
8727
8748
  if (args.includes("--version") || args.includes("-V")) {
8728
- console.log("1.0.1");
8749
+ console.log("1.0.3");
8729
8750
  return;
8730
8751
  }
8731
8752
  printBanner3();
@@ -8887,7 +8908,7 @@ function initRootGit(projectRoot, includeMobile = false) {
8887
8908
  function printBanner3() {
8888
8909
  console.log("");
8889
8910
  console.log(" \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557");
8890
- console.log(` \u2551 create-basekit app v${"1.0.1"} \u2551`);
8911
+ console.log(` \u2551 create-basekit app v${"1.0.3"} \u2551`);
8891
8912
  console.log(" \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D");
8892
8913
  console.log("");
8893
8914
  console.log(" Full-stack project scaffolder");
@@ -8895,7 +8916,7 @@ function printBanner3() {
8895
8916
  }
8896
8917
  function printHelp3() {
8897
8918
  console.log(`
8898
- create-basekit app v${"1.0.1"}
8919
+ create-basekit app v${"1.0.3"}
8899
8920
 
8900
8921
  Usage: npx @appsbyme/create-basekit app [project-name] [options]
8901
8922
 
@@ -9066,7 +9087,7 @@ function printHelp4() {
9066
9087
  console.log("");
9067
9088
  }
9068
9089
  function printVersion() {
9069
- console.log("1.0.1");
9090
+ console.log("1.0.3");
9070
9091
  }
9071
9092
  async function main() {
9072
9093
  const argv = process.argv.slice(2);
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appsbyme/create-basekit",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Scaffold Basekit web, mobile, or full-stack apps",
5
5
  "type": "module",
6
6
  "bin": "./dist/index.cjs",
@@ -23,7 +23,7 @@
23
23
  "prompts": "^2.4.2"
24
24
  },
25
25
  "devDependencies": {
26
- "@appsbyme/basekit-tsconfig": "workspace:^",
26
+ "@appsbyme/basekit-tsconfig": "^1.0.0",
27
27
  "@types/node": "^24.0.14",
28
28
  "@types/prompts": "^2.4.9",
29
29
  "tsup": "^8.4.0",
@@ -52,4 +52,4 @@
52
52
  "engines": {
53
53
  "node": ">=18"
54
54
  }
55
- }
55
+ }
File without changes
@@ -0,0 +1,2 @@
1
+ # @appsbyme/basekit-* packages are published to the public npm registry.
2
+ # No special registry config is required.
File without changes
File without changes
@@ -1 +0,0 @@
1
- nodeLinker: node-modules
@@ -1,57 +0,0 @@
1
- name: CI
2
-
3
- on:
4
- push:
5
- branches: [main]
6
- pull_request:
7
- branches: [main]
8
- workflow_dispatch: # Allow manual re-triggers (e.g. after transient GitHub infra failures)
9
-
10
- jobs:
11
- check:
12
- name: Type-check · Lint · Test
13
- runs-on: ubuntu-latest
14
-
15
- steps:
16
- - name: Checkout
17
- uses: actions/checkout@v4
18
-
19
- - name: Enable Corepack (Yarn 4)
20
- run: corepack enable
21
-
22
- - name: Setup Node.js
23
- uses: actions/setup-node@v4
24
- with:
25
- node-version: 22
26
-
27
- - name: Install dependencies
28
- run: yarn install --no-immutable
29
-
30
- - name: Type-check
31
- run: yarn type-check
32
-
33
- - name: Lint (ESLint)
34
- run: yarn lint
35
-
36
- - name: Lint (Stylelint)
37
- run: yarn stylelint
38
-
39
- - name: Tests (with coverage gates)
40
- run: yarn vitest run --coverage --reporter=verbose
41
-
42
- - name: Build app
43
- run: yarn build
44
-
45
- - name: Install Playwright browsers
46
- run: npx playwright install --with-deps chromium
47
-
48
- - name: E2E tests (Playwright)
49
- run: yarn e2e
50
-
51
- - name: Upload Playwright report
52
- uses: actions/upload-artifact@v4
53
- if: ${{ !cancelled() }}
54
- with:
55
- name: playwright-report
56
- path: playwright-report/
57
- retention-days: 14
@@ -1,43 +0,0 @@
1
- name: Build & Deploy
2
-
3
- on:
4
- push:
5
- branches: [main]
6
- workflow_dispatch:
7
-
8
- jobs:
9
- build:
10
- name: Build
11
- runs-on: ubuntu-latest
12
-
13
- steps:
14
- - name: Checkout
15
- uses: actions/checkout@v4
16
-
17
- - name: Enable Corepack (Yarn 4)
18
- run: corepack enable
19
-
20
- - name: Setup Node.js
21
- uses: actions/setup-node@v4
22
- with:
23
- node-version: 22
24
-
25
- - name: Install dependencies
26
- run: yarn install --no-immutable
27
-
28
- - name: Build app
29
- run: yarn build
30
-
31
- # Uncomment and configure for your deployment target:
32
- # - name: Deploy to GitHub Pages
33
- # uses: peaceiris/actions-gh-pages@v4
34
- # with:
35
- # github_token: ${{ secrets.GITHUB_TOKEN }}
36
- # publish_dir: ./dist
37
-
38
- - name: Upload build artifact
39
- uses: actions/upload-artifact@v4
40
- with:
41
- name: dist
42
- path: dist/
43
- retention-days: 30
@@ -1,12 +0,0 @@
1
- nodeLinker: node-modules
2
-
3
- # Public @appsbyme packages resolve from registry.npmjs.org (default).
4
- # No npmScopes needed unless you later switch to a private registry.
5
-
6
- packageExtensions:
7
- "@appsbyme/basekit-ui@*":
8
- dependencies:
9
- "@appsbyme/basekit-utils": "^1.0.0"
10
- "@appsbyme/basekit-hooks@*":
11
- dependencies:
12
- "@appsbyme/basekit-utils": "^1.0.0"