From 1c0380d77b4e2ba2316384964308e84a2aeb0b6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yusuf=20G=C3=BCndo=C4=9Fdu?= Date: Wed, 8 Jul 2026 00:44:07 +0300 Subject: [PATCH] feat(blueprint): add LibreDB Studio (#931) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add libredb-studio compose Adds LibreDB Studio — an MIT-licensed, AI-powered open-source SQL IDE (PostgreSQL, MySQL, Oracle, SQL Server, SQLite, MongoDB, Redis). This commit adds the docker-compose.yml. The template.toml and meta.json entry follow in the same branch. Image: ghcr.io/libredb/libredb-studio Repo: https://github.com/libredb/libredb-studio * feat: add libredb-studio template.toml Adds the Dokploy template.toml for LibreDB Studio. Defines auto-generated secrets (admin password, user password, JWT secret), exposes port 3000 on the primary domain, and persists data via a mount at /app/data. * feat: add libredb-studio to meta.json Registers LibreDB Studio in the template catalog index (meta.json), alphabetically-independent top entry. Completes the LibreDB Studio template (compose + template.toml + meta entry). * fix: sort libredb-studio entry alphabetically in meta.json Moves the libredb-studio entry to its correct alphabetical position between librechat and libredesk so meta.json remains sorted by id. Resolves the failing "Validate and Process Meta.json" check (duplicates/sort-order validation). * fix: expand libredb-studio tags to match meta.json formatting Formats the libredb-studio "tags" array as a multi-line block to match the output of dedupe-and-sort-meta.js, making the entry byte-identical to the canonical processed file. Resolves the failing "Validate and Process Meta.json" check. * fix: remove invalid mounts block from libredb-studio template.toml Removes the [[config.mounts]] block, which failed validation because Dokploy requires a 'content' field for file mounts. Data persistence is already handled by the named volume (libredb-data:/app/data) in docker-compose.yml, so no file mount is needed. Resolves the failing "Validate Docker Compose Files" check. * fix: correct indentation of libredb-studio tags in meta.json Adjusts the indentation of the "tags" key to 4 spaces so the libredb-studio entry is byte-identical to the output of dedupe-and-sort-meta.js. Resolves the remaining "Validate and Process Meta.json" check failure. * feat: add libredb-studio logo Adds the libredb-studio.svg logo to blueprints/libredb-studio/ so it matches the "logo" field in meta.json. Resolves the "Validate Blueprints Structure and Meta" check, which verifies that each meta.json logo has a corresponding file in its blueprint folder. * fix: bump libredb-studio image to v0.9.27 Updates the image tag from v0.9.13 to v0.9.27 (current release) so reviewers can test against the latest version. * fix: update LibreDB Studio version to v0.9.27 Update version field from v0.9.13 to v0.9.27 in meta.json * fix(blueprint): remove v prefix from image tag GHCR tags do not use v prefix (0.9.27 not v0.9.27) * fix(meta): remove v prefix from version field GHCR tags do not use v prefix (0.9.27 not v0.9.27) --- blueprints/libredb-studio/docker-compose.yml | 17 +++++++++++ blueprints/libredb-studio/libredb-studio.svg | 32 ++++++++++++++++++++ blueprints/libredb-studio/template.toml | 18 +++++++++++ meta.json | 16 ++++++++++ 4 files changed, 83 insertions(+) create mode 100644 blueprints/libredb-studio/docker-compose.yml create mode 100644 blueprints/libredb-studio/libredb-studio.svg create mode 100644 blueprints/libredb-studio/template.toml diff --git a/blueprints/libredb-studio/docker-compose.yml b/blueprints/libredb-studio/docker-compose.yml new file mode 100644 index 00000000..00b88766 --- /dev/null +++ b/blueprints/libredb-studio/docker-compose.yml @@ -0,0 +1,17 @@ +version: "3.8" +services: + libredb-studio: + image: ghcr.io/libredb/libredb-studio:0.9.27 + restart: unless-stopped + environment: + - ADMIN_EMAIL=admin@libredb.org + - ADMIN_PASSWORD=${ADMIN_PASSWORD} + - USER_EMAIL=user@libredb.org + - USER_PASSWORD=${USER_PASSWORD} + - JWT_SECRET=${JWT_SECRET} + - STORAGE_PROVIDER=sqlite + - STORAGE_SQLITE_PATH=/app/data/libredb-storage.db + volumes: + - libredb-data:/app/data +volumes: + libredb-data: diff --git a/blueprints/libredb-studio/libredb-studio.svg b/blueprints/libredb-studio/libredb-studio.svg new file mode 100644 index 00000000..c36a98eb --- /dev/null +++ b/blueprints/libredb-studio/libredb-studio.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/blueprints/libredb-studio/template.toml b/blueprints/libredb-studio/template.toml new file mode 100644 index 00000000..9d30084d --- /dev/null +++ b/blueprints/libredb-studio/template.toml @@ -0,0 +1,18 @@ +[variables] +admin_password = "${password:32}" +user_password = "${password:32}" +jwt_secret = "${password:64}" + +[config] +[[config.domains]] +serviceName = "libredb-studio" +port = 3000 + +[[config.env]] +ADMIN_PASSWORD = "${admin_password}" + +[[config.env]] +USER_PASSWORD = "${user_password}" + +[[config.env]] +JWT_SECRET = "${jwt_secret}" diff --git a/meta.json b/meta.json index 03578429..c8a04988 100644 --- a/meta.json +++ b/meta.json @@ -3884,6 +3884,22 @@ "generative-ai" ] }, + { + "id": "libredb-studio", + "name": "LibreDB Studio", + "version": "0.9.27", + "description": "The modern, AI-powered open-source SQL IDE. Query PostgreSQL, MySQL, Oracle, SQL Server, SQLite, MongoDB and Redis from your browser.", + "logo": "libredb-studio.svg", + "links": { + "github": "https://github.com/libredb/libredb-studio", + "website": "https://libredb.org/", + "docs": "https://libredb.org/" + }, + "tags": [ + "database", + "sql" + ] + }, { "id": "libredesk", "name": "Libredesk",