Source: https://seerepo.com/r/advplyr/audiobookshelf/built
Markdown source: https://seerepo.com/r/advplyr/audiobookshelf/built.md
Description: audiobookshelf is a JavaScript repo built with Express, Nuxt, and Vue. It stores its data in lru-cache and SQLite and reaches it with Sequelize.

# What is audiobookshelf built with?

audiobookshelf is a JavaScript repo built with Express, Nuxt, and Vue. It stores its data in lru-cache and SQLite, reaches it with Sequelize, signs people in with Passport, express-session, openid-client, and passport-jwt, makes its content with htmlparser2, xml2js, nodemailer, and epubjs, and is tested with Chai and sinon. It has 149,011 written lines, with 47 test files.

Read on November 8, 2026, at commit f57ca09.

Repository: https://github.com/advplyr/audiobookshelf

## Backend (/)

### The base

- **[Express](https://seerepo.com/uses/express)**: 31 files · [in package.json](https://github.com/advplyr/audiobookshelf/blob/f57ca09f6ea7b02efbec0549bf1960b9ba5de427/package.json)

### Data

- **[lru-cache](https://seerepo.com/uses/lru-cache)**: 5 files
- **[SQLite](https://seerepo.com/uses/sqlite)**: 2 files · [server/managers/BackupManager.js, line 1](https://github.com/advplyr/audiobookshelf/blob/f57ca09f6ea7b02efbec0549bf1960b9ba5de427/server/managers/BackupManager.js#L1)

### Data access

- **Sequelize**: 49 files

### Sign-in

- **[Passport](https://seerepo.com/uses/passport)**: 4 files
- **[express-session](https://seerepo.com/uses/express-session)**: 2 files
- **[openid-client](https://seerepo.com/uses/openid-client)**: 1 file
- **passport-jwt**: 1 file

## Support (/)

### Content

- **[htmlparser2](https://seerepo.com/uses/htmlparser2)**: 2 files
- **[xml2js](https://seerepo.com/uses/xml2js)**: 2 files
- **[nodemailer](https://seerepo.com/uses/nodemailer)**: 1 file

### Testing

- **Chai**: 33 files
- **sinon**: 25 files

### Other

- **Axios**: 16 files
- **graceful-fs**: 14 files
- **cookie-parser**: 1 file
- **express-rate-limit**: 1 file
- **p-throttle**: 1 file
- **SemVer**: 1 file
- **Socket.io**: 1 file

## Frontend (client)

### The base

- **Nuxt**: [in client/package.json](https://github.com/advplyr/audiobookshelf/blob/f57ca09f6ea7b02efbec0549bf1960b9ba5de427/client/package.json)
- **[Vue](https://seerepo.com/uses/vue)**: [in client/package.json](https://github.com/advplyr/audiobookshelf/blob/f57ca09f6ea7b02efbec0549bf1960b9ba5de427/client/package.json)

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**

### Interface

- **[vuedraggable](https://seerepo.com/uses/vuedraggable)**: 5 files
- **trix**: 1 file
- **vue-toastification**: 1 file

## Support (client)

### Content

- **epubjs**: 1 file

### Other

- **Axios**: 1 file
- **cron-parser**: 1 file
- **date-fns**: 1 file
- **fast-average-color**: 1 file
- **hls.js**: 1 file

## Other repos with a similar stack

- [nocodb/nocodb](https://seerepo.com/r/nocodb/nocodb/built): Express, lru-cache, SQLite, Nuxt, Vue, passport-jwt, nodemailer, vuedraggable · [Compare](https://seerepo.com/compare/advplyr/audiobookshelf/vs/nocodb/nocodb)
- [n8n-io/n8n](https://seerepo.com/r/n8n-io/n8n/built): Express, lru-cache, SQLite, Vue, nodemailer, vuedraggable · [Compare](https://seerepo.com/compare/advplyr/audiobookshelf/vs/n8n-io/n8n)
- [louislam/uptime-kuma](https://seerepo.com/r/louislam/uptime-kuma/built): Express, SQLite, Vue, openid-client, nodemailer, vuedraggable · [Compare](https://seerepo.com/compare/advplyr/audiobookshelf/vs/louislam/uptime-kuma)
- [twentyhq/twenty](https://seerepo.com/r/twentyhq/twenty/built): Express, Passport, express-session, openid-client, passport-jwt, nodemailer · [Compare](https://seerepo.com/compare/advplyr/audiobookshelf/vs/twentyhq/twenty)
- [novuhq/novu](https://seerepo.com/r/novuhq/novu/built): Express, lru-cache, Passport, passport-jwt, nodemailer, Tailwind CSS · [Compare](https://seerepo.com/compare/advplyr/audiobookshelf/vs/novuhq/novu)
- [ZuodaoTech/everyone-can-use-english](https://seerepo.com/r/ZuodaoTech/everyone-can-use-english/built): lru-cache, SQLite, Nuxt, Vue, Sequelize, Tailwind CSS · [Compare](https://seerepo.com/compare/advplyr/audiobookshelf/vs/ZuodaoTech/everyone-can-use-english)

## Frequently asked questions

### What language is audiobookshelf written in?

audiobookshelf is written in JavaScript, with 149,011 written lines.

### What framework does audiobookshelf use?

audiobookshelf is built with Express, Nuxt, and Vue.

The proof: [in package.json](https://github.com/advplyr/audiobookshelf/blob/f57ca09f6ea7b02efbec0549bf1960b9ba5de427/package.json)

### What database does audiobookshelf use?

audiobookshelf stores its data in lru-cache and SQLite and reaches it with Sequelize.

### What does audiobookshelf sign people in with?

audiobookshelf signs people in with Passport, express-session, openid-client, and passport-jwt.

### Does audiobookshelf have tests?

Yes. audiobookshelf has 47 test files and is tested with Chai and sinon.

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

The ones that share most of its stack: nocodb/nocodb, n8n-io/n8n, and louislam/uptime-kuma.

## 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.
