Source: https://seerepo.com/r/stashapp/stash/built
Markdown source: https://seerepo.com/r/stashapp/stash/built.md
Description: stash is a Go repo built with net/http, chi, 99designs, Vite, React, and 2 more.

# What is stash built with?

stash is a Go repo built with net/http, chi, 99designs, Vite, React, and 2 more. It stores its data in SQLite, github.com/golang-migrate/migrate/v4, HashiCorp, and localforage, reaches it with github.com/jmoiron/sqlx, signs people in with github.com/gorilla/sessions, github.com/golang-jwt/jwt/v4, and github.com/gorilla/securecookie, makes its content with github.com/disintegration/imaging, github.com/antchfx/htmlquery, github.com/rwcarlsen/goexif, golang.org/x/image, react-remark, and 1 more, validates its data with yup, is tested with github.com/stretchr/testify, github.com/chromedp/cdproto, and github.com/chromedp/chromedp, deploys with github.com/sirupsen/logrus and gopkg.in/natefinch/lumberjack.v2, and uses go-sqlite3. It has 266,372 written lines, with 118 test files.

Read on November 10, 2026, at commit aefc937.

Repository: https://github.com/stashapp/stash

## Backend (/)

### The base

- **[net/http](https://seerepo.com/uses/net-http)**
- **[chi](https://seerepo.com/uses/chi)**: 11 files

### Data

- **[go-sqlite3](https://seerepo.com/uses/go-sqlite3)**
- **[SQLite](https://seerepo.com/uses/sqlite)**: 4 files · [pkg/sqlite/blob.go, line 13](https://github.com/stashapp/stash/blob/aefc9373fe57e5cb32fbbb7215fd508ed799743f/pkg/sqlite/blob.go#L13)
- **github.com/golang-migrate/migrate/v4**: 2 files
- **[HashiCorp](https://seerepo.com/uses/hashicorp)**: 2 files

### Data access

- **[github.com/jmoiron/sqlx](https://seerepo.com/uses/githubcom-jmoiron-sqlx)**: 42 files

### Sign-in

- **github.com/gorilla/sessions**: 2 files
- **[github.com/golang-jwt/jwt/v4](https://seerepo.com/uses/githubcom-golang-jwt-jwt-v4)**: 1 file
- **github.com/gorilla/securecookie**: 1 file

## Support (/)

### The base

- **99designs**: 14 files

### Content

- **github.com/disintegration/imaging**: 3 files
- **github.com/antchfx/htmlquery**: 1 file
- **github.com/rwcarlsen/goexif**: 1 file
- **[golang.org/x/image](https://seerepo.com/uses/golangorg-x-image)**: 1 file

### Testing

- **github.com/stretchr/testify**: 73 files
- **github.com/chromedp/cdproto**: 2 files
- **github.com/chromedp/chromedp**: 2 files

### Deploy

- **[github.com/sirupsen/logrus](https://seerepo.com/uses/githubcom-sirupsen-logrus)**: 4 files
- **[gopkg.in/natefinch/lumberjack.v2](https://seerepo.com/uses/gopkgin-natefinch-lumberjackv2)**: 1 file

### Other

- **github.com/json-iterator/go**: 12 files
- **golang.org/x/text**: 8 files
- **github.com/remeh/sizedwaitgroup**: 5 files
- **gopkg.in/yaml.v2**: 5 files
- **github.com/anacrolix/dms**: 4 files
- **github.com/dop251/goja**: 4 files
- **golang.org/x/net**: 4 files
- **github.com/hasura/go-graphql-client**: 3 files
- **github.com/spf13/pflag**: 3 files
- **golang.org/x/sys**: 3 files
- **github.com/knadh/koanf/v2**: 2 files
- **github.com/mitchellh/mapstructure**: 2 files
- **github.com/vektah/gqlparser/v2**: 2 files
- **[Google](https://seerepo.com/uses/google)**: 2 files
- **github.com/go-chi/cors**: 1 file
- **github.com/gorilla/websocket**: 1 file
- **github.com/jinzhu/copier**: 1 file
- **github.com/knadh/koanf/parsers/yaml**: 1 file
- **github.com/knadh/koanf/providers/env**: 1 file
- **github.com/knadh/koanf/providers/file**: 1 file
- **github.com/knadh/koanf/providers/posflag**: 1 file
- **github.com/lucasb-eyer/go-colorful**: 1 file
- **github.com/pkg/browser**: 1 file
- **github.com/sabhiram/go-gitignore**: 1 file
- **github.com/spf13/cast**: 1 file
- **github.com/tidwall/gjson**: 1 file
- **github.com/vearutop/statigz**: 1 file
- **golang.org/x/crypto**: 1 file
- **golang.org/x/term**: 1 file
- **golang.org/x/time**: 1 file

## Frontend (ui/v2.5)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in ui/v2.5/package.json](https://github.com/stashapp/stash/blob/aefc9373fe57e5cb32fbbb7215fd508ed799743f/ui/v2.5/package.json)
- **[React](https://seerepo.com/uses/react)**: 405 files · [in ui/v2.5/package.json](https://github.com/stashapp/stash/blob/aefc9373fe57e5cb32fbbb7215fd508ed799743f/ui/v2.5/package.json)
- **[react-router-dom](https://seerepo.com/uses/react-router-dom)**: 88 files
- **react-router-hash-link**: 3 files

### Styles

- **[classnames](https://seerepo.com/uses/classnames)**: 71 files

### Interface

- **react-bootstrap**: 233 files
- **video.js**: 15 files
- **[Formik](https://seerepo.com/uses/formik)**: 13 files
- **[react-select](https://seerepo.com/uses/react-select)**: 10 files
- **@ant-design/react-slick**: 2 files
- **@react-hook/resize-observer**: 1 file
- **[react-datepicker](https://seerepo.com/uses/react-datepicker)**: 1 file

### Icons

- **[Font Awesome](https://seerepo.com/uses/font-awesome)**: 160 files

## Backend (ui/v2.5)

### Data

- **[localforage](https://seerepo.com/uses/localforage)**: 2 files

## Support (ui/v2.5)

### Content

- **react-remark**: 1 file
- **[remark-gfm](https://seerepo.com/uses/remark-gfm)**: 1 file

### Validation

- **[yup](https://seerepo.com/uses/yup)**: 12 files

### Tools

- **@graphql-codegen/cli**: 1 file

### Other

- **react-intl**: 270 files
- **Lodash**: 52 files
- **mousetrap**: 36 files
- **react-helmet**: 16 files
- **@apollo/client**: 14 files
- **graphql-ws**: 2 files
- **i18n-iso-countries**: 2 files
- **moment**: 2 files
- **ua-parser-js**: 2 files
- **apollo-upload-client**: 1 file
- **crypto-js**: 1 file
- **event-target-polyfill**: 1 file
- **formatjs**: 1 file
- **universal-cookie**: 1 file

## Other repos with a similar stack

- [mudler/LocalAI](https://seerepo.com/r/mudler/LocalAI/built): net/http, go-sqlite3, SQLite, Vite, React, react-router-dom, golang.org/x/image · [Compare](https://seerepo.com/compare/mudler/LocalAI/vs/stashapp/stash)
- [ollama/ollama](https://seerepo.com/r/ollama/ollama/built): net/http, go-sqlite3, SQLite, Vite, React, golang.org/x/image · [Compare](https://seerepo.com/compare/ollama/ollama/vs/stashapp/stash)
- [infiniflow/ragflow](https://seerepo.com/r/infiniflow/ragflow/built): net/http, React, golang.org/x/image, gopkg.in/natefinch/lumberjack.v2, classnames, remark-gfm · [Compare](https://seerepo.com/compare/infiniflow/ragflow/vs/stashapp/stash)
- [strapi/strapi](https://seerepo.com/r/strapi/strapi/built): Vite, React, react-router-dom, Formik, react-select, yup · [Compare](https://seerepo.com/compare/stashapp/stash/vs/strapi/strapi)
- [usememos/memos](https://seerepo.com/r/usememos/memos/built): net/http, SQLite, Vite, React, react-router-dom, github.com/disintegration/imaging · [Compare](https://seerepo.com/compare/stashapp/stash/vs/usememos/memos)
- [go-gitea/gitea](https://seerepo.com/r/go-gitea/gitea/built): chi, go-sqlite3, SQLite, Vite, github.com/gorilla/sessions, golang.org/x/image · [Compare](https://seerepo.com/compare/go-gitea/gitea/vs/stashapp/stash)

## Frequently asked questions

### What language is stash written in?

stash is written in Go, with 266,372 written lines.

### What framework does stash use?

stash is built with net/http, chi, 99designs, Vite, React, react-router-dom, and react-router-hash-link.

### What database does stash use?

stash stores its data in SQLite, github.com/golang-migrate/migrate/v4, HashiCorp, and localforage and reaches it with github.com/jmoiron/sqlx.

The proof: [pkg/sqlite/blob.go, line 13](https://github.com/stashapp/stash/blob/aefc9373fe57e5cb32fbbb7215fd508ed799743f/pkg/sqlite/blob.go#L13)

### What does stash sign people in with?

stash signs people in with github.com/gorilla/sessions, github.com/golang-jwt/jwt/v4, and github.com/gorilla/securecookie.

### What services does stash use?

stash uses go-sqlite3.

### Does stash have tests?

Yes. stash has 118 test files and is tested with github.com/stretchr/testify, github.com/chromedp/cdproto, and github.com/chromedp/chromedp.

### Which repos have a stack like stash's?

The ones that share most of its stack: mudler/LocalAI, ollama/ollama, and infiniflow/ragflow.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
