Use this page when you are changing Stuff Stash itself. If you only want to evaluate the app, start with Run Stuff Stash.
Requirements
Section titled “Requirements”- Go
1.25.8or newer. - Docker with Compose.
- Lefthook.
- pnpm
11.0.7.
The repository pins dependencies, container images, GitHub Actions, and tooling versions intentionally. Supply-chain security is part of the project boundary.
Runtime settings are listed in the Configuration Reference.
Run the API with in-memory local adapters:
make runCheck health:
curl http://localhost:8080/healthzExpected response:
{"service":"stuff-stash","status":"healthy"}Run API tests:
make testFull Local Stack
Section titled “Full Local Stack”Run Postgres, SpiceDB, Dex, migrations, and the API with Docker:
make compose-up-oidcWith the Docker stack, verify the OIDC and authorization flow:
make verify-dex-oidc-apiStop the Docker stack:
make compose-downHost Dex Mobile OIDC
Section titled “Host Dex Mobile OIDC”If you use the local Dex binary, start Dex and the API as host processes:
make dex-localmake run-oidc-localVerify the native mobile authorization-code flow, PKCE exchange, refresh
exchange, API mobile metadata, and /me with the refreshed mobile ID token:
make verify-mobile-oidc-pkce-localFor physical-device mobile OIDC testing, run Dex and the API with a LAN-reachable
issuer. Replace 192.168.1.50 with this machine’s LAN IP:
make dex-local STUFF_STASH_LOCAL_HOST=192.168.1.50make run-oidc-local STUFF_STASH_LOCAL_HOST=192.168.1.50STUFF_STASH_LOCAL_HOST=192.168.1.50 make verify-mobile-oidc-pkce-localThe Docker workflow can also use a LAN issuer:
make compose-up-oidc-lan STUFF_STASH_LAN_HOST=192.168.1.50Web App
Section titled “Web App”Start the web app:
make web-installmake web-devOpen http://localhost:5173.
Run web checks:
make web-testmake web-checkmake web-buildAPI Client
Section titled “API Client”The browser app uses the generated TypeScript API client at its adapter boundary. When the OpenAPI contract changes, regenerate and check it:
make api-client-generatemake api-client-testmake api-client-checkmake api-client-check-generatedRun the docs site:
make docs-installmake docs-devBuild the docs:
make docs-buildPre-Commit
Section titled “Pre-Commit”Run the configured hooks:
lefthook run pre-commit --all-filesThe hook runs Go formatting, Go tests, and structural checks for common project drift such as raw SQL in Go code, ad hoc prints, oversized Go files, HTTP adapter organization drift, and GORM adapter catch-all files.