diff --git a/apps/dashboard/public/app-logos/shoutrrr.png b/apps/dashboard/public/app-logos/shoutrrr.png new file mode 100644 index 000000000..8e423321c Binary files /dev/null and b/apps/dashboard/public/app-logos/shoutrrr.png differ diff --git a/apps/dashboard/src/components/AppLogo.tsx b/apps/dashboard/src/components/AppLogo.tsx index 13ed76eba..538053c58 100644 --- a/apps/dashboard/src/components/AppLogo.tsx +++ b/apps/dashboard/src/components/AppLogo.tsx @@ -45,6 +45,7 @@ export const APP_LOGO: Record< // Buzz (block/buzz) — vendored bee mark (its own favicon, OS-recolor stripped). // Monochrome near-black, so darkInvert flips it to light on the dark themes. buzz: { slug: undefined, src: "/app-logos/buzz.svg", darkInvert: true }, + shoutrrr: { src: "/app-logos/shoutrrr.png" }, // code-server / IT-Tools / Stirling-PDF have no reliable simpleicons mark → // they fall back to the monochrome Boxes glyph. // openship-native mail stack — its own brand mark, a full-bleed square icon. diff --git a/packages/core/src/apps/catalog.json b/packages/core/src/apps/catalog.json index f71348b63..4d7149283 100644 --- a/packages/core/src/apps/catalog.json +++ b/packages/core/src/apps/catalog.json @@ -1829,6 +1829,130 @@ } ] } + }, + { + "$schema": "https://openship.io/app.schema.json", + "available": false, + "id": "shoutrrr", + "name": "Shoutrrr", + "description": "Open-source social media scheduling and publishing platform (Buffer & Hootsuite alternative).", + "kind": "template", + "logo": "shoutrrr", + "category": "automation", + "tags": [ + "social-media", + "scheduling", + "publishing", + "marketing", + "automation" + ], + "framework": "docker-compose", + "repository": "https://github.com/coollabsio/shoutrrr", + "services": [ + { + "name": "shoutrrr", + "image": "ghcr.io/coollabsio/shoutrrr:latest", + "ports": [ + "8080:8080" + ], + "exposedPort": 8080, + "exposed": true, + "environment": { + "APP_ENV": "production", + "APP_DEBUG": "false", + "APP_URL": "{{publicUrl:shoutrrr}}", + "OCTANE_SERVER": "frankenphp", + "OCTANE_HTTPS": "true", + "TRUSTED_PROXIES": "*", + "SESSION_SECURE_COOKIE": "true", + "DB_CONNECTION": "sqlite", + "DB_DATABASE": "/var/www/html/database/sqlite/database.sqlite", + "CACHE_STORE": "database", + "QUEUE_CONNECTION": "database", + "SESSION_DRIVER": "database", + "QUEUE_WORKER_ENABLED": "true", + "QUEUE_WORKER_COUNT": "1", + "SCHEDULER_ENABLED": "true", + "SOCIALITE_ENABLED": "false" + }, + "secretEnv": [ + "APP_KEY" + ], + "volumes": [ + "shoutrrr_storage:/var/www/html/storage", + "shoutrrr_sqlite:/var/www/html/database/sqlite" + ], + "restart": "unless-stopped" + } + ], + "configFields": [ + { + "key": "APP_KEY", + "service": "shoutrrr", + "label": "Application key", + "help": "Auto-generated encryption key for sessions, tokens, and encrypted credentials.", + "generate": "secret", + "secret": true + } + ], + "management": { + "kind": "schema" + }, + "settings": [ + { + "id": "general", + "label": "General", + "fields": [ + { + "key": "APP_NAME", + "service": "shoutrrr", + "label": "Application Name", + "type": "text", + "default": "Shoutrrr", + "placeholder": "Shoutrrr" + }, + { + "key": "QUEUE_WORKER_COUNT", + "service": "shoutrrr", + "label": "Queue Workers", + "type": "number", + "default": "1", + "integer": true, + "min": 1, + "advanced": true + }, + { + "key": "INERTIA_SSR_ENABLED", + "service": "shoutrrr", + "label": "Enable SSR (Server-Side Rendering)", + "type": "boolean", + "default": "false", + "advanced": true + }, + { + "key": "SOCIALITE_ENABLED", + "service": "shoutrrr", + "label": "Enable OAuth Social Login", + "type": "boolean", + "default": "false", + "advanced": true + } + ] + } + ], + "connection": { + "title": "Connect to Shoutrrr", + "description": "Open the web interface to complete onboarding and manage social channels.", + "outputs": [ + { + "id": "url", + "label": "Application URL", + "source": "publicUrl:shoutrrr", + "kind": "url", + "help": "Open the Shoutrrr web dashboard in your browser." + } + ] + } } ] } diff --git a/packages/core/src/apps/catalog/shoutrrr.json b/packages/core/src/apps/catalog/shoutrrr.json new file mode 100644 index 000000000..09d3535a8 --- /dev/null +++ b/packages/core/src/apps/catalog/shoutrrr.json @@ -0,0 +1,124 @@ +{ + "$schema": "https://openship.io/app.schema.json", + "available": false, + "id": "shoutrrr", + "name": "Shoutrrr", + "description": "Open-source social media scheduling and publishing platform (Buffer & Hootsuite alternative).", + "kind": "template", + "logo": "shoutrrr", + "category": "automation", + "tags": [ + "social-media", + "scheduling", + "publishing", + "marketing", + "automation" + ], + "framework": "docker-compose", + "repository": "https://github.com/coollabsio/shoutrrr", + "services": [ + { + "name": "shoutrrr", + "image": "ghcr.io/coollabsio/shoutrrr:latest", + "ports": [ + "8080:8080" + ], + "exposedPort": 8080, + "exposed": true, + "environment": { + "APP_ENV": "production", + "APP_DEBUG": "false", + "APP_URL": "{{publicUrl:shoutrrr}}", + "OCTANE_SERVER": "frankenphp", + "OCTANE_HTTPS": "true", + "TRUSTED_PROXIES": "*", + "SESSION_SECURE_COOKIE": "true", + "DB_CONNECTION": "sqlite", + "DB_DATABASE": "/var/www/html/database/sqlite/database.sqlite", + "CACHE_STORE": "database", + "QUEUE_CONNECTION": "database", + "SESSION_DRIVER": "database", + "QUEUE_WORKER_ENABLED": "true", + "QUEUE_WORKER_COUNT": "1", + "SCHEDULER_ENABLED": "true", + "SOCIALITE_ENABLED": "false" + }, + "secretEnv": [ + "APP_KEY" + ], + "volumes": [ + "shoutrrr_storage:/var/www/html/storage", + "shoutrrr_sqlite:/var/www/html/database/sqlite" + ], + "restart": "unless-stopped" + } + ], + "configFields": [ + { + "key": "APP_KEY", + "service": "shoutrrr", + "label": "Application key", + "help": "Auto-generated encryption key for sessions, tokens, and encrypted credentials.", + "generate": "secret", + "secret": true + } + ], + "management": { + "kind": "schema" + }, + "settings": [ + { + "id": "general", + "label": "General", + "fields": [ + { + "key": "APP_NAME", + "service": "shoutrrr", + "label": "Application Name", + "type": "text", + "default": "Shoutrrr", + "placeholder": "Shoutrrr" + }, + { + "key": "QUEUE_WORKER_COUNT", + "service": "shoutrrr", + "label": "Queue Workers", + "type": "number", + "default": "1", + "integer": true, + "min": 1, + "advanced": true + }, + { + "key": "INERTIA_SSR_ENABLED", + "service": "shoutrrr", + "label": "Enable SSR (Server-Side Rendering)", + "type": "boolean", + "default": "false", + "advanced": true + }, + { + "key": "SOCIALITE_ENABLED", + "service": "shoutrrr", + "label": "Enable OAuth Social Login", + "type": "boolean", + "default": "false", + "advanced": true + } + ] + } + ], + "connection": { + "title": "Connect to Shoutrrr", + "description": "Open the web interface to complete onboarding and manage social channels.", + "outputs": [ + { + "id": "url", + "label": "Application URL", + "source": "publicUrl:shoutrrr", + "kind": "url", + "help": "Open the Shoutrrr web dashboard in your browser." + } + ] + } +}