Skip to content

feat(catalog): add Louez - #576

Open
loan-talvat wants to merge 1 commit into
oblien:mainfrom
loan-talvat:add-louez-app
Open

feat(catalog): add Louez#576
loan-talvat wants to merge 1 commit into
oblien:mainfrom
loan-talvat:add-louez-app

Conversation

@loan-talvat

Copy link
Copy Markdown

Adds Louez to the one-click catalog — an AGPL-3.0 equipment rental platform: a booking storefront with live availability for customers, and a back office for reservations, pickups and returns, customers, PDF contracts and revenue statistics. It fills a gap in the catalog: rental of physical goods, which none of the current 28 apps cover.

The template

Three services, following guides/add-an-app:

Service Image Role
louez synapsr/louez:2.1.0 Storefront + dashboard + API, port 3000. Creates its own database schema on first boot
louez-db mysql:8.4 Database, with a mysqladmin ping healthcheck
louez-storage minio/minio:RELEASE.2025-09-07T16-13-09Z Product photos

Every credential is generated: the MySQL password flows into the app's DATABASE_URL through {{config:MYSQL_PASSWORD}}, the MinIO password into S3_SECRET_ACCESS_KEY, and AUTH_SECRET is its own generated field. AUTH_URL and NEXT_PUBLIC_APP_URL come from {{publicUrl:louez}} — the app binds sign-in to that origin.

The bucket is created by a prepare step rather than a fourth container: mc mb --ignore-existing local/louez, phase: post-ready with a readiness poll on mc alias set, so it is re-run safe. The bucket stays private — Louez streams images same-origin under /files with its own credentials, which is why the storage service is not exposed.

What was verified

  • bun scripts/gen-catalog.ts regenerated catalog.json (the diff is a pure addition, no drift).
  • Your own validator, run against the built catalog: isValidAppTemplate(louez)true, parseAppTemplate → ok, and all 29 apps still validate.
  • louez.json validates against https://openship.io/app.schema.json.
  • The same three-service topology (identical images, wiring and bucket step) was deployed and exercised end to end under plain Docker Compose: services healthy, schema installed automatically, account created, a product image uploaded through the app into the MinIO bucket and served back byte-identical.

available is left false as CONTRIBUTING asks, since I have not yet run it on a real Openship instance — happy to flip it once someone does, or to adjust anything that does not match house style.

One detail: logo: "louez" is not a simpleicons slug, so it will fall back to the role glyph. Tell me where vendored SVGs live and I will add the mark.

Equipment rental platform: a booking storefront with live availability
and a back office for reservations, customers and PDF contracts.

Three services: the app, MySQL 8.4 and MinIO for product photos. The app
creates its own database schema on first boot; a prepare step creates the
image bucket once MinIO answers.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant