sn-templates 1.0.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.
Files changed (352) hide show
  1. package/README.md +132 -0
  2. package/dist/bundled-templates.d.ts +10 -0
  3. package/dist/bundled-templates.js +39763 -0
  4. package/dist/bundled-templates.js.map +1 -0
  5. package/dist/index.d.ts +82 -0
  6. package/dist/index.js +100 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/resolve.d.ts +68 -0
  9. package/dist/resolve.js +198 -0
  10. package/dist/resolve.js.map +1 -0
  11. package/dist/types-CKgMHxb8.d.ts +161 -0
  12. package/icons/Home-Assistant.png +0 -0
  13. package/icons/ackee.png +0 -0
  14. package/icons/activepieces.png +0 -0
  15. package/icons/actual.png +0 -0
  16. package/icons/adguard-home.png +0 -0
  17. package/icons/adminer.png +0 -0
  18. package/icons/affine.png +0 -0
  19. package/icons/airflow.png +0 -0
  20. package/icons/akaunting.png +0 -0
  21. package/icons/apprise.png +0 -0
  22. package/icons/appsmith.png +0 -0
  23. package/icons/appwrite.png +0 -0
  24. package/icons/arangodb.png +0 -0
  25. package/icons/archivebox.png +0 -0
  26. package/icons/audiobookshelf.png +0 -0
  27. package/icons/authentik.png +0 -0
  28. package/icons/azuracast.png +0 -0
  29. package/icons/baikal.png +0 -0
  30. package/icons/baserow.png +0 -0
  31. package/icons/bazarr.png +0 -0
  32. package/icons/bitwardenrs.png +0 -0
  33. package/icons/bookstack.png +0 -0
  34. package/icons/botpress.png +0 -0
  35. package/icons/boxy-hq-only.png +0 -0
  36. package/icons/browserless.png +0 -0
  37. package/icons/btcpayserver.png +0 -0
  38. package/icons/budibase.png +0 -0
  39. package/icons/bugsink.png +0 -0
  40. package/icons/cachet.png +0 -0
  41. package/icons/calcom.png +0 -0
  42. package/icons/calibre.png +0 -0
  43. package/icons/call-only.png +0 -0
  44. package/icons/chadburn.png +0 -0
  45. package/icons/changedetection.png +0 -0
  46. package/icons/chaskiq.png +0 -0
  47. package/icons/chatwoot-botpress-bridge.png +0 -0
  48. package/icons/chatwoot.png +0 -0
  49. package/icons/checkmk.png +0 -0
  50. package/icons/chevereto.png +0 -0
  51. package/icons/claper.png +0 -0
  52. package/icons/clickhouse.png +0 -0
  53. package/icons/cloudflare-tunnel.png +0 -0
  54. package/icons/cloudflareddns.png +0 -0
  55. package/icons/cockpit.png +0 -0
  56. package/icons/codimd.png +0 -0
  57. package/icons/collabora-online.png +0 -0
  58. package/icons/commento.png +0 -0
  59. package/icons/coral.png +0 -0
  60. package/icons/corteza.png +0 -0
  61. package/icons/couchbase.png +0 -0
  62. package/icons/couchdb-clouseau.png +0 -0
  63. package/icons/couchdb.png +0 -0
  64. package/icons/countly.png +0 -0
  65. package/icons/crater.png +0 -0
  66. package/icons/cyberchef.png +0 -0
  67. package/icons/dagu.png +0 -0
  68. package/icons/databag.png +0 -0
  69. package/icons/davos.png +0 -0
  70. package/icons/default.png +0 -0
  71. package/icons/deluge.png +0 -0
  72. package/icons/directus-mysql-redis.png +0 -0
  73. package/icons/directus.png +0 -0
  74. package/icons/discourse.png +0 -0
  75. package/icons/docmost.png +0 -0
  76. package/icons/docuseal.png +0 -0
  77. package/icons/dokuwiki.png +0 -0
  78. package/icons/dolibarr.png +0 -0
  79. package/icons/dozzle.png +0 -0
  80. package/icons/dragonflydb.png +0 -0
  81. package/icons/drone-gitea.png +0 -0
  82. package/icons/droppy.png +0 -0
  83. package/icons/duplicati.png +0 -0
  84. package/icons/eclipse-mosquitto.png +0 -0
  85. package/icons/elasticsearch.png +0 -0
  86. package/icons/elkarbackup.png +0 -0
  87. package/icons/etesync.png +0 -0
  88. package/icons/etherpad.png +0 -0
  89. package/icons/evolution-api.png +0 -0
  90. package/icons/excalidraw.png +0 -0
  91. package/icons/ferretdb.png +0 -0
  92. package/icons/fider.png +0 -0
  93. package/icons/filebrowser.png +0 -0
  94. package/icons/filerun.png +0 -0
  95. package/icons/filestash.png +0 -0
  96. package/icons/filezilla.png +0 -0
  97. package/icons/firefly-iii.png +0 -0
  98. package/icons/fireflyiii-data-importer.png +0 -0
  99. package/icons/firefox.png +0 -0
  100. package/icons/flagsmith.png +0 -0
  101. package/icons/flaresolverr.png +0 -0
  102. package/icons/focalboard.png +0 -0
  103. package/icons/forge_minecraft.png +0 -0
  104. package/icons/formance-ledger.png +0 -0
  105. package/icons/formbricks.png +0 -0
  106. package/icons/formio.png +0 -0
  107. package/icons/foundryvtt.png +0 -0
  108. package/icons/freshrss.png +0 -0
  109. package/icons/fusionauth.png +0 -0
  110. package/icons/ghost-only.png +0 -0
  111. package/icons/ghost.png +0 -0
  112. package/icons/ghostfolio.png +0 -0
  113. package/icons/gitea.png +0 -0
  114. package/icons/gitlab-ce.png +0 -0
  115. package/icons/gitlab-runner.png +0 -0
  116. package/icons/glitchtip.png +0 -0
  117. package/icons/gogostv2.png +0 -0
  118. package/icons/gogostv3.png +0 -0
  119. package/icons/gotenberg.png +0 -0
  120. package/icons/gotify.png +0 -0
  121. package/icons/grafana.png +0 -0
  122. package/icons/greenlight.png +0 -0
  123. package/icons/grocy.png +0 -0
  124. package/icons/guacamole.png +0 -0
  125. package/icons/hasura-only.png +0 -0
  126. package/icons/hasura.png +0 -0
  127. package/icons/healthchecks.png +0 -0
  128. package/icons/hedgedoc.png +0 -0
  129. package/icons/heimdall.png +0 -0
  130. package/icons/homarr.png +0 -0
  131. package/icons/humhub.png +0 -0
  132. package/icons/imagor-local.png +0 -0
  133. package/icons/imagor-s3.png +0 -0
  134. package/icons/imgproxy.png +0 -0
  135. package/icons/immich.png +0 -0
  136. package/icons/influxdb.png +0 -0
  137. package/icons/influxdb2.png +0 -0
  138. package/icons/invidious.png +0 -0
  139. package/icons/invoiceninja.png +0 -0
  140. package/icons/invoiceplane.png +0 -0
  141. package/icons/iredmail.png +0 -0
  142. package/icons/jellyfin.png +0 -0
  143. package/icons/jenkins.png +0 -0
  144. package/icons/jitsi.png +0 -0
  145. package/icons/joomla.png +0 -0
  146. package/icons/joplin.png +0 -0
  147. package/icons/jsreport.png +0 -0
  148. package/icons/jupyter-lab.png +0 -0
  149. package/icons/jupyter-tensorflow.png +0 -0
  150. package/icons/kanboard-sqlite.png +0 -0
  151. package/icons/karakeep.png +0 -0
  152. package/icons/keila.png +0 -0
  153. package/icons/keycloak.png +0 -0
  154. package/icons/keydb.png +0 -0
  155. package/icons/kibana.png +0 -0
  156. package/icons/kimai2.png +0 -0
  157. package/icons/kutt.png +0 -0
  158. package/icons/lago.png +0 -0
  159. package/icons/languagetool.png +0 -0
  160. package/icons/leantime.png +0 -0
  161. package/icons/lemmy.png +0 -0
  162. package/icons/limesurvey.png +0 -0
  163. package/icons/linkace.png +0 -0
  164. package/icons/linkding.png +0 -0
  165. package/icons/linkwarden.png +0 -0
  166. package/icons/listmonk.png +0 -0
  167. package/icons/litestream.png +0 -0
  168. package/icons/logzio-collector.png +0 -0
  169. package/icons/lychee.png +0 -0
  170. package/icons/maildev.png +0 -0
  171. package/icons/mailtrain.png +0 -0
  172. package/icons/mariadb.png +0 -0
  173. package/icons/mastodon.png +0 -0
  174. package/icons/matomo.png +0 -0
  175. package/icons/matrix-conduit.png +0 -0
  176. package/icons/matrix-synapse.png +0 -0
  177. package/icons/mattermost-ee.png +0 -0
  178. package/icons/mattermost-team.png +0 -0
  179. package/icons/mautic-only.png +0 -0
  180. package/icons/mautic.png +0 -0
  181. package/icons/mayan-edms.png +0 -0
  182. package/icons/maybe-finance.png +0 -0
  183. package/icons/mcp-context-forge.png +0 -0
  184. package/icons/meilisearch.png +0 -0
  185. package/icons/memos.png +0 -0
  186. package/icons/mercure.png +0 -0
  187. package/icons/metabase.png +0 -0
  188. package/icons/minecraft-bedrock.png +0 -0
  189. package/icons/miniflux.png +0 -0
  190. package/icons/minio.png +0 -0
  191. package/icons/mixpost.png +0 -0
  192. package/icons/mongo-express.png +0 -0
  193. package/icons/mongodb-backup-s3.png +0 -0
  194. package/icons/mongodb.png +0 -0
  195. package/icons/monica.png +0 -0
  196. package/icons/moodle.png +0 -0
  197. package/icons/mssql.png +0 -0
  198. package/icons/mumble.png +0 -0
  199. package/icons/mysql-backup.png +0 -0
  200. package/icons/mysql.png +0 -0
  201. package/icons/n8n-io-queue-mode.png +0 -0
  202. package/icons/n8n-io-sqlite.png +0 -0
  203. package/icons/n8n-io.png +0 -0
  204. package/icons/neo4j.png +0 -0
  205. package/icons/netbox.png +0 -0
  206. package/icons/nextcloud.png +0 -0
  207. package/icons/nexus3.png +0 -0
  208. package/icons/nginx-redirect.png +0 -0
  209. package/icons/nginx-reverse-proxy.png +0 -0
  210. package/icons/nightscout.png +0 -0
  211. package/icons/nocodb.png +0 -0
  212. package/icons/node-exporter.png +0 -0
  213. package/icons/node-red.png +0 -0
  214. package/icons/novu.png +0 -0
  215. package/icons/ntfy.png +0 -0
  216. package/icons/odoo.png +0 -0
  217. package/icons/offen-docker-backup.png +0 -0
  218. package/icons/offen-local-docker-backup.png +0 -0
  219. package/icons/ohmyform.png +0 -0
  220. package/icons/ombi.png +0 -0
  221. package/icons/onlyoffice-documentserver.png +0 -0
  222. package/icons/openspeedtest.png +0 -0
  223. package/icons/openvpn-as.png +0 -0
  224. package/icons/openvscode-server.png +0 -0
  225. package/icons/orangehrm.png +0 -0
  226. package/icons/organizr.png +0 -0
  227. package/icons/outline.png +0 -0
  228. package/icons/overseerr.png +0 -0
  229. package/icons/owncast.png +0 -0
  230. package/icons/papercups.png +0 -0
  231. package/icons/paperless-ng.png +0 -0
  232. package/icons/paperless-ngx.png +0 -0
  233. package/icons/papermerge.png +0 -0
  234. package/icons/parse.png +0 -0
  235. package/icons/passbolt.png +0 -0
  236. package/icons/peertube.png +0 -0
  237. package/icons/penpot.png +0 -0
  238. package/icons/percona.png +0 -0
  239. package/icons/pgadmin4.png +0 -0
  240. package/icons/pgweb.png +0 -0
  241. package/icons/photoprism.png +0 -0
  242. package/icons/photoview.png +0 -0
  243. package/icons/phpldapadmin.png +0 -0
  244. package/icons/phpmyadmin.png +0 -0
  245. package/icons/picoshare.png +0 -0
  246. package/icons/pigallery2.png +0 -0
  247. package/icons/pihole.png +0 -0
  248. package/icons/planka.png +0 -0
  249. package/icons/plausible.png +0 -0
  250. package/icons/plex-arm.png +0 -0
  251. package/icons/plex.png +0 -0
  252. package/icons/pocketbase.png +0 -0
  253. package/icons/portainer.png +0 -0
  254. package/icons/poste-io.png +0 -0
  255. package/icons/postgres.png +0 -0
  256. package/icons/posthog.png +0 -0
  257. package/icons/prerender.png +0 -0
  258. package/icons/prisma.png +0 -0
  259. package/icons/privatebin.png +0 -0
  260. package/icons/projectsend.png +0 -0
  261. package/icons/prometheus.png +0 -0
  262. package/icons/prowlarr.png +0 -0
  263. package/icons/proxypool.png +0 -0
  264. package/icons/pydio.png +0 -0
  265. package/icons/pyload.png +0 -0
  266. package/icons/qbittorrent.png +0 -0
  267. package/icons/rabbitmq.png +0 -0
  268. package/icons/radarr.png +0 -0
  269. package/icons/radicale.png +0 -0
  270. package/icons/rainloop.png +0 -0
  271. package/icons/rallly.png +0 -0
  272. package/icons/raneto.png +0 -0
  273. package/icons/readarr.png +0 -0
  274. package/icons/redash.png +0 -0
  275. package/icons/redis.png +0 -0
  276. package/icons/redlib.png +0 -0
  277. package/icons/redmine-mysql.png +0 -0
  278. package/icons/redmine.png +0 -0
  279. package/icons/remark42.png +0 -0
  280. package/icons/request-baskets.png +0 -0
  281. package/icons/resilio-sync.png +0 -0
  282. package/icons/rethinkdb.png +0 -0
  283. package/icons/rocketchat.png +0 -0
  284. package/icons/rss-bridge.png +0 -0
  285. package/icons/rstudio.png +0 -0
  286. package/icons/rsync-looped.png +0 -0
  287. package/icons/rudder-stack.png +0 -0
  288. package/icons/rustfs.png +0 -0
  289. package/icons/saleor.png +0 -0
  290. package/icons/seafile-nomemcached.png +0 -0
  291. package/icons/seafile.png +0 -0
  292. package/icons/seatable.png +0 -0
  293. package/icons/sentry.png +0 -0
  294. package/icons/serpbear.png +0 -0
  295. package/icons/shiori.png +0 -0
  296. package/icons/shopware.png +0 -0
  297. package/icons/silex-platform.png +0 -0
  298. package/icons/sinusbot.png +0 -0
  299. package/icons/smokeping.png +0 -0
  300. package/icons/sonarqube.png +0 -0
  301. package/icons/sonarr.png +0 -0
  302. package/icons/sourcegraph.png +0 -0
  303. package/icons/spigot.png +0 -0
  304. package/icons/splitpro.png +0 -0
  305. package/icons/squidex.png +0 -0
  306. package/icons/sshd.png +0 -0
  307. package/icons/statping.png +0 -0
  308. package/icons/steam-openid-provider.png +0 -0
  309. package/icons/supabase-postgres.png +0 -0
  310. package/icons/supertokens.png +0 -0
  311. package/icons/surrealdb.png +0 -0
  312. package/icons/syncthing.png +0 -0
  313. package/icons/tautulli.png +0 -0
  314. package/icons/teamspeak.png +0 -0
  315. package/icons/telegraf.png +0 -0
  316. package/icons/teslamate.png +0 -0
  317. package/icons/the-lounge.png +0 -0
  318. package/icons/thingsboard-postgres.png +0 -0
  319. package/icons/thumbor.png +0 -0
  320. package/icons/tiddlywiki.png +0 -0
  321. package/icons/traggo.png +0 -0
  322. package/icons/transfer-sh.png +0 -0
  323. package/icons/transmission.png +0 -0
  324. package/icons/trudesk.png +0 -0
  325. package/icons/tubesync.png +0 -0
  326. package/icons/typebot.png +0 -0
  327. package/icons/ubooquity.png +0 -0
  328. package/icons/umami-only.png +0 -0
  329. package/icons/umami-postgresql.png +0 -0
  330. package/icons/uptime-kuma.png +0 -0
  331. package/icons/valheim.png +0 -0
  332. package/icons/valkey.png +0 -0
  333. package/icons/verdaccio.png +0 -0
  334. package/icons/vikunja.png +0 -0
  335. package/icons/vscode-coder.png +0 -0
  336. package/icons/vsts.png +0 -0
  337. package/icons/vvveb-only.png +0 -0
  338. package/icons/vvveb.png +0 -0
  339. package/icons/wakapi.png +0 -0
  340. package/icons/wallabag.png +0 -0
  341. package/icons/weblate.png +0 -0
  342. package/icons/webtop.png +0 -0
  343. package/icons/wekan.png +0 -0
  344. package/icons/wiki-js.png +0 -0
  345. package/icons/windmill.png +0 -0
  346. package/icons/woodpecker.png +0 -0
  347. package/icons/wordpress-only.png +0 -0
  348. package/icons/wordpress.png +0 -0
  349. package/icons/yagpdb.png +0 -0
  350. package/icons/yourls.png +0 -0
  351. package/icons/zammad.png +0 -0
  352. package/package.json +48 -0
package/README.md ADDED
@@ -0,0 +1,132 @@
1
+ # @pocketsync/templates
2
+
3
+ One-click app templates for [Senate PaaS](https://senate.sh).
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install github:SenateStack/senate-templates
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ### Loading Templates
14
+
15
+ ```typescript
16
+ import { setTemplates, getAllTemplates, getTemplateBySlug } from '@pocketsync/templates';
17
+
18
+ // Load templates from JSON files (Node.js)
19
+ import fs from 'fs';
20
+ import path from 'path';
21
+
22
+ const templatesDir = path.join(require.resolve('@pocketsync/templates'), '..', '..', 'templates');
23
+ const files = fs.readdirSync(templatesDir).filter(f => f.endsWith('.json'));
24
+ const templates = files.map(f => JSON.parse(fs.readFileSync(path.join(templatesDir, f), 'utf-8')));
25
+
26
+ setTemplates(templates);
27
+
28
+ // Now you can use the utilities
29
+ const allTemplates = getAllTemplates();
30
+ const postgres = getTemplateBySlug('postgres');
31
+ ```
32
+
33
+ ### Resolving Templates
34
+
35
+ ```typescript
36
+ import { resolveTemplate, validateRequest, toServicePayload } from '@pocketsync/templates/resolve';
37
+
38
+ // Validate user input
39
+ const errors = validateRequest(template, 'my-postgres', {
40
+ pg_user: 'admin',
41
+ pg_pass: 'secret123',
42
+ });
43
+
44
+ if (errors.length > 0) {
45
+ console.error('Validation errors:', errors);
46
+ }
47
+
48
+ // Resolve template with variables
49
+ const resolved = resolveTemplate(template, 'my-postgres', {
50
+ pg_user: 'admin',
51
+ pg_pass: 'secret123',
52
+ postgres_version: '15',
53
+ });
54
+
55
+ // Convert to service creation payload
56
+ const payload = toServicePayload(resolved, 'machine-id-123');
57
+ ```
58
+
59
+ ### Icons
60
+
61
+ Icons are included in the `icons/` directory. Copy them to your public folder:
62
+
63
+ ```javascript
64
+ // next.config.mjs
65
+ import { cpSync, existsSync } from 'fs';
66
+ import { dirname, join } from 'path';
67
+ import { fileURLToPath } from 'url';
68
+
69
+ const templatesPath = dirname(require.resolve('@pocketsync/templates'));
70
+ const iconsSource = join(templatesPath, 'icons');
71
+ const iconsDest = './public/images/templates';
72
+
73
+ if (existsSync(iconsSource)) {
74
+ cpSync(iconsSource, iconsDest, { recursive: true });
75
+ }
76
+ ```
77
+
78
+ ## Package Structure
79
+
80
+ ```
81
+ senate-templates/
82
+ ├── src/
83
+ │ ├── index.ts # Main exports
84
+ │ ├── types.ts # TypeScript types
85
+ │ ├── categories.ts # Category definitions
86
+ │ ├── utils.ts # Utility functions
87
+ │ └── resolve.ts # Variable resolution & compose generation
88
+ ├── templates/ # JSON template files
89
+ ├── icons/ # PNG icon files
90
+ └── converter/ # (Future) Template conversion tools
91
+ ```
92
+
93
+ ## Types
94
+
95
+ ### Template
96
+
97
+ ```typescript
98
+ interface Template {
99
+ id: string; // "caprover.postgres"
100
+ slug: string; // "postgres"
101
+ name: string; // "PostgreSQL"
102
+ description: string;
103
+ version: string;
104
+ logo: string; // "postgres.png"
105
+ categories: string[]; // ["database"]
106
+ official: boolean;
107
+ documentation: string;
108
+ services: Record<string, ServiceDef>;
109
+ variables: Variable[];
110
+ instructions: Instructions;
111
+ }
112
+ ```
113
+
114
+ ### Variable
115
+
116
+ ```typescript
117
+ interface Variable {
118
+ id: string;
119
+ label: string;
120
+ description?: string;
121
+ type: 'string' | 'password' | 'number' | 'boolean' | 'select' | 'text';
122
+ default?: string;
123
+ options?: string[];
124
+ required: boolean;
125
+ valid_regex?: string;
126
+ generate?: string; // "random_hex:32", "random_password:16"
127
+ }
128
+ ```
129
+
130
+ ## License
131
+
132
+ MIT
@@ -0,0 +1,10 @@
1
+ import { T as Template } from './types-CKgMHxb8.js';
2
+
3
+ /**
4
+ * Auto-generated bundled templates for browser use.
5
+ * DO NOT EDIT - this file is generated by scripts/bundle-templates.mjs
6
+ */
7
+
8
+ declare const bundledTemplates: Template[];
9
+
10
+ export { bundledTemplates };