From aa2000a22c5f464c231cc211ceb861fdba978501 Mon Sep 17 00:00:00 2001 From: Lucifix <4372997+Lucifix@users.noreply.github.com> Date: Sat, 17 Oct 2026 21:35:09 +0200 Subject: [PATCH 1/5] Add Unraid CA template and CasaOS app manifest Listings for homelab app stores, ready for the owner to submit: - appstores/unraid: ca_profile.xml and a Docker template, laid out as the root of a separate Lucifix/unraid-templates repo per the CA builder guide. Runs with --user 99:100 since Unraid creates appdata paths as nobody:users. - appstores/casaos: a v2 compose + x-casaos manifest for IceWhaleTech/CasaOS-AppStore, pinned to 1.0.0. --- .../ModelWorkshopManager/docker-compose.yml | 111 ++++++++++++++++++ appstores/casaos/README.md | 56 +++++++++ appstores/unraid/README.md | 49 ++++++++ appstores/unraid/ca_profile.xml | 10 ++ .../templates/model-workshop-manager.xml | 38 ++++++ 5 files changed, 264 insertions(+) create mode 100644 appstores/casaos/ModelWorkshopManager/docker-compose.yml create mode 100644 appstores/casaos/README.md create mode 100644 appstores/unraid/README.md create mode 100644 appstores/unraid/ca_profile.xml create mode 100644 appstores/unraid/templates/model-workshop-manager.xml diff --git a/appstores/casaos/ModelWorkshopManager/docker-compose.yml b/appstores/casaos/ModelWorkshopManager/docker-compose.yml new file mode 100644 index 0000000..ef32378 --- /dev/null +++ b/appstores/casaos/ModelWorkshopManager/docker-compose.yml @@ -0,0 +1,111 @@ +name: model-workshop-manager +services: + model-workshop-manager: + image: ghcr.io/lucifix/model-workshop-manager:1.0.0 + container_name: model-workshop-manager + restart: unless-stopped + deploy: + resources: + reservations: + memory: 128M + ports: + - target: 3000 + published: "13080" + protocol: tcp + environment: + SESSION_COOKIE_SECURE: "false" + TRUST_PROXY: "" + volumes: + - type: bind + source: /DATA/AppData/$AppID/data + target: /data + - type: bind + source: /DATA/AppData/$AppID/backups + target: /backups + healthcheck: + test: ["CMD", "wget", "-q", "--spider", "http://localhost:3000/api/health"] + interval: 30s + timeout: 10s + retries: 3 + x-casaos: + envs: + - container: SESSION_COOKIE_SECURE + description: + en_US: Set to true only once the app is served over HTTPS (e.g. behind a reverse proxy with TLS). Over plain HTTP, true makes the browser drop the login cookie and login silently fails. + - container: TRUST_PROXY + description: + en_US: Number of reverse proxies in front of the app (usually 1) so the login rate limiter sees real client IPs. Leave empty without a proxy. "true" is refused and the app won't start. + ports: + - container: "3000" + description: + en_US: Web UI HTTP port + volumes: + - container: /data + description: + en_US: Database, uploaded photos and the auto-generated session secret + - container: /backups + description: + en_US: In-app backups (manual backup, download and restore) +x-casaos: + id: org.icewhale.modelworkshopmanager + main: model-workshop-manager + index: / + port_map: "13080" + scheme: http + icon: https://cdn.jsdelivr.net/gh/IceWhaleTech/CasaOS-AppStore@main/Apps/ModelWorkshopManager/icon.svg + thumbnail: https://cdn.jsdelivr.net/gh/IceWhaleTech/CasaOS-AppStore@main/Apps/ModelWorkshopManager/thumbnail.png + screenshot_link: + - https://cdn.jsdelivr.net/gh/IceWhaleTech/CasaOS-AppStore@main/Apps/ModelWorkshopManager/screenshot-1.png + - https://cdn.jsdelivr.net/gh/IceWhaleTech/CasaOS-AppStore@main/Apps/ModelWorkshopManager/screenshot-2.png + - https://cdn.jsdelivr.net/gh/IceWhaleTech/CasaOS-AppStore@main/Apps/ModelWorkshopManager/screenshot-3.png + title: + en_US: Model Workshop Manager + tagline: + en_US: Track your model kit stash, paint shelf and builds + description: + en_US: | + No more guessing whether you already own that kit, digging through drawers for the right shade of paint, or losing track of build progress. Model Workshop Manager keeps your scale-model catalog, inventory and builds in one place, on your own hardware. + + **Key Features:** + - Searchable catalog of kits and paints, kept separate from what you own and what's on your wishlist + - One-click starter catalog of 10,000+ paints from 30+ brands (Tamiya, Vallejo, Citadel, Mr. Hobby, AK, Mission Models and more) + - Barcode scanning to check whether you already own a kit, with optional UPCitemdb lookup + - Builds with a timestamped progress log, photos and "required vs. owned" paint matching + - One-tap shopping list for a build's missing paints, plus a wishlist + - Supplies (brushes, cement, masking tape) with low-stock alerts + - CSV/JSON import and export, and backup/restore from the UI + - Installable as an app on phone and desktop (PWA) + - Single-user and private: one SQLite file, photos on your own disk, no cloud, no tracking + + **Learn More:** + - [Website](https://lucifix.github.io/model-workshop-manager/) + - [GitHub repository](https://github.com/Lucifix/model-workshop-manager) + tips: + before_install: + en_US: | + ## Getting Started + + Open the Web UI and create your username and password on the one-time setup screen. Nothing else needs configuring. + + To start with a full paint catalog, open **Import & Export → Import starter catalog**. + + ## HTTPS and reverse proxies + + This is a single-user app meant for your LAN or a VPN, not the open internet. If you serve it over HTTPS behind a reverse proxy, set `SESSION_COOKIE_SECURE` to `true` and `TRUST_PROXY` to `1`. + author: Lucifix + developer: Lucifix + category: Productivity + architectures: + - amd64 + - arm64 + version: "1.0.0" + update_at: "2026-10-17" + release_notes: + en_US: |- + - First tagged release: kit, paint and supply catalog and inventory, barcode scanning, builds with photo progress logs, shopping list and wishlist. + - One-click starter catalog of 10,000+ paints from 30+ brands. + - First-run setup screen, auto-generated session secret and in-app backups. + website: "https://lucifix.github.io/model-workshop-manager/" + repo: "https://github.com/Lucifix/model-workshop-manager" + support: "https://github.com/Lucifix/model-workshop-manager/issues" + docs: "https://github.com/Lucifix/model-workshop-manager#readme" diff --git a/appstores/casaos/README.md b/appstores/casaos/README.md new file mode 100644 index 0000000..23d5dd4 --- /dev/null +++ b/appstores/casaos/README.md @@ -0,0 +1,56 @@ +# CasaOS / ZimaOS App Store manifest + +`ModelWorkshopManager/docker-compose.yml` is an app definition for the official +[CasaOS App Store](https://github.com/IceWhaleTech/CasaOS-AppStore), written in +its v2 format: standard Compose plus a top-level `x-casaos` block (see +[Compose and x-casaos](https://github.com/IceWhaleTech/CasaOS-AppStore/blob/main/docs/specs/compose-and-x-casaos.md)). + +Notes on the choices: + +- **Pinned image tag** (`1.0.0`, not `latest`). That's what the store's other + apps do, and it ties `x-casaos.version` to what actually runs. Bump both + (and `update_at`/`release_notes`) in a follow-up PR to the store for each + release. +- **Host port 13080.** Store apps use high ports to stay clear of CasaOS itself + and other apps. +- **Runs as the image's default uid 1000**, with no `user:` override. CasaOS + creates missing `/DATA/AppData/...` folders with mode 0777 before starting + the app, so the unprivileged process can write to them. +- **`x-casaos.id` is `org.icewhale.modelworkshopmanager`**, the format the + store's validator suggests. If the maintainers ask for a different id, + change it. +- The store's app assets (`icon.svg`, `thumbnail.png`, `screenshot-*.png`) are + copied from this repo when you submit, not stored here twice. + +## Submitting + +1. Fork [IceWhaleTech/CasaOS-AppStore](https://github.com/IceWhaleTech/CasaOS-AppStore) + and clone your fork. +2. From the fork's root, with this repo checked out at `../model-workshop-manager`: + + ```bash + mkdir -p Apps/ModelWorkshopManager + cp ../model-workshop-manager/appstores/casaos/ModelWorkshopManager/docker-compose.yml Apps/ModelWorkshopManager/ + cp ../model-workshop-manager/public/favicon.svg Apps/ModelWorkshopManager/icon.svg + cp ../model-workshop-manager/public/icon-512.png Apps/ModelWorkshopManager/icon.png + cp ../model-workshop-manager/docs/screenshots/readme-hero.png Apps/ModelWorkshopManager/thumbnail.png + cp ../model-workshop-manager/docs/screenshots/mobile-dashboard.png Apps/ModelWorkshopManager/screenshot-1.png + cp ../model-workshop-manager/docs/screenshots/mobile-models.png Apps/ModelWorkshopManager/screenshot-2.png + cp ../model-workshop-manager/docs/screenshots/mobile-build.png Apps/ModelWorkshopManager/screenshot-3.png + ``` + +3. Validate locally: + + ```bash + docker compose -f Apps/ModelWorkshopManager/docker-compose.yml config -q + ./scripts/build_dist.sh + ``` + + The build should finish without errors and produce + `dist/apps/org.icewhale.modelworkshopmanager/`. +4. Optional: install it on a CasaOS box first. In the App Store, use + **Custom Install → Import** and paste the compose file. +5. Commit on a branch, push, and open a PR against `main` titled e.g. + "Add Model Workshop Manager". Say in the description that it adds a new + app, what the app does, and how you validated it (step 3, plus step 4 if + you did it). The store's `Validate Compose And Build` check runs on the PR. diff --git a/appstores/unraid/README.md b/appstores/unraid/README.md new file mode 100644 index 0000000..195ffdd --- /dev/null +++ b/appstores/unraid/README.md @@ -0,0 +1,49 @@ +# Unraid Community Apps template + +Community Apps template for [Model Workshop Manager](https://github.com/Lucifix/model-workshop-manager). + +This folder is laid out as the root of a **separate** templates repository +(`Lucifix/unraid-templates`), following the Community Apps +[builder guide](https://ca.unraid.net/submit/help/builders) and its +[starter repository](https://github.com/unraid/unraid-community-apps-starter): +Community Apps expects `ca_profile.xml` at the repository root and scans the +whole repository, so it gets its own small repo instead of living in the app's +root. The template pulls the published image, so it doesn't need anything else +from this repo. + +```text +ca_profile.xml repository profile shown in Community Apps +templates/model-workshop-manager.xml the Docker template +``` + +`TemplateURL` and `WebPage` assume the repo is named `unraid-templates`. Pick +a different name and you'll need to update both. + +## Unraid-specific defaults + +- **Runs as `99:100`** (`--user 99:100` under _Extra Parameters_). This replaces + `APP_UID`/`APP_GID` from `docker-compose.yml`, which are Compose-only and + have no effect as container variables. Unraid creates missing appdata paths + owned by `nobody:users`, so the image's default uid 1000 couldn't write there. +- **Data and backups are sibling folders** under + `/mnt/user/appdata/model-workshop-manager/`. Nesting the backups folder + inside the data folder would make every backup include the previous ones. +- **Host port 8080 → container port 3000**, same as the docs. + +## Submitting + +1. Create a public repo `Lucifix/unraid-templates`. Copy this folder's + contents to its root, along with this project's `LICENSE` (CA requires an + OSI-approved license at the repo root). Push to `main`. +2. Check that + `https://raw.githubusercontent.com/Lucifix/unraid-templates/main/templates/model-workshop-manager.xml` + loads. +3. Optional but common: open a support thread in the Unraid forums' + _Docker Containers_ section. Add its URL as `` in `ca_profile.xml` + and as `` in the template. +4. Sign in at , enter the repo URL, then run + **Validate** and **Scan**. Fix anything they report, push, and run them again. +5. Submit for review once every check passes. + +Once the templates repo is live, edit the template there. Either delete this +folder or keep the two in sync. diff --git a/appstores/unraid/ca_profile.xml b/appstores/unraid/ca_profile.xml new file mode 100644 index 0000000..05f868e --- /dev/null +++ b/appstores/unraid/ca_profile.xml @@ -0,0 +1,10 @@ + + + +Unraid templates for [Model Workshop Manager](https://github.com/Lucifix/model-workshop-manager) — a self-hosted, single-user app for tracking your model kit stash, paint shelf, supplies and builds. + +The app is developed and the Docker image is built in the main project repository; this repository only holds the Community Apps template. For questions and bug reports, use the project's [GitHub Discussions](https://github.com/Lucifix/model-workshop-manager/discussions) or [issue tracker](https://github.com/Lucifix/model-workshop-manager/issues). + + https://raw.githubusercontent.com/Lucifix/model-workshop-manager/main/public/icon-512.png + https://github.com/Lucifix/unraid-templates + diff --git a/appstores/unraid/templates/model-workshop-manager.xml b/appstores/unraid/templates/model-workshop-manager.xml new file mode 100644 index 0000000..a4b80ee --- /dev/null +++ b/appstores/unraid/templates/model-workshop-manager.xml @@ -0,0 +1,38 @@ + + + model-workshop-manager + ghcr.io/lucifix/model-workshop-manager:latest + https://github.com/Lucifix/model-workshop-manager/pkgs/container/model-workshop-manager + bridge + sh + false + https://github.com/Lucifix/model-workshop-manager/discussions + https://github.com/Lucifix/model-workshop-manager + https://github.com/Lucifix/model-workshop-manager#readme + Model Workshop Manager keeps your scale-model hobby in one place: a searchable catalog of kits and paints kept separate from what you actually own, barcode scanning to check whether you already have a kit, a one-click starter catalog of 10,000+ paints from 30+ brands (Tamiya, Vallejo, Citadel, Mr. Hobby, AK and more), builds with progress photos and "required vs. owned" paint matching, a shopping list and wishlist, supplies with low-stock alerts, CSV/JSON import and export, and in-app backups. Installable as a PWA on phone and desktop. + +Single-user and private by default: one SQLite file and your photos on your own disk, no accounts, no cloud, no tracking. + +First run: open the WebUI and create your username and password on the one-time setup screen. Nothing else needs configuring. + +Meant for your LAN or a VPN, not the open internet. If you put it behind a reverse proxy with HTTPS, set SESSION_COOKIE_SECURE to true and TRUST_PROXY to 1. + Productivity: Tools:Utilities + http://[IP]:[PORT:3000]/ + https://raw.githubusercontent.com/Lucifix/unraid-templates/main/templates/model-workshop-manager.xml + https://raw.githubusercontent.com/Lucifix/model-workshop-manager/main/public/icon-512.png + + --user 99:100 + scale model kits miniatures paints hobby modelling inventory warhammer gunpla collection + MIT + https://raw.githubusercontent.com/Lucifix/model-workshop-manager/main/docs/screenshots/mobile-dashboard.png + https://raw.githubusercontent.com/Lucifix/model-workshop-manager/main/docs/screenshots/mobile-models.png + https://raw.githubusercontent.com/Lucifix/model-workshop-manager/main/docs/screenshots/mobile-build.png + 8080 + /mnt/user/appdata/model-workshop-manager/data + /mnt/user/appdata/model-workshop-manager/backups + false + + From 4892a2acf6f4e9406b450c156c8bc38c35a6fa26 Mon Sep 17 00:00:00 2001 From: Lucifix <4372997+Lucifix@users.noreply.github.com> Date: Sat, 17 Oct 2026 21:36:40 +0200 Subject: [PATCH 2/5] Note which store links 404 until submission --- appstores/casaos/README.md | 6 ++++++ appstores/unraid/README.md | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/appstores/casaos/README.md b/appstores/casaos/README.md index 23d5dd4..0a0f37a 100644 --- a/appstores/casaos/README.md +++ b/appstores/casaos/README.md @@ -21,6 +21,12 @@ Notes on the choices: change it. - The store's app assets (`icon.svg`, `thumbnail.png`, `screenshot-*.png`) are copied from this repo when you submit, not stored here twice. +- **The `cdn.jsdelivr.net/gh/IceWhaleTech/CasaOS-AppStore@main/Apps/ModelWorkshopManager/...` + URLs return 404 until the store PR is merged.** Every app in the store points at + its own folder this way. The store build doesn't download them: it maps + `Apps/ModelWorkshopManager/` to the copied local file, then rewrites the + URL to the published asset. If the files aren't copied in (step 2 below), the + build fails on those URLs. ## Submitting diff --git a/appstores/unraid/README.md b/appstores/unraid/README.md index 195ffdd..780330c 100644 --- a/appstores/unraid/README.md +++ b/appstores/unraid/README.md @@ -16,8 +16,9 @@ ca_profile.xml repository profile shown in Community Apps templates/model-workshop-manager.xml the Docker template ``` -`TemplateURL` and `WebPage` assume the repo is named `unraid-templates`. Pick -a different name and you'll need to update both. +`TemplateURL` and `WebPage` assume the repo is named `unraid-templates`. Both +return 404 until that repo exists. Pick a different name and you'll need to +update both. ## Unraid-specific defaults From 920e12a4574ed664aa4001d4cd30bc8b48d18ab6 Mon Sep 17 00:00:00 2001 From: Lucifix <4372997+Lucifix@users.noreply.github.com> Date: Sat, 17 Oct 2026 21:38:57 +0200 Subject: [PATCH 3/5] Format the CasaOS README --- appstores/casaos/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/appstores/casaos/README.md b/appstores/casaos/README.md index 0a0f37a..bb40425 100644 --- a/appstores/casaos/README.md +++ b/appstores/casaos/README.md @@ -54,6 +54,7 @@ Notes on the choices: The build should finish without errors and produce `dist/apps/org.icewhale.modelworkshopmanager/`. + 4. Optional: install it on a CasaOS box first. In the App Store, use **Custom Install → Import** and paste the compose file. 5. Commit on a branch, push, and open a PR against `main` titled e.g. From 2ae7e8ecb4677cc930894aaf1a861b02f3d618f9 Mon Sep 17 00:00:00 2001 From: Lucifix <4372997+Lucifix@users.noreply.github.com> Date: Sun, 18 Oct 2026 08:35:28 +0200 Subject: [PATCH 4/5] Pull from Docker Hub in the store listings Same image as GHCR (identical digests for latest and 1.0.0); store installs then count toward the Docker Hub pull count. --- appstores/casaos/ModelWorkshopManager/docker-compose.yml | 2 +- appstores/unraid/templates/model-workshop-manager.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/appstores/casaos/ModelWorkshopManager/docker-compose.yml b/appstores/casaos/ModelWorkshopManager/docker-compose.yml index ef32378..01e6fa1 100644 --- a/appstores/casaos/ModelWorkshopManager/docker-compose.yml +++ b/appstores/casaos/ModelWorkshopManager/docker-compose.yml @@ -1,7 +1,7 @@ name: model-workshop-manager services: model-workshop-manager: - image: ghcr.io/lucifix/model-workshop-manager:1.0.0 + image: lucifix/model-workshop-manager:1.0.0 container_name: model-workshop-manager restart: unless-stopped deploy: diff --git a/appstores/unraid/templates/model-workshop-manager.xml b/appstores/unraid/templates/model-workshop-manager.xml index a4b80ee..76b976b 100644 --- a/appstores/unraid/templates/model-workshop-manager.xml +++ b/appstores/unraid/templates/model-workshop-manager.xml @@ -1,8 +1,8 @@ model-workshop-manager - ghcr.io/lucifix/model-workshop-manager:latest - https://github.com/Lucifix/model-workshop-manager/pkgs/container/model-workshop-manager + lucifix/model-workshop-manager:latest + https://hub.docker.com/r/lucifix/model-workshop-manager bridge sh false From 2c87a543662993f0d98f13ff1df6440434ce42a5 Mon Sep 17 00:00:00 2001 From: Lucifix <4372997+Lucifix@users.noreply.github.com> Date: Sun, 18 Oct 2026 08:42:41 +0200 Subject: [PATCH 5/5] Use plain text in the Unraid repository profile --- appstores/unraid/ca_profile.xml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/appstores/unraid/ca_profile.xml b/appstores/unraid/ca_profile.xml index 05f868e..60ea783 100644 --- a/appstores/unraid/ca_profile.xml +++ b/appstores/unraid/ca_profile.xml @@ -1,10 +1,6 @@ - -Unraid templates for [Model Workshop Manager](https://github.com/Lucifix/model-workshop-manager) — a self-hosted, single-user app for tracking your model kit stash, paint shelf, supplies and builds. - -The app is developed and the Docker image is built in the main project repository; this repository only holds the Community Apps template. For questions and bug reports, use the project's [GitHub Discussions](https://github.com/Lucifix/model-workshop-manager/discussions) or [issue tracker](https://github.com/Lucifix/model-workshop-manager/issues). - + Unraid templates for Model Workshop Manager, a self-hosted, single-user app for tracking your model kit stash, paint shelf, supplies and builds. For questions and bug reports, use GitHub Discussions or issues on the main project: https://github.com/Lucifix/model-workshop-manager https://raw.githubusercontent.com/Lucifix/model-workshop-manager/main/public/icon-512.png https://github.com/Lucifix/unraid-templates