https://github.com/hawkinslabdev/substash
Browse Stash content from a Reddit-like web client
https://github.com/hawkinslabdev/substash
bdfr front-end organizer reddit stash stashapp
Last synced: 2 days ago
JSON representation
Browse Stash content from a Reddit-like web client
- Host: GitHub
- URL: https://github.com/hawkinslabdev/substash
- Owner: hawkinslabdev
- License: agpl-3.0
- Created: 2026-05-01T19:40:39.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-06-09T07:45:51.000Z (11 days ago)
- Last Synced: 2026-06-09T09:26:35.453Z (11 days ago)
- Topics: bdfr, front-end, organizer, reddit, stash, stashapp
- Language: TypeScript
- Homepage:
- Size: 1.54 MB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
#
Substash
[](LICENSE)
Substash is a mobile-first, single-user web application that acts as a Reddit-esque frontend that'll allow you to consume media from [Stash](https://github.com/stashapp/stash/). Perfect for your personal meme-collections or for your personal media library, offering a familiar way to browse and enjoy your saved content on the go.

## Getting Started
You can run Substash locally using Docker Compose:
```yaml
services:
substash:
image: ghcr.io/hawkinslabdev/substash:latest
ports:
- "9456:9456"
volumes:
- ./data:/app/data
environment:
- TZ=Europe/Amsterdam
- PUBLIC_APP_URL=http://localhost:9456
- PUBLIC_APP_ORIGINS=http://localhost
- PUBLIC_AUTH_COOKIE_SECURE=false
- STASH_API_KEY=your_api_key_here
- SHARE_SECRET=your_share_secret_here
- DB_PATH=/app/data/substash.db
restart: unless-stopped
```
Make sure the `./data` directory has correct permissions: `mkdir -p ./data && sudo chown 1000:1000 ./data`. Once the application is running, the interface is available (by default) from `http://localhost:9456`.
**Access Control**
After setting up your instance, you can secure the web application from the `/settings` page by setting a 6-character pin.
**Filtering Media Content**
Use the `STASH_TAGS_EXCLUDED` and `STASH_TAGS_INCLUDED` environment variables to manage media content. Note that inclusion tags will override exclusion tags if you've configured both.
**Metadata Management**
By default, the application identifies media using tags. To ensure Reddit-style metadata is mapped correctly, you can customize the **JavaScript expression** provided in the **Settings** menu.
## License
This project is licensed under the **AGPL 3.0** license. See [LICENSE](LICENSE) for details.
## Contributing
Contributions including ideas, bug reports, and pull requests are welcome. Please open an issue to discuss any proposed changes or identified issues.