@percher/core 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/commands/billing.d.ts +43 -0
  2. package/dist/commands/billing.d.ts.map +1 -0
  3. package/dist/commands/billing.js +65 -0
  4. package/dist/commands/billing.js.map +1 -0
  5. package/dist/commands/data.d.ts +2 -0
  6. package/dist/commands/data.d.ts.map +1 -1
  7. package/dist/commands/data.js +1 -0
  8. package/dist/commands/data.js.map +1 -1
  9. package/dist/commands/delete.d.ts +15 -0
  10. package/dist/commands/delete.d.ts.map +1 -0
  11. package/dist/commands/delete.js +26 -0
  12. package/dist/commands/delete.js.map +1 -0
  13. package/dist/commands/deploys.d.ts +45 -0
  14. package/dist/commands/deploys.d.ts.map +1 -0
  15. package/dist/commands/deploys.js +73 -0
  16. package/dist/commands/deploys.js.map +1 -0
  17. package/dist/commands/diagnose.d.ts +75 -0
  18. package/dist/commands/diagnose.d.ts.map +1 -0
  19. package/dist/commands/diagnose.js +102 -0
  20. package/dist/commands/diagnose.js.map +1 -0
  21. package/dist/commands/doctor.d.ts.map +1 -1
  22. package/dist/commands/doctor.js +58 -13
  23. package/dist/commands/doctor.js.map +1 -1
  24. package/dist/commands/export.d.ts +39 -0
  25. package/dist/commands/export.d.ts.map +1 -0
  26. package/dist/commands/export.js +107 -0
  27. package/dist/commands/export.js.map +1 -0
  28. package/dist/commands/import-project.d.ts +21 -0
  29. package/dist/commands/import-project.d.ts.map +1 -0
  30. package/dist/commands/import-project.js +134 -0
  31. package/dist/commands/import-project.js.map +1 -0
  32. package/dist/commands/insights.d.ts +44 -0
  33. package/dist/commands/insights.d.ts.map +1 -0
  34. package/dist/commands/insights.js +54 -0
  35. package/dist/commands/insights.js.map +1 -0
  36. package/dist/commands/mcp.d.ts +29 -0
  37. package/dist/commands/mcp.d.ts.map +1 -0
  38. package/dist/commands/mcp.js +35 -0
  39. package/dist/commands/mcp.js.map +1 -0
  40. package/dist/commands/publish.d.ts +35 -1
  41. package/dist/commands/publish.d.ts.map +1 -1
  42. package/dist/commands/publish.js +163 -9
  43. package/dist/commands/publish.js.map +1 -1
  44. package/dist/commands/push.d.ts.map +1 -1
  45. package/dist/commands/push.js +8 -4
  46. package/dist/commands/push.js.map +1 -1
  47. package/dist/commands/rename.d.ts +21 -0
  48. package/dist/commands/rename.d.ts.map +1 -0
  49. package/dist/commands/rename.js +18 -0
  50. package/dist/commands/rename.js.map +1 -0
  51. package/dist/commands/reset-superuser.d.ts +16 -0
  52. package/dist/commands/reset-superuser.d.ts.map +1 -0
  53. package/dist/commands/reset-superuser.js +17 -0
  54. package/dist/commands/reset-superuser.js.map +1 -0
  55. package/dist/error-classifier.d.ts +16 -0
  56. package/dist/error-classifier.d.ts.map +1 -1
  57. package/dist/error-classifier.js +135 -3
  58. package/dist/error-classifier.js.map +1 -1
  59. package/dist/errors.d.ts +1 -1
  60. package/dist/errors.d.ts.map +1 -1
  61. package/dist/errors.js.map +1 -1
  62. package/dist/index.d.ts +14 -3
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +14 -3
  65. package/dist/index.js.map +1 -1
  66. package/dist/integrations.d.ts +24 -0
  67. package/dist/integrations.d.ts.map +1 -0
  68. package/dist/integrations.js +106 -0
  69. package/dist/integrations.js.map +1 -0
  70. package/dist/plans.d.ts +36 -0
  71. package/dist/plans.d.ts.map +1 -1
  72. package/dist/plans.js +76 -1
  73. package/dist/plans.js.map +1 -1
  74. package/dist/qr.d.ts +5 -0
  75. package/dist/qr.d.ts.map +1 -0
  76. package/dist/qr.js +10 -0
  77. package/dist/qr.js.map +1 -0
  78. package/dist/templates.d.ts +24 -0
  79. package/dist/templates.d.ts.map +1 -1
  80. package/dist/templates.js +331 -0
  81. package/dist/templates.js.map +1 -1
  82. package/package.json +1 -1
package/dist/plans.js CHANGED
@@ -5,7 +5,7 @@ export const PLAN_CATALOG = {
5
5
  limits: {
6
6
  apps: 2,
7
7
  deploysPerMonth: 50,
8
- deploysPerHour: 10,
8
+ deploysPerHour: 12,
9
9
  memory: "256mb",
10
10
  cpu: 0.25,
11
11
  pids: 128,
@@ -15,6 +15,15 @@ export const PLAN_CATALOG = {
15
15
  autoSleep: true,
16
16
  inactivityWarningDays: 30,
17
17
  inactivityGraceDays: 7,
18
+ deployRetention: 5,
19
+ logRetentionDays: 1,
20
+ buildLogRetentionDays: 3,
21
+ cronJobs: 1,
22
+ storageMb: 500,
23
+ instances: 1,
24
+ slaUptime: null,
25
+ supportResponseTime: null,
26
+ kvStorageMb: 10,
18
27
  },
19
28
  },
20
29
  starter: {
@@ -33,6 +42,15 @@ export const PLAN_CATALOG = {
33
42
  autoSleep: false,
34
43
  inactivityWarningDays: 60,
35
44
  inactivityGraceDays: 7,
45
+ deployRetention: 15,
46
+ logRetentionDays: 7,
47
+ buildLogRetentionDays: 14,
48
+ cronJobs: 3,
49
+ storageMb: 5000,
50
+ instances: 1,
51
+ slaUptime: null,
52
+ supportResponseTime: "72h email",
53
+ kvStorageMb: 50,
36
54
  },
37
55
  },
38
56
  maker: {
@@ -51,6 +69,15 @@ export const PLAN_CATALOG = {
51
69
  autoSleep: false,
52
70
  inactivityWarningDays: 60,
53
71
  inactivityGraceDays: 7,
72
+ deployRetention: 30,
73
+ logRetentionDays: 30,
74
+ buildLogRetentionDays: 30,
75
+ cronJobs: 10,
76
+ storageMb: 50_000,
77
+ instances: 2,
78
+ slaUptime: "99.5%",
79
+ supportResponseTime: "24h email",
80
+ kvStorageMb: 200,
54
81
  },
55
82
  },
56
83
  pro: {
@@ -69,6 +96,15 @@ export const PLAN_CATALOG = {
69
96
  autoSleep: false,
70
97
  inactivityWarningDays: 60,
71
98
  inactivityGraceDays: 7,
99
+ deployRetention: 60,
100
+ logRetentionDays: 90,
101
+ buildLogRetentionDays: 90,
102
+ cronJobs: 25,
103
+ storageMb: 200_000,
104
+ instances: 4,
105
+ slaUptime: "99.9%",
106
+ supportResponseTime: "8h email + priority Discord",
107
+ kvStorageMb: 1000,
72
108
  },
73
109
  },
74
110
  };
@@ -81,4 +117,43 @@ export function getPlanLimits(plan) {
81
117
  export function getPlanInfo(plan) {
82
118
  return PLAN_CATALOG[plan] ?? PLAN_CATALOG.free;
83
119
  }
120
+ /**
121
+ * Plan limits with admin-role bypass applied.
122
+ *
123
+ * Admin users (those whose email is in `PERCHER_ADMIN_EMAILS`) get
124
+ * pro-tier resource ceilings — memory, CPU, instances, storage —
125
+ * plus `Number.POSITIVE_INFINITY` for every cap that would otherwise
126
+ * cause platform-driven friction when they're operating the
127
+ * platform: app count, deploy rate, preview slots, custom domains,
128
+ * cron jobs, KV size, retention windows. Auto-sleep is forced off
129
+ * and inactivity windows are essentially infinite so admin apps
130
+ * never get hibernated or suspended underneath them.
131
+ *
132
+ * Pure function, no side effects — callers compute `isAdmin` from
133
+ * the user record (typically `isAdminEmail(user.email)`) and pass
134
+ * it in. Non-admin behavior is byte-identical to the previous
135
+ * `getPlanLimits` path.
136
+ */
137
+ export function getEffectivePlanLimits(plan, isAdmin = false) {
138
+ if (!isAdmin)
139
+ return getPlanLimits(plan);
140
+ const pro = PLAN_CATALOG.pro.limits;
141
+ const INF = Number.POSITIVE_INFINITY;
142
+ return {
143
+ ...pro,
144
+ apps: INF,
145
+ deploysPerMonth: "unlimited",
146
+ deploysPerHour: INF,
147
+ activePreviewsPerApp: INF,
148
+ customDomainsPerApp: INF,
149
+ autoSleep: false,
150
+ inactivityWarningDays: INF,
151
+ inactivityGraceDays: INF,
152
+ deployRetention: INF,
153
+ logRetentionDays: INF,
154
+ buildLogRetentionDays: INF,
155
+ cronJobs: INF,
156
+ kvStorageMb: INF,
157
+ };
158
+ }
84
159
  //# sourceMappingURL=plans.js.map
package/dist/plans.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"plans.js","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"AAuBA,MAAM,CAAC,MAAM,YAAY,GAA6B;IACpD,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE;YACN,IAAI,EAAE,CAAC;YACP,eAAe,EAAE,EAAE;YACnB,cAAc,EAAE,EAAE;YAClB,MAAM,EAAE,OAAO;YACf,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,GAAG;YACT,oBAAoB,EAAE,CAAC;YACvB,mBAAmB,EAAE,CAAC;YACtB,mBAAmB,EAAE,KAAK;YAC1B,SAAS,EAAE,IAAI;YACf,qBAAqB,EAAE,EAAE;YACzB,mBAAmB,EAAE,CAAC;SACvB;KACF;IACD,OAAO,EAAE;QACP,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE;YACN,IAAI,EAAE,CAAC;YACP,eAAe,EAAE,GAAG;YACpB,cAAc,EAAE,EAAE;YAClB,MAAM,EAAE,OAAO;YACf,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,GAAG;YACT,oBAAoB,EAAE,CAAC;YACvB,mBAAmB,EAAE,CAAC;YACtB,mBAAmB,EAAE,IAAI;YACzB,SAAS,EAAE,KAAK;YAChB,qBAAqB,EAAE,EAAE;YACzB,mBAAmB,EAAE,CAAC;SACvB;KACF;IACD,KAAK,EAAE;QACL,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE;YACN,IAAI,EAAE,EAAE;YACR,eAAe,EAAE,GAAG;YACpB,cAAc,EAAE,EAAE;YAClB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,GAAG;YACT,oBAAoB,EAAE,CAAC;YACvB,mBAAmB,EAAE,CAAC;YACtB,mBAAmB,EAAE,IAAI;YACzB,SAAS,EAAE,KAAK;YAChB,qBAAqB,EAAE,EAAE;YACzB,mBAAmB,EAAE,CAAC;SACvB;KACF;IACD,GAAG,EAAE;QACH,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE;YACN,IAAI,EAAE,EAAE;YACR,eAAe,EAAE,WAAW;YAC5B,cAAc,EAAE,GAAG;YACnB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,IAAI;YACV,oBAAoB,EAAE,CAAC;YACvB,mBAAmB,EAAE,EAAE;YACvB,mBAAmB,EAAE,IAAI;YACzB,SAAS,EAAE,KAAK;YAChB,qBAAqB,EAAE,EAAE;YACzB,mBAAmB,EAAE,CAAC;SACvB;KACF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAa,CAAC;AAE9D,mEAAmE;AACnE,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,YAAY,CAAC,IAAc,CAAC,EAAE,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1E,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,YAAY,CAAC,IAAc,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"plans.js","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"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"}
package/dist/qr.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /** Generate a QR code as UTF-8 text for terminal output */
2
+ export declare function qrToTerminal(url: string): Promise<string>;
3
+ /** Generate a QR code as a data URI (PNG) for web/MCP use */
4
+ export declare function qrToDataUri(url: string): Promise<string>;
5
+ //# sourceMappingURL=qr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr.d.ts","sourceRoot":"","sources":["../src/qr.ts"],"names":[],"mappings":"AAEA,2DAA2D;AAC3D,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE/D;AAED,6DAA6D;AAC7D,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE9D"}
package/dist/qr.js ADDED
@@ -0,0 +1,10 @@
1
+ import QRCode from "qrcode";
2
+ /** Generate a QR code as UTF-8 text for terminal output */
3
+ export async function qrToTerminal(url) {
4
+ return QRCode.toString(url, { type: "utf8", margin: 1, scale: 1 });
5
+ }
6
+ /** Generate a QR code as a data URI (PNG) for web/MCP use */
7
+ export async function qrToDataUri(url) {
8
+ return QRCode.toDataURL(url, { margin: 1, scale: 4 });
9
+ }
10
+ //# sourceMappingURL=qr.js.map
package/dist/qr.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr.js","sourceRoot":"","sources":["../src/qr.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,2DAA2D;AAC3D,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAW;IAC5C,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW;IAC3C,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC"}
@@ -1,4 +1,28 @@
1
+ export type TemplateCategory = "static" | "api" | "fullstack" | "ai" | "blog" | "portfolio";
2
+ export type TemplateRuntime = "node" | "bun" | "python" | "static" | "docker";
3
+ export type TemplateDataMode = "none" | "pocketbase" | "postgres" | "external";
4
+ export interface TemplateMetadata {
5
+ id: string;
6
+ name: string;
7
+ description: string;
8
+ category: TemplateCategory;
9
+ runtime: TemplateRuntime;
10
+ framework?: string;
11
+ dataMode: TemplateDataMode;
12
+ /** Rough cost tier at steady state — "free" fits the free plan. */
13
+ costTier: "free" | "starter" | "maker";
14
+ tags: string[];
15
+ }
16
+ /**
17
+ * Template catalog — metadata for every bundled template.
18
+ * Add new templates here alongside the directory under packages/core/templates/.
19
+ */
20
+ export declare const TEMPLATE_CATALOG: Record<string, TemplateMetadata>;
1
21
  export declare function listTemplates(): string[];
22
+ /** Returns template metadata for all catalog entries that have a matching directory. */
23
+ export declare function listTemplateMetadata(): TemplateMetadata[];
24
+ /** Look up metadata for a single template, or null if missing. */
25
+ export declare function getTemplateMetadata(id: string): TemplateMetadata | null;
2
26
  export interface ScaffoldInput {
3
27
  template: string;
4
28
  appName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAOA,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAKxC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAwDrE"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,KAAK,GAAG,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,WAAW,CAAC;AAC5F,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC9E,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;AAE/E,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mEAAmE;IACnE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAsU7D,CAAC;AAEF,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAKxC;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,IAAI,gBAAgB,EAAE,CAGzD;AAED,kEAAkE;AAClE,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAEvE;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAwDrE"}
package/dist/templates.js CHANGED
@@ -2,12 +2,343 @@ import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSy
2
2
  import { basename, join, normalize, relative, resolve } from "node:path";
3
3
  const TEMPLATES_DIR = resolve(import.meta.dirname ?? __dirname, "../templates");
4
4
  const PLACEHOLDER = "__APP_NAME__";
5
+ /**
6
+ * Template catalog — metadata for every bundled template.
7
+ * Add new templates here alongside the directory under packages/core/templates/.
8
+ */
9
+ export const TEMPLATE_CATALOG = {
10
+ static: {
11
+ id: "static",
12
+ name: "Static site",
13
+ description: "Plain HTML/CSS/JS served by Caddy. No build, no server.",
14
+ category: "static",
15
+ runtime: "static",
16
+ dataMode: "none",
17
+ costTier: "free",
18
+ tags: ["html", "minimal", "landing-page"],
19
+ },
20
+ node: {
21
+ id: "node",
22
+ name: "Node.js",
23
+ description: "Vanilla Node.js HTTP server with bun runtime.",
24
+ category: "api",
25
+ runtime: "node",
26
+ dataMode: "none",
27
+ costTier: "free",
28
+ tags: ["node", "http", "backend"],
29
+ },
30
+ python: {
31
+ id: "python",
32
+ name: "Python",
33
+ description: "FastAPI server on Python runtime.",
34
+ category: "api",
35
+ runtime: "python",
36
+ framework: "fastapi",
37
+ dataMode: "none",
38
+ costTier: "free",
39
+ tags: ["python", "fastapi", "rest-api"],
40
+ },
41
+ nextjs: {
42
+ id: "nextjs",
43
+ name: "Next.js",
44
+ description: "Next.js App Router with server components. Add PocketBase later via percher.toml.",
45
+ category: "fullstack",
46
+ runtime: "node",
47
+ framework: "nextjs",
48
+ dataMode: "none",
49
+ costTier: "free",
50
+ tags: ["nextjs", "react", "fullstack", "ssr"],
51
+ },
52
+ hono: {
53
+ id: "hono",
54
+ name: "Hono",
55
+ description: "Lightweight TypeScript API server with Hono.",
56
+ category: "api",
57
+ runtime: "node",
58
+ framework: "hono",
59
+ dataMode: "none",
60
+ costTier: "free",
61
+ tags: ["hono", "typescript", "api"],
62
+ },
63
+ express: {
64
+ id: "express",
65
+ name: "Express",
66
+ description: "Classic Express.js REST API.",
67
+ category: "api",
68
+ runtime: "node",
69
+ framework: "express",
70
+ dataMode: "none",
71
+ costTier: "free",
72
+ tags: ["express", "rest-api", "node"],
73
+ },
74
+ fastify: {
75
+ id: "fastify",
76
+ name: "Fastify",
77
+ description: "High-performance Node.js API framework with built-in logging.",
78
+ category: "api",
79
+ runtime: "node",
80
+ framework: "fastify",
81
+ dataMode: "none",
82
+ costTier: "free",
83
+ tags: ["fastify", "rest-api", "node"],
84
+ },
85
+ bun: {
86
+ id: "bun",
87
+ name: "Bun HTTP",
88
+ description: "Zero-dependency HTTP server using Bun's built-in Bun.serve().",
89
+ category: "api",
90
+ runtime: "bun",
91
+ dataMode: "none",
92
+ costTier: "free",
93
+ tags: ["bun", "zero-deps", "minimal"],
94
+ },
95
+ flask: {
96
+ id: "flask",
97
+ name: "Flask",
98
+ description: "Minimal Python web framework with sensible defaults.",
99
+ category: "api",
100
+ runtime: "python",
101
+ framework: "flask",
102
+ dataMode: "none",
103
+ costTier: "free",
104
+ tags: ["flask", "python", "rest-api"],
105
+ },
106
+ sveltekit: {
107
+ id: "sveltekit",
108
+ name: "SvelteKit",
109
+ description: "SvelteKit with the Node adapter. Add PocketBase later via percher.toml.",
110
+ category: "fullstack",
111
+ runtime: "node",
112
+ framework: "sveltekit",
113
+ dataMode: "none",
114
+ costTier: "free",
115
+ tags: ["sveltekit", "svelte", "fullstack", "ssr"],
116
+ },
117
+ astro: {
118
+ id: "astro",
119
+ name: "Astro",
120
+ description: "Content-first static site with Astro. Build once, serve via Caddy.",
121
+ category: "static",
122
+ runtime: "static",
123
+ framework: "astro",
124
+ dataMode: "none",
125
+ costTier: "free",
126
+ tags: ["astro", "static", "content"],
127
+ },
128
+ remix: {
129
+ id: "remix",
130
+ name: "Remix",
131
+ description: "Remix fullstack with Vite + Node adapter. Nested routing, server loaders.",
132
+ category: "fullstack",
133
+ runtime: "node",
134
+ framework: "remix",
135
+ dataMode: "none",
136
+ costTier: "free",
137
+ tags: ["remix", "react", "fullstack", "ssr"],
138
+ },
139
+ nuxt: {
140
+ id: "nuxt",
141
+ name: "Nuxt 3",
142
+ description: "Nuxt 3 fullstack with Vue. Auto-imports, Nitro server, pages under pages/.",
143
+ category: "fullstack",
144
+ runtime: "node",
145
+ framework: "nuxt",
146
+ dataMode: "none",
147
+ costTier: "free",
148
+ tags: ["nuxt", "vue", "fullstack", "ssr"],
149
+ },
150
+ "vite-react": {
151
+ id: "vite-react",
152
+ name: "React (Vite SPA)",
153
+ description: "React SPA with Vite. Ships as static; add an API via percher.toml if needed.",
154
+ category: "static",
155
+ runtime: "static",
156
+ framework: "vite",
157
+ dataMode: "none",
158
+ costTier: "free",
159
+ tags: ["vite", "react", "spa"],
160
+ },
161
+ "vite-vue": {
162
+ id: "vite-vue",
163
+ name: "Vue (Vite SPA)",
164
+ description: "Vue 3 SPA with Vite. Ships as static; lightweight alternative to Nuxt.",
165
+ category: "static",
166
+ runtime: "static",
167
+ framework: "vite",
168
+ dataMode: "none",
169
+ costTier: "free",
170
+ tags: ["vite", "vue", "spa"],
171
+ },
172
+ preact: {
173
+ id: "preact",
174
+ name: "Preact",
175
+ description: "Preact SPA with Vite. React-compatible API at ~3kb runtime.",
176
+ category: "static",
177
+ runtime: "static",
178
+ framework: "preact",
179
+ dataMode: "none",
180
+ costTier: "free",
181
+ tags: ["preact", "vite", "spa", "minimal"],
182
+ },
183
+ solid: {
184
+ id: "solid",
185
+ name: "Solid",
186
+ description: "Solid.js SPA with Vite. Fine-grained reactivity, no virtual DOM.",
187
+ category: "static",
188
+ runtime: "static",
189
+ framework: "solid",
190
+ dataMode: "none",
191
+ costTier: "free",
192
+ tags: ["solid", "vite", "spa"],
193
+ },
194
+ elysia: {
195
+ id: "elysia",
196
+ name: "Elysia (Bun)",
197
+ description: "Elysia API server on the Bun runtime. End-to-end type safety, zero-config.",
198
+ category: "api",
199
+ runtime: "bun",
200
+ framework: "elysia",
201
+ dataMode: "none",
202
+ costTier: "free",
203
+ tags: ["elysia", "bun", "api", "typesafe"],
204
+ },
205
+ htmx: {
206
+ id: "htmx",
207
+ name: "HTMX + Express",
208
+ description: "Server-rendered HTML with HTMX fragments over Express. No build step, no JS framework.",
209
+ category: "fullstack",
210
+ runtime: "node",
211
+ framework: "express",
212
+ dataMode: "none",
213
+ costTier: "free",
214
+ tags: ["htmx", "express", "server-rendered", "no-build"],
215
+ },
216
+ django: {
217
+ id: "django",
218
+ name: "Django",
219
+ description: "Django fullstack with gunicorn. SQLite-backed by default; switch to Postgres via data.mode.",
220
+ category: "fullstack",
221
+ runtime: "python",
222
+ framework: "django",
223
+ dataMode: "none",
224
+ costTier: "free",
225
+ tags: ["django", "python", "fullstack"],
226
+ },
227
+ eleventy: {
228
+ id: "eleventy",
229
+ name: "Eleventy (11ty)",
230
+ description: "Markdown + Nunjucks static site generator. Builds to _site and serves via Caddy.",
231
+ category: "static",
232
+ runtime: "static",
233
+ framework: "eleventy",
234
+ dataMode: "none",
235
+ costTier: "free",
236
+ tags: ["eleventy", "11ty", "static", "markdown", "blog"],
237
+ },
238
+ hugo: {
239
+ id: "hugo",
240
+ name: "Hugo",
241
+ description: "Hugo static site generator (Go). Multi-stage Dockerfile builds with hugomods/hugo, serves via Caddy.",
242
+ category: "static",
243
+ runtime: "docker",
244
+ framework: "hugo",
245
+ dataMode: "none",
246
+ costTier: "free",
247
+ tags: ["hugo", "go", "static", "markdown", "blog"],
248
+ },
249
+ laravel: {
250
+ id: "laravel",
251
+ name: "Laravel (PHP)",
252
+ description: "Minimal PHP 8.3 starter with public/index.php routing. Upgrade to full Laravel with `composer create-project laravel/laravel .`.",
253
+ category: "fullstack",
254
+ runtime: "docker",
255
+ framework: "laravel",
256
+ dataMode: "none",
257
+ costTier: "free",
258
+ tags: ["laravel", "php", "fullstack"],
259
+ },
260
+ rails: {
261
+ id: "rails",
262
+ name: "Rails (Ruby)",
263
+ description: "Minimal Ruby 3.3 Rack app. Upgrade to full Rails by adding the rails gem and running `rails new . --force`.",
264
+ category: "fullstack",
265
+ runtime: "docker",
266
+ framework: "rails",
267
+ dataMode: "none",
268
+ costTier: "free",
269
+ tags: ["rails", "ruby", "rack", "fullstack"],
270
+ },
271
+ phoenix: {
272
+ id: "phoenix",
273
+ name: "Phoenix (Elixir)",
274
+ description: "Minimal Elixir Plug + Bandit app. Upgrade to full Phoenix by running `mix phx.new .` in the project directory.",
275
+ category: "fullstack",
276
+ runtime: "docker",
277
+ framework: "phoenix",
278
+ dataMode: "none",
279
+ costTier: "free",
280
+ tags: ["phoenix", "elixir", "plug", "fullstack"],
281
+ },
282
+ go: {
283
+ id: "go",
284
+ name: "Go",
285
+ description: "stdlib net/http server compiled to a static binary. Multi-stage build with distroless nonroot image.",
286
+ category: "api",
287
+ runtime: "docker",
288
+ framework: "go",
289
+ dataMode: "none",
290
+ costTier: "free",
291
+ tags: ["go", "golang", "api", "minimal"],
292
+ },
293
+ rust: {
294
+ id: "rust",
295
+ name: "Rust (axum)",
296
+ description: "Axum + Tokio on Rust 1.82. Multi-stage build on Alpine.",
297
+ category: "api",
298
+ runtime: "docker",
299
+ framework: "rust",
300
+ dataMode: "none",
301
+ costTier: "free",
302
+ tags: ["rust", "axum", "tokio", "api"],
303
+ },
304
+ dotnet: {
305
+ id: "dotnet",
306
+ name: ".NET 8 (ASP.NET Core)",
307
+ description: "Minimal ASP.NET Core Web API on .NET 8. Alpine SDK + ASP.NET runtime.",
308
+ category: "api",
309
+ runtime: "docker",
310
+ framework: "dotnet",
311
+ dataMode: "none",
312
+ costTier: "free",
313
+ tags: ["dotnet", "csharp", "aspnetcore", "api"],
314
+ },
315
+ java: {
316
+ id: "java",
317
+ name: "Java (JDK 21)",
318
+ description: "Plain com.sun.net.httpserver.HttpServer on Eclipse Temurin 21. No build tool — add Maven/Gradle when you need it.",
319
+ category: "api",
320
+ runtime: "docker",
321
+ framework: "java",
322
+ dataMode: "none",
323
+ costTier: "free",
324
+ tags: ["java", "jvm", "jdk", "minimal"],
325
+ },
326
+ };
5
327
  export function listTemplates() {
6
328
  return readdirSync(TEMPLATES_DIR).filter((name) => {
7
329
  const full = join(TEMPLATES_DIR, name);
8
330
  return statSync(full).isDirectory();
9
331
  });
10
332
  }
333
+ /** Returns template metadata for all catalog entries that have a matching directory. */
334
+ export function listTemplateMetadata() {
335
+ const available = new Set(listTemplates());
336
+ return Object.values(TEMPLATE_CATALOG).filter((m) => available.has(m.id));
337
+ }
338
+ /** Look up metadata for a single template, or null if missing. */
339
+ export function getTemplateMetadata(id) {
340
+ return TEMPLATE_CATALOG[id] ?? null;
341
+ }
11
342
  export function scaffoldTemplate(input) {
12
343
  const { template, appName, targetDir, force } = input;
13
344
  const available = listTemplates();
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@percher/core",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "Core logic and CLI commands for the Percher hosting platform",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",