# davellanedam/node-express-mongodb-jwt-rest-api-skeleton

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/davellanedam-node-express-mongodb-jwt-rest-api-skeleton).**

909 stars · 282 forks · JavaScript · MIT

## Links

- GitHub: https://github.com/davellanedam/node-express-mongodb-jwt-rest-api-skeleton
- awesome-repositories: https://awesome-repositories.com/repository/davellanedam-node-express-mongodb-jwt-rest-api-skeleton.md

## Topics

`api` `async-await` `chai` `eslint` `express` `front-end` `javascript` `jwt` `jwt-authentication` `mocha` `mongodb` `mongoose` `mvp` `node` `nodejs` `postman` `redis` `rest` `testing` `token`

## Description

This project is a starter template for building secure web services and REST application backends using Node.js, Express, MongoDB, and JSON Web Tokens. It provides a foundation for server-side development, incorporating document mapping for database integration, cryptographic token authentication, and role-based access control.

The system features user account administration, automated database seeding and cleanup scripts, dynamic file-based routing, and environment-based configuration management. Security features include brute-force protection through failed login tracking and request activity logging that records client IP addresses, browser details, and location data during login events.

Additional capabilities cover data caching using Redis, automated endpoint testing, localized email delivery through external transport providers, API documentation generation, and client language detection from incoming request headers.

## Tags

### Security & Cryptography

- [Token-Based Authentication](https://awesome-repositories.com/f/security-cryptography/token-based-authentication.md) — Verifies user identity by issuing and validating cryptographic tokens on incoming requests.
- [Brute Force Protections](https://awesome-repositories.com/f/security-cryptography/brute-force-protections.md) — Tracks failed login attempts and temporarily blocks suspicious IPs to protect accounts from brute-force attacks. ([source](https://github.com/davellanedam/node-express-mongodb-jwt-rest-api-skeleton#readme))
- [JSON Web Tokens](https://awesome-repositories.com/f/security-cryptography/json-web-tokens.md) — Issues and validates signed JSON Web Tokens to authenticate users and secure protected routes.
- [Role-Based Access Control](https://awesome-repositories.com/f/security-cryptography/role-based-access-control.md) — Enforces role-based permissions on incoming requests to restrict access to sensitive administrative actions. ([source](https://github.com/davellanedam/node-express-mongodb-jwt-rest-api-skeleton/blob/development/README.md))
- [Token Authentication](https://awesome-repositories.com/f/security-cryptography/token-authentication.md) — Secures backend endpoints by issuing, validating, and refreshing signed JSON web tokens. ([source](https://github.com/davellanedam/node-express-mongodb-jwt-rest-api-skeleton#readme))
- [Access and Refresh Token Issuances](https://awesome-repositories.com/f/security-cryptography/access-token-management/offline-access-tokens/access-and-refresh-token-issuances.md) — Issues new session tokens using a refresh mechanism to maintain continuous authentication. ([source](https://github.com/davellanedam/node-express-mongodb-jwt-rest-api-skeleton/blob/master/README.md))
- [User Profile Management](https://awesome-repositories.com/f/security-cryptography/identity-access-management/identity-management/user-management/user-profile-management.md) — Provides email registration, profile management, and administrator user listings. ([source](https://github.com/davellanedam/node-express-mongodb-jwt-rest-api-skeleton/blob/master/README.md))
- [User Role Management](https://awesome-repositories.com/f/security-cryptography/identity-access-management/identity-management/user-management/user-role-management.md) — Provides user account administration and profile management with assigned role permissions. ([source](https://github.com/davellanedam/node-express-mongodb-jwt-rest-api-skeleton#readme))

### Web Development

- [REST API Backends](https://awesome-repositories.com/f/web-development/rest-api-backends.md) — Provides a secure REST API backend built with Express and MongoDB to handle client requests.
- [File-System Based Routing](https://awesome-repositories.com/f/web-development/dynamic-routing/file-system-based-routing.md) — Automatically discovers and registers route controllers and models from designated file paths.
- [Node.js API Frameworks](https://awesome-repositories.com/f/web-development/node-js-api-frameworks.md) — Organizes server-side routing and middleware using the Node.js Express framework.
- [RESTful Endpoints](https://awesome-repositories.com/f/web-development/restful-endpoints.md) — Initializes a structured web server and routing framework for handling HTTP requests. ([source](https://github.com/davellanedam/node-express-mongodb-jwt-rest-api-skeleton/blob/development/package-lock.json))

### Data & Databases

- [Database Connection Managers](https://awesome-repositories.com/f/data-databases/database-connection-managers.md) — Establishes and manages persistent connections to MongoDB document stores. ([source](https://github.com/davellanedam/node-express-mongodb-jwt-rest-api-skeleton/blob/development/package-lock.json))
- [MongoDB Integrations](https://awesome-repositories.com/f/data-databases/mongodb-integrations.md) — Connects to MongoDB document databases to persist application records and manage schemas.
- [Object-Document Mappers](https://awesome-repositories.com/f/data-databases/object-document-mappers.md) — Establishes database connections and structures persistence using an object document mapper.
- [Application Data Caches](https://awesome-repositories.com/f/data-databases/data-engineering-infrastructure/caching-performance/caching/memcached/application-data-caches.md) — Stores frequently accessed data in an in-memory caching layer to reduce database load and speed up response times. ([source](https://github.com/davellanedam/node-express-mongodb-jwt-rest-api-skeleton/blob/master/README.md))
- [Paginated Results](https://awesome-repositories.com/f/data-databases/query-aggregates/paginated-results.md) — Splits large dataset queries into manageable pages for optimal transfer and rendering. ([source](https://github.com/davellanedam/node-express-mongodb-jwt-rest-api-skeleton/blob/development))
- [Redis Caching Layers](https://awesome-repositories.com/f/data-databases/redis-caching-layers.md) — Utilizes Redis as an in-memory data cache to accelerate lookup queries. ([source](https://github.com/davellanedam/node-express-mongodb-jwt-rest-api-skeleton/blob/development))

### Development Tools & Productivity

- [Boilerplates](https://awesome-repositories.com/f/development-tools-productivity/rest-apis/boilerplates.md) — Serves as a ready-to-use project starter with Mongoose ODM and role-based access control preconfigured.
- [Multi-Environment Configuration Systems](https://awesome-repositories.com/f/development-tools-productivity/multi-environment-configuration-systems.md) — Adjusts application configurations automatically for development and production stages. ([source](https://github.com/davellanedam/node-express-mongodb-jwt-rest-api-skeleton/blob/development))

### Part of an Awesome List

- [Transactional Email Notifications](https://awesome-repositories.com/f/awesome-lists/media/email-and-notifications/customizable-email-notification-platforms/transactional-email-notifications.md) — Triggers automated transactional emails for system events such as account registration and alerts. ([source](https://github.com/davellanedam/node-express-mongodb-jwt-rest-api-skeleton/blob/development))

### Software Engineering & Architecture

- [Environment-Based Behavior](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/configuration-management/environment-variable-management/environment-variables/environment-variable-sets/application-environment-flags/environment-based-behavior.md) — Switches application settings and runtime behaviors based on deployment environments.

### Testing & Quality Assurance

- [API Endpoint Testing](https://awesome-repositories.com/f/testing-quality-assurance/api-endpoint-testing.md) — Executes automated test suites against API endpoints to verify functional correctness and prevent regressions. ([source](https://github.com/davellanedam/node-express-mongodb-jwt-rest-api-skeleton#readme))
