Add Fizzy one-click service

Add Basecamp's Fizzy Kanban tracking tool as a one-click deployable service.

- Uses official Docker image: ghcr.io/basecamp/fizzy:main
- PostgreSQL database with auto-generated credentials
- Rails environment with SECRET_KEY_BASE and RAILS_MASTER_KEY
- VAPID keys for web push notifications
- Health checks on /up endpoint
- Persistent storage for Rails storage directory

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Andras Bacsai 2025-12-02 20:25:25 +01:00
parent afb19114cf
commit a7a275d012
4 changed files with 108 additions and 0 deletions

27
public/svgs/fizzy.svg Normal file
View file

@ -0,0 +1,27 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" fill="none">
<!-- Background circle -->
<circle cx="50" cy="50" r="48" fill="#0EA5E9" stroke="#0284C7" stroke-width="2"/>
<!-- Kanban board representation -->
<g transform="translate(20, 25)">
<!-- First column -->
<rect x="0" y="0" width="16" height="50" rx="2" fill="white" opacity="0.9"/>
<rect x="2" y="4" width="12" height="8" rx="1" fill="#0EA5E9"/>
<rect x="2" y="14" width="12" height="8" rx="1" fill="#0EA5E9"/>
<rect x="2" y="24" width="12" height="8" rx="1" fill="#0EA5E9"/>
<!-- Second column -->
<rect x="22" y="0" width="16" height="50" rx="2" fill="white" opacity="0.9"/>
<rect x="24" y="4" width="12" height="8" rx="1" fill="#0EA5E9"/>
<rect x="24" y="14" width="12" height="8" rx="1" fill="#0EA5E9"/>
<!-- Third column -->
<rect x="44" y="0" width="16" height="50" rx="2" fill="white" opacity="0.9"/>
<rect x="46" y="4" width="12" height="8" rx="1" fill="#0EA5E9"/>
</g>
<!-- Sparkle/Fizzy effect -->
<circle cx="75" cy="30" r="3" fill="#FCD34D" opacity="0.9"/>
<circle cx="70" cy="20" r="2" fill="#FCD34D" opacity="0.7"/>
<circle cx="80" cy="25" r="2.5" fill="#FCD34D" opacity="0.8"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,45 @@
# documentation: https://github.com/basecamp/fizzy
# slogan: Kanban tracking tool for issues and ideas by 37signals
# category: productivity
# tags: kanban, project management, issues, rails, ruby, basecamp, 37signals
# logo: svgs/fizzy.svg
# port: 80
services:
fizzy:
image: ghcr.io/basecamp/fizzy:main
environment:
- SERVICE_FQDN_FIZZY_80
- SECRET_KEY_BASE=$SERVICE_PASSWORD_FIZZY
- RAILS_MASTER_KEY=$SERVICE_PASSWORD_64_MASTERKEY
- RAILS_ENV=production
- RAILS_LOG_TO_STDOUT=true
- RAILS_SERVE_STATIC_FILES=true
- DATABASE_URL=postgresql://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgres:5432/fizzy
- VAPID_PRIVATE_KEY=$SERVICE_PASSWORD_64_VAPIDPRIVATE
- VAPID_PUBLIC_KEY=$SERVICE_PASSWORD_64_VAPIDPUBLIC
depends_on:
postgres:
condition: service_healthy
volumes:
- fizzy-storage:/rails/storage
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:80/up"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
postgres:
image: postgres:16-alpine
environment:
- POSTGRES_DB=fizzy
- POSTGRES_USER=$SERVICE_USER_POSTGRES
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 10

View file

@ -1146,6 +1146,24 @@
"minversion": "0.0.0",
"port": "5800"
},
"fizzy": {
"documentation": "https://github.com/basecamp/fizzy?utm_source=coolify.io",
"slogan": "Kanban tracking tool for issues and ideas by 37signals",
"compose": "c2VydmljZXM6CiAgZml6enk6CiAgICBpbWFnZTogJ2doY3IuaW8vYmFzZWNhbXAvZml6enk6bWFpbicKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9GSVpaWV84MAogICAgICAtIFNFQ1JFVF9LRVlfQkFTRT0kU0VSVklDRV9QQVNTV09SRF9GSVpaWQogICAgICAtIFJBSUxTX01BU1RFUl9LRVk9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfTUFTVEVSS0VZCiAgICAgIC0gUkFJTFNfRU5WPXByb2R1Y3Rpb24KICAgICAgLSBSQUlMU19MT0dfVE9fU1RET1VUPXRydWUKICAgICAgLSBSQUlMU19TRVJWRV9TVEFUSUNfRklMRVM9dHJ1ZQogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyRTRVJWSUNFX1VTRVJfUE9TVEdSRVM6JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNAcG9zdGdyZXM6NTQzMi9maXp6eScKICAgICAgLSBWQVBJRF9QUklWQVRFX0tFWT0kU0VSVklDRV9QQVNTV09SRF82NF9WQVBJRFBSSVZBVEUKICAgICAgLSBWQVBJRF9QVUJMSUNfS0VZPSRTRVJWSUNFX1BBU1NXT1JEXzY0X1ZBUElEUFVCTElDCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgdm9sdW1lczoKICAgICAgLSAnZml6enktc3RvcmFnZTovcmFpbHMvc3RvcmFnZScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MC91cCcKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiA1CiAgICAgIHN0YXJ0X3BlcmlvZDogMzBzCiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2LWFscGluZScKICAgIGVudmlyb25tZW50OgogICAgICAtIFBPU1RHUkVTX0RCPWZpenp5CiAgICAgIC0gUE9TVEdSRVNfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bvc3RncmVzLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDEwCg==",
"tags": [
"kanban",
"project management",
"issues",
"rails",
"ruby",
"basecamp",
"37signals"
],
"category": "productivity",
"logo": "svgs/fizzy.svg",
"minversion": "0.0.0",
"port": "80"
},
"flipt": {
"documentation": "https://docs.flipt.io/cloud/overview?utm_source=coolify.io",
"slogan": "Flipt is a fully managed feature flag solution that enables you to keep your feature flags and remote config next to your code in Git.",

View file

@ -1146,6 +1146,24 @@
"minversion": "0.0.0",
"port": "5800"
},
"fizzy": {
"documentation": "https://github.com/basecamp/fizzy?utm_source=coolify.io",
"slogan": "Kanban tracking tool for issues and ideas by 37signals",
"compose": "c2VydmljZXM6CiAgZml6enk6CiAgICBpbWFnZTogJ2doY3IuaW8vYmFzZWNhbXAvZml6enk6bWFpbicKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9GSVpaWV84MAogICAgICAtIFNFQ1JFVF9LRVlfQkFTRT0kU0VSVklDRV9QQVNTV09SRF9GSVpaWQogICAgICAtIFJBSUxTX01BU1RFUl9LRVk9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfTUFTVEVSS0VZCiAgICAgIC0gUkFJTFNfRU5WPXByb2R1Y3Rpb24KICAgICAgLSBSQUlMU19MT0dfVE9fU1RET1VUPXRydWUKICAgICAgLSBSQUlMU19TRVJWRV9TVEFUSUNfRklMRVM9dHJ1ZQogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyRTRVJWSUNFX1VTRVJfUE9TVEdSRVM6JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNAcG9zdGdyZXM6NTQzMi9maXp6eScKICAgICAgLSBWQVBJRF9QUklWQVRFX0tFWT0kU0VSVklDRV9QQVNTV09SRF82NF9WQVBJRFBSSVZBVEUKICAgICAgLSBWQVBJRF9QVUJMSUNfS0VZPSRTRVJWSUNFX1BBU1NXT1JEXzY0X1ZBUElEUFVCTElDCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgdm9sdW1lczoKICAgICAgLSAnZml6enktc3RvcmFnZTovcmFpbHMvc3RvcmFnZScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MC91cCcKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiA1CiAgICAgIHN0YXJ0X3BlcmlvZDogMzBzCiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2LWFscGluZScKICAgIGVudmlyb25tZW50OgogICAgICAtIFBPU1RHUkVTX0RCPWZpenp5CiAgICAgIC0gUE9TVEdSRVNfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bvc3RncmVzLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDEwCg==",
"tags": [
"kanban",
"project management",
"issues",
"rails",
"ruby",
"basecamp",
"37signals"
],
"category": "productivity",
"logo": "svgs/fizzy.svg",
"minversion": "0.0.0",
"port": "80"
},
"flipt": {
"documentation": "https://docs.flipt.io/cloud/overview?utm_source=coolify.io",
"slogan": "Flipt is a fully managed feature flag solution that enables you to keep your feature flags and remote config next to your code in Git.",