Source: https://seerepo.com/r/HabitRPG/habitica/built
Markdown source: https://seerepo.com/r/HabitRPG/habitica/built.md
Description: habitica is a JavaScript repo built with Express, method-override, Vite, Vue, and vue-router. It stores its data in MongoDB.

# What is habitica built with?

habitica is a JavaScript repo built with Express, method-override, Vite, Vue, and vue-router. It stores its data in MongoDB, signs people in with Passport, bcrypt, cookie-session, express-basic-auth, helmet, and 3 more, takes payments with Stripe, makes its content with csv-stringify, js2xmlparser, micromustache, remove-markdown, and xml2js, validates its data with validator and express-validator, is tested with sinon, Chai, chai-as-promised, Mocha, sinon-chai, and 2 more, deploys with @google-cloud/trace-agent, morgan, and winston, and uses Redis, bullmq, and Firebase. It has 233,377 written lines, with 466 test files.

Read on November 9, 2026, at commit 12091ca.

Repository: https://github.com/HabitRPG/habitica

## Backend (/)

### The base

- **[Express](https://seerepo.com/uses/express)**: 5 files · [in package.json](https://github.com/HabitRPG/habitica/blob/12091ca02990533fdf38c2f0947397f0b4e39d59/package.json)

### Data

- **[MongoDB](https://seerepo.com/uses/mongodb)**: 42 files · [website/server/models/user/index.js, line 1](https://github.com/HabitRPG/habitica/blob/12091ca02990533fdf38c2f0947397f0b4e39d59/website/server/models/user/index.js#L1)
- **[Redis](https://seerepo.com/uses/redis)**: 2 files · [website/server/libs/redis.js, line 1](https://github.com/HabitRPG/habitica/blob/12091ca02990533fdf38c2f0947397f0b4e39d59/website/server/libs/redis.js#L1)
- **[bullmq](https://seerepo.com/uses/bullmq)**: 1 file

### Sign-in

- **[Passport](https://seerepo.com/uses/passport)**: 3 files
- **[bcrypt](https://seerepo.com/uses/bcrypt)**: 1 file
- **cookie-session**: 1 file
- **express-basic-auth**: 1 file
- **[helmet](https://seerepo.com/uses/helmet)**: 1 file
- **[jsonwebtoken](https://seerepo.com/uses/jsonwebtoken)**: 1 file
- **[jwks-rsa](https://seerepo.com/uses/jwks-rsa)**: 1 file
- **passport-google-oauth20**: 1 file

### Services

- **[Firebase](https://seerepo.com/uses/firebase)**: 3 files · [website/server/libs/setupFirebase.js, line 1](https://github.com/HabitRPG/habitica/blob/12091ca02990533fdf38c2f0947397f0b4e39d59/website/server/libs/setupFirebase.js#L1)
- **[Stripe](https://seerepo.com/uses/stripe)**: 1 file · [website/server/libs/payments/stripe/api.js, line 1](https://github.com/HabitRPG/habitica/blob/12091ca02990533fdf38c2f0947397f0b4e39d59/website/server/libs/payments/stripe/api.js#L1)

## Support (/)

### The base

- **method-override**: 1 file

### Content

- **csv-stringify**: 1 file
- **js2xmlparser**: 1 file
- **micromustache**: 1 file
- **remove-markdown**: 1 file
- **[xml2js](https://seerepo.com/uses/xml2js)**: 1 file

### Validation

- **[validator](https://seerepo.com/uses/validator)**: 24 files
- **express-validator**: 1 file

### Testing

- **sinon**: 5 files
- **Chai**: 2 files
- **chai-as-promised**: 1 file
- **Mocha**: 1 file
- **sinon-chai**: 1 file

### Deploy

- **@google-cloud/trace-agent**: 1 file
- **[morgan](https://seerepo.com/uses/morgan)**: 1 file
- **[winston](https://seerepo.com/uses/winston)**: 1 file

### Tools

- **gulp**: 6 files
- **Babel**: 2 files
- **glob**: 2 files
- **rimraf**: 2 files
- **gulp-babel**: 1 file
- **gulp-filter**: 1 file
- **ps-tree**: 1 file

### Other

- **Lodash**: 181 files
- **nconf**: 78 files
- **moment**: 54 files
- **uuid**: 44 files
- **cwait**: 8 files
- **superagent**: 2 files
- **@parse/node-apn**: 1 file
- **@slack/webhook**: 1 file
- **accepts**: 1 file
- **body-parser**: 1 file
- **chalk**: 1 file
- **compression**: 1 file
- **cross-spawn**: 1 file
- **got**: 1 file
- **merge-stream**: 1 file
- **on-headers**: 1 file
- **rate-limiter-flexible**: 1 file
- **short-uuid**: 1 file

## Frontend (website/client)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in website/client/package.json](https://github.com/HabitRPG/habitica/blob/12091ca02990533fdf38c2f0947397f0b4e39d59/website/client/package.json)
- **[Vue](https://seerepo.com/uses/vue)**: 21 files · [in website/client/package.json](https://github.com/HabitRPG/habitica/blob/12091ca02990533fdf38c2f0947397f0b4e39d59/website/client/package.json)
- **[vue-router](https://seerepo.com/uses/vue-router)**: 5 files

### Interface

- **[vuedraggable](https://seerepo.com/uses/vuedraggable)**: 3 files
- **axios-progress-bar**: 1 file
- **bootstrap-vue**: 1 file
- **intro.js**: 1 file

## Support (website/client)

### Validation

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

### Testing

- **Vitest**: 34 files
- **@vue/test-utils**: 8 files
- **sinon**: 7 files
- **sinon-chai**: 2 files
- **chai-as-promised**: 1 file

### Other

- **Lodash**: 89 files
- **Axios**: 55 files
- **moment**: 40 files
- **uuid**: 12 files
- **stopword**: 1 file

## Other repos with a similar stack

- [n8n-io/n8n](https://seerepo.com/r/n8n-io/n8n/built): Express, MongoDB, Redis, Vite, Vue, vue-router, jsonwebtoken, validator, winston, vuedraggable · [Compare](https://seerepo.com/compare/HabitRPG/habitica/vs/n8n-io/n8n)
- [twentyhq/twenty](https://seerepo.com/r/twentyhq/twenty/built): Express, Redis, bullmq, Stripe, Vite, Passport, bcrypt, jsonwebtoken, passport-google-oauth20 · [Compare](https://seerepo.com/compare/HabitRPG/habitica/vs/twentyhq/twenty)
- [LibreChat-AI/LibreChat](https://seerepo.com/r/LibreChat-AI/LibreChat/built): Express, MongoDB, Redis, Firebase, Vite, helmet, jsonwebtoken, jwks-rsa, winston · [Compare](https://seerepo.com/compare/HabitRPG/habitica/vs/LibreChat-AI/LibreChat)
- [novuhq/novu](https://seerepo.com/r/novuhq/novu/built): Express, MongoDB, Redis, bullmq, Vite, Passport, bcrypt, helmet, jsonwebtoken · [Compare](https://seerepo.com/compare/HabitRPG/habitica/vs/novuhq/novu)
- [ToolJet/ToolJet](https://seerepo.com/r/ToolJet/ToolJet/built): Express, Redis, bullmq, Stripe, bcrypt, express-basic-auth, helmet, winston · [Compare](https://seerepo.com/compare/HabitRPG/habitica/vs/ToolJet/ToolJet)
- [immich-app/immich](https://seerepo.com/r/immich-app/immich/built): Redis, bullmq, Vite, bcrypt, helmet, jsonwebtoken, validator · [Compare](https://seerepo.com/compare/HabitRPG/habitica/vs/immich-app/immich)

## Frequently asked questions

### What language is habitica written in?

habitica is written in JavaScript, with 233,377 written lines.

### What framework does habitica use?

habitica is built with Express, method-override, Vite, Vue, and vue-router.

The proof: [in package.json](https://github.com/HabitRPG/habitica/blob/12091ca02990533fdf38c2f0947397f0b4e39d59/package.json)

### What database does habitica use?

habitica stores its data in MongoDB.

The proof: [website/server/models/user/index.js, line 1](https://github.com/HabitRPG/habitica/blob/12091ca02990533fdf38c2f0947397f0b4e39d59/website/server/models/user/index.js#L1)

### What does habitica sign people in with?

habitica signs people in with Passport, bcrypt, cookie-session, express-basic-auth, helmet, jsonwebtoken, jwks-rsa, and passport-google-oauth20.

### What does habitica take payments with?

habitica takes payments with Stripe.

The proof: [website/server/libs/payments/stripe/api.js, line 1](https://github.com/HabitRPG/habitica/blob/12091ca02990533fdf38c2f0947397f0b4e39d59/website/server/libs/payments/stripe/api.js#L1)

### What services does habitica use?

habitica uses Redis, bullmq, and Firebase.

The proof: [website/server/libs/redis.js, line 1](https://github.com/HabitRPG/habitica/blob/12091ca02990533fdf38c2f0947397f0b4e39d59/website/server/libs/redis.js#L1)

### Does habitica have tests?

Yes. habitica has 466 test files and is tested with sinon, Chai, chai-as-promised, Mocha, sinon-chai, Vitest, and @vue/test-utils.

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

The ones that share most of its stack: n8n-io/n8n, twentyhq/twenty, and LibreChat-AI/LibreChat.

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