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.
- package/README.md +132 -0
- package/dist/bundled-templates.d.ts +10 -0
- package/dist/bundled-templates.js +39763 -0
- package/dist/bundled-templates.js.map +1 -0
- package/dist/index.d.ts +82 -0
- package/dist/index.js +100 -0
- package/dist/index.js.map +1 -0
- package/dist/resolve.d.ts +68 -0
- package/dist/resolve.js +198 -0
- package/dist/resolve.js.map +1 -0
- package/dist/types-CKgMHxb8.d.ts +161 -0
- package/icons/Home-Assistant.png +0 -0
- package/icons/ackee.png +0 -0
- package/icons/activepieces.png +0 -0
- package/icons/actual.png +0 -0
- package/icons/adguard-home.png +0 -0
- package/icons/adminer.png +0 -0
- package/icons/affine.png +0 -0
- package/icons/airflow.png +0 -0
- package/icons/akaunting.png +0 -0
- package/icons/apprise.png +0 -0
- package/icons/appsmith.png +0 -0
- package/icons/appwrite.png +0 -0
- package/icons/arangodb.png +0 -0
- package/icons/archivebox.png +0 -0
- package/icons/audiobookshelf.png +0 -0
- package/icons/authentik.png +0 -0
- package/icons/azuracast.png +0 -0
- package/icons/baikal.png +0 -0
- package/icons/baserow.png +0 -0
- package/icons/bazarr.png +0 -0
- package/icons/bitwardenrs.png +0 -0
- package/icons/bookstack.png +0 -0
- package/icons/botpress.png +0 -0
- package/icons/boxy-hq-only.png +0 -0
- package/icons/browserless.png +0 -0
- package/icons/btcpayserver.png +0 -0
- package/icons/budibase.png +0 -0
- package/icons/bugsink.png +0 -0
- package/icons/cachet.png +0 -0
- package/icons/calcom.png +0 -0
- package/icons/calibre.png +0 -0
- package/icons/call-only.png +0 -0
- package/icons/chadburn.png +0 -0
- package/icons/changedetection.png +0 -0
- package/icons/chaskiq.png +0 -0
- package/icons/chatwoot-botpress-bridge.png +0 -0
- package/icons/chatwoot.png +0 -0
- package/icons/checkmk.png +0 -0
- package/icons/chevereto.png +0 -0
- package/icons/claper.png +0 -0
- package/icons/clickhouse.png +0 -0
- package/icons/cloudflare-tunnel.png +0 -0
- package/icons/cloudflareddns.png +0 -0
- package/icons/cockpit.png +0 -0
- package/icons/codimd.png +0 -0
- package/icons/collabora-online.png +0 -0
- package/icons/commento.png +0 -0
- package/icons/coral.png +0 -0
- package/icons/corteza.png +0 -0
- package/icons/couchbase.png +0 -0
- package/icons/couchdb-clouseau.png +0 -0
- package/icons/couchdb.png +0 -0
- package/icons/countly.png +0 -0
- package/icons/crater.png +0 -0
- package/icons/cyberchef.png +0 -0
- package/icons/dagu.png +0 -0
- package/icons/databag.png +0 -0
- package/icons/davos.png +0 -0
- package/icons/default.png +0 -0
- package/icons/deluge.png +0 -0
- package/icons/directus-mysql-redis.png +0 -0
- package/icons/directus.png +0 -0
- package/icons/discourse.png +0 -0
- package/icons/docmost.png +0 -0
- package/icons/docuseal.png +0 -0
- package/icons/dokuwiki.png +0 -0
- package/icons/dolibarr.png +0 -0
- package/icons/dozzle.png +0 -0
- package/icons/dragonflydb.png +0 -0
- package/icons/drone-gitea.png +0 -0
- package/icons/droppy.png +0 -0
- package/icons/duplicati.png +0 -0
- package/icons/eclipse-mosquitto.png +0 -0
- package/icons/elasticsearch.png +0 -0
- package/icons/elkarbackup.png +0 -0
- package/icons/etesync.png +0 -0
- package/icons/etherpad.png +0 -0
- package/icons/evolution-api.png +0 -0
- package/icons/excalidraw.png +0 -0
- package/icons/ferretdb.png +0 -0
- package/icons/fider.png +0 -0
- package/icons/filebrowser.png +0 -0
- package/icons/filerun.png +0 -0
- package/icons/filestash.png +0 -0
- package/icons/filezilla.png +0 -0
- package/icons/firefly-iii.png +0 -0
- package/icons/fireflyiii-data-importer.png +0 -0
- package/icons/firefox.png +0 -0
- package/icons/flagsmith.png +0 -0
- package/icons/flaresolverr.png +0 -0
- package/icons/focalboard.png +0 -0
- package/icons/forge_minecraft.png +0 -0
- package/icons/formance-ledger.png +0 -0
- package/icons/formbricks.png +0 -0
- package/icons/formio.png +0 -0
- package/icons/foundryvtt.png +0 -0
- package/icons/freshrss.png +0 -0
- package/icons/fusionauth.png +0 -0
- package/icons/ghost-only.png +0 -0
- package/icons/ghost.png +0 -0
- package/icons/ghostfolio.png +0 -0
- package/icons/gitea.png +0 -0
- package/icons/gitlab-ce.png +0 -0
- package/icons/gitlab-runner.png +0 -0
- package/icons/glitchtip.png +0 -0
- package/icons/gogostv2.png +0 -0
- package/icons/gogostv3.png +0 -0
- package/icons/gotenberg.png +0 -0
- package/icons/gotify.png +0 -0
- package/icons/grafana.png +0 -0
- package/icons/greenlight.png +0 -0
- package/icons/grocy.png +0 -0
- package/icons/guacamole.png +0 -0
- package/icons/hasura-only.png +0 -0
- package/icons/hasura.png +0 -0
- package/icons/healthchecks.png +0 -0
- package/icons/hedgedoc.png +0 -0
- package/icons/heimdall.png +0 -0
- package/icons/homarr.png +0 -0
- package/icons/humhub.png +0 -0
- package/icons/imagor-local.png +0 -0
- package/icons/imagor-s3.png +0 -0
- package/icons/imgproxy.png +0 -0
- package/icons/immich.png +0 -0
- package/icons/influxdb.png +0 -0
- package/icons/influxdb2.png +0 -0
- package/icons/invidious.png +0 -0
- package/icons/invoiceninja.png +0 -0
- package/icons/invoiceplane.png +0 -0
- package/icons/iredmail.png +0 -0
- package/icons/jellyfin.png +0 -0
- package/icons/jenkins.png +0 -0
- package/icons/jitsi.png +0 -0
- package/icons/joomla.png +0 -0
- package/icons/joplin.png +0 -0
- package/icons/jsreport.png +0 -0
- package/icons/jupyter-lab.png +0 -0
- package/icons/jupyter-tensorflow.png +0 -0
- package/icons/kanboard-sqlite.png +0 -0
- package/icons/karakeep.png +0 -0
- package/icons/keila.png +0 -0
- package/icons/keycloak.png +0 -0
- package/icons/keydb.png +0 -0
- package/icons/kibana.png +0 -0
- package/icons/kimai2.png +0 -0
- package/icons/kutt.png +0 -0
- package/icons/lago.png +0 -0
- package/icons/languagetool.png +0 -0
- package/icons/leantime.png +0 -0
- package/icons/lemmy.png +0 -0
- package/icons/limesurvey.png +0 -0
- package/icons/linkace.png +0 -0
- package/icons/linkding.png +0 -0
- package/icons/linkwarden.png +0 -0
- package/icons/listmonk.png +0 -0
- package/icons/litestream.png +0 -0
- package/icons/logzio-collector.png +0 -0
- package/icons/lychee.png +0 -0
- package/icons/maildev.png +0 -0
- package/icons/mailtrain.png +0 -0
- package/icons/mariadb.png +0 -0
- package/icons/mastodon.png +0 -0
- package/icons/matomo.png +0 -0
- package/icons/matrix-conduit.png +0 -0
- package/icons/matrix-synapse.png +0 -0
- package/icons/mattermost-ee.png +0 -0
- package/icons/mattermost-team.png +0 -0
- package/icons/mautic-only.png +0 -0
- package/icons/mautic.png +0 -0
- package/icons/mayan-edms.png +0 -0
- package/icons/maybe-finance.png +0 -0
- package/icons/mcp-context-forge.png +0 -0
- package/icons/meilisearch.png +0 -0
- package/icons/memos.png +0 -0
- package/icons/mercure.png +0 -0
- package/icons/metabase.png +0 -0
- package/icons/minecraft-bedrock.png +0 -0
- package/icons/miniflux.png +0 -0
- package/icons/minio.png +0 -0
- package/icons/mixpost.png +0 -0
- package/icons/mongo-express.png +0 -0
- package/icons/mongodb-backup-s3.png +0 -0
- package/icons/mongodb.png +0 -0
- package/icons/monica.png +0 -0
- package/icons/moodle.png +0 -0
- package/icons/mssql.png +0 -0
- package/icons/mumble.png +0 -0
- package/icons/mysql-backup.png +0 -0
- package/icons/mysql.png +0 -0
- package/icons/n8n-io-queue-mode.png +0 -0
- package/icons/n8n-io-sqlite.png +0 -0
- package/icons/n8n-io.png +0 -0
- package/icons/neo4j.png +0 -0
- package/icons/netbox.png +0 -0
- package/icons/nextcloud.png +0 -0
- package/icons/nexus3.png +0 -0
- package/icons/nginx-redirect.png +0 -0
- package/icons/nginx-reverse-proxy.png +0 -0
- package/icons/nightscout.png +0 -0
- package/icons/nocodb.png +0 -0
- package/icons/node-exporter.png +0 -0
- package/icons/node-red.png +0 -0
- package/icons/novu.png +0 -0
- package/icons/ntfy.png +0 -0
- package/icons/odoo.png +0 -0
- package/icons/offen-docker-backup.png +0 -0
- package/icons/offen-local-docker-backup.png +0 -0
- package/icons/ohmyform.png +0 -0
- package/icons/ombi.png +0 -0
- package/icons/onlyoffice-documentserver.png +0 -0
- package/icons/openspeedtest.png +0 -0
- package/icons/openvpn-as.png +0 -0
- package/icons/openvscode-server.png +0 -0
- package/icons/orangehrm.png +0 -0
- package/icons/organizr.png +0 -0
- package/icons/outline.png +0 -0
- package/icons/overseerr.png +0 -0
- package/icons/owncast.png +0 -0
- package/icons/papercups.png +0 -0
- package/icons/paperless-ng.png +0 -0
- package/icons/paperless-ngx.png +0 -0
- package/icons/papermerge.png +0 -0
- package/icons/parse.png +0 -0
- package/icons/passbolt.png +0 -0
- package/icons/peertube.png +0 -0
- package/icons/penpot.png +0 -0
- package/icons/percona.png +0 -0
- package/icons/pgadmin4.png +0 -0
- package/icons/pgweb.png +0 -0
- package/icons/photoprism.png +0 -0
- package/icons/photoview.png +0 -0
- package/icons/phpldapadmin.png +0 -0
- package/icons/phpmyadmin.png +0 -0
- package/icons/picoshare.png +0 -0
- package/icons/pigallery2.png +0 -0
- package/icons/pihole.png +0 -0
- package/icons/planka.png +0 -0
- package/icons/plausible.png +0 -0
- package/icons/plex-arm.png +0 -0
- package/icons/plex.png +0 -0
- package/icons/pocketbase.png +0 -0
- package/icons/portainer.png +0 -0
- package/icons/poste-io.png +0 -0
- package/icons/postgres.png +0 -0
- package/icons/posthog.png +0 -0
- package/icons/prerender.png +0 -0
- package/icons/prisma.png +0 -0
- package/icons/privatebin.png +0 -0
- package/icons/projectsend.png +0 -0
- package/icons/prometheus.png +0 -0
- package/icons/prowlarr.png +0 -0
- package/icons/proxypool.png +0 -0
- package/icons/pydio.png +0 -0
- package/icons/pyload.png +0 -0
- package/icons/qbittorrent.png +0 -0
- package/icons/rabbitmq.png +0 -0
- package/icons/radarr.png +0 -0
- package/icons/radicale.png +0 -0
- package/icons/rainloop.png +0 -0
- package/icons/rallly.png +0 -0
- package/icons/raneto.png +0 -0
- package/icons/readarr.png +0 -0
- package/icons/redash.png +0 -0
- package/icons/redis.png +0 -0
- package/icons/redlib.png +0 -0
- package/icons/redmine-mysql.png +0 -0
- package/icons/redmine.png +0 -0
- package/icons/remark42.png +0 -0
- package/icons/request-baskets.png +0 -0
- package/icons/resilio-sync.png +0 -0
- package/icons/rethinkdb.png +0 -0
- package/icons/rocketchat.png +0 -0
- package/icons/rss-bridge.png +0 -0
- package/icons/rstudio.png +0 -0
- package/icons/rsync-looped.png +0 -0
- package/icons/rudder-stack.png +0 -0
- package/icons/rustfs.png +0 -0
- package/icons/saleor.png +0 -0
- package/icons/seafile-nomemcached.png +0 -0
- package/icons/seafile.png +0 -0
- package/icons/seatable.png +0 -0
- package/icons/sentry.png +0 -0
- package/icons/serpbear.png +0 -0
- package/icons/shiori.png +0 -0
- package/icons/shopware.png +0 -0
- package/icons/silex-platform.png +0 -0
- package/icons/sinusbot.png +0 -0
- package/icons/smokeping.png +0 -0
- package/icons/sonarqube.png +0 -0
- package/icons/sonarr.png +0 -0
- package/icons/sourcegraph.png +0 -0
- package/icons/spigot.png +0 -0
- package/icons/splitpro.png +0 -0
- package/icons/squidex.png +0 -0
- package/icons/sshd.png +0 -0
- package/icons/statping.png +0 -0
- package/icons/steam-openid-provider.png +0 -0
- package/icons/supabase-postgres.png +0 -0
- package/icons/supertokens.png +0 -0
- package/icons/surrealdb.png +0 -0
- package/icons/syncthing.png +0 -0
- package/icons/tautulli.png +0 -0
- package/icons/teamspeak.png +0 -0
- package/icons/telegraf.png +0 -0
- package/icons/teslamate.png +0 -0
- package/icons/the-lounge.png +0 -0
- package/icons/thingsboard-postgres.png +0 -0
- package/icons/thumbor.png +0 -0
- package/icons/tiddlywiki.png +0 -0
- package/icons/traggo.png +0 -0
- package/icons/transfer-sh.png +0 -0
- package/icons/transmission.png +0 -0
- package/icons/trudesk.png +0 -0
- package/icons/tubesync.png +0 -0
- package/icons/typebot.png +0 -0
- package/icons/ubooquity.png +0 -0
- package/icons/umami-only.png +0 -0
- package/icons/umami-postgresql.png +0 -0
- package/icons/uptime-kuma.png +0 -0
- package/icons/valheim.png +0 -0
- package/icons/valkey.png +0 -0
- package/icons/verdaccio.png +0 -0
- package/icons/vikunja.png +0 -0
- package/icons/vscode-coder.png +0 -0
- package/icons/vsts.png +0 -0
- package/icons/vvveb-only.png +0 -0
- package/icons/vvveb.png +0 -0
- package/icons/wakapi.png +0 -0
- package/icons/wallabag.png +0 -0
- package/icons/weblate.png +0 -0
- package/icons/webtop.png +0 -0
- package/icons/wekan.png +0 -0
- package/icons/wiki-js.png +0 -0
- package/icons/windmill.png +0 -0
- package/icons/woodpecker.png +0 -0
- package/icons/wordpress-only.png +0 -0
- package/icons/wordpress.png +0 -0
- package/icons/yagpdb.png +0 -0
- package/icons/yourls.png +0 -0
- package/icons/zammad.png +0 -0
- 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 };
|