feat(apps): add Umami app template - #534
Conversation
e480d65 to
b5285f5
Compare
Lightweight, privacy-focused website analytics, self-hostable via docker-compose. Umami doesn't exist in the upstream remote catalog, so this local entry won't be overridden by the remote-overlay merge. Host port pinned to 3009 to avoid colliding with other apps that default to 3000. Closes oblien#532
b5285f5 to
3ab7503
Compare
|
Thanks for this, @Jcorderop02 — and sorry for the collision. Your commit landed at 11:04 on Aug 10; Umami went into Since the shipped template is a superset of this one, I'm going to close this rather than merge it. Concretely, what's on
On the host port: the reasoning in your description was sound, but None of this is wasted effort on your part — the template was structurally right, and the config templating and generated-secret wiring were both correct. If you're up for another one, #512 (Shoutrrr), #513 (Kan.bn), and #415 (OpenTelemetry Collector) are all open catalog requests and unclaimed. Comment on whichever you want and it's yours, and I'll review quickly this time. |
|
Thanks for the pointers. Turns out all three already have an open PR from someone else. #512 has #526 (thisisrakshith). #513 has #522 (SulimanAbdulrazzaq). #415 has #416 (giomartinsdev). All three look complete, not abandoned stubs, just unreviewed. Happy to pick a different unclaimed catalog request if you have one, or take a pass at reviewing/testing one of those three PRs instead if that's more useful to you than a fourth person building the same thing. |
Summary
Adds Umami (lightweight, privacy-focused, cookie-free website analytics) as an installable app in the catalog.
Motivation
Requested in #532: users want a self-hostable analytics option that doesn't require cookie consent banners.
Related issue
Closes #532
Changes
packages/core/src/apps/catalog/umami.json: new catalog entry — two-service docker-compose (Postgres +ghcr.io/umami-software/umami:postgresql-latest), auto-generatedPOSTGRES_PASSWORDshared intoDATABASE_URLvia{{config:...}}templating, auto-generatedAPP_SECRET. Host port pinned to3009:3000(not the image's default3000:3000) to avoid colliding with other catalog apps that already claim host port 3000.packages/core/src/apps/catalog.json: regenerated viabun scripts/gen-catalog.ts.apps/dashboard/src/components/AppLogo.tsx: addedumami: { slug: "umami" }so the dashboard renders Umami's real brand mark instead of the generic fallback icon.Verification
$ bun run test src/apps/catalog.test.ts ✓ src/apps/catalog.test.ts (20 tests) 11ms Test Files 1 passed (1) Tests 20 passed (20) $ bun run --cwd packages/core lint $ tsc --noEmit $ bun run --cwd apps/dashboard lint $ tsc --noEmitAlso deployed live via
docker-composeon a self-hosted Openship instance: both services (umami-db,umami) started healthy, ran their Prisma migrations, and the app servedHTTP 200on the pinned host port with no port collisions.Screenshots
N/A (catalog/backend change; app UI is Umami's own, unmodified).
Checklist
catalog.test.tsschema-validation and sync tests cover any new bundled app automaticallybun run test,bun run --cwd <workspace> lint, andbun formatall pass locally