SuperExpress
SuperExpress is an enhanced Express.js server application with built-in middleware for logging, security, health checks, and more. This project aims to provide a ready-to-use Express.js server setup with configurable options.
Features
- Logging: Uses Morgan for HTTP request logging.
- Security: Adds various security headers.
- Body Parsing: Configurable body parser with a high payload limit.
- Health Checks: An endpoint to check if the server is alive.
- Stats Endpoint: Provides server and application statistics.
- Tracing: Supports request tracing.
Installation
To install the dependencies, run:
npm install
Usage
Importing and Initializing
To use SuperExpress, you need to import and initialize it in your application:
import createSuperExpressApp from './index.js';
const options = {
bodyParser: true,
helmet: true,
morgan: true,
nitur: true,
stats: true,
packageJsonPath: './package.json',
tracing: true,
eagerLoadUserPermissions: true,
aliveEndpointOptions: { customOption: 'value' }
};
const app = await createSuperExpressApp(options);
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
Options
You can customize the behavior of SuperExpress by passing an options object:
bodyParser
(boolean): Enables or disables the body parser middleware.helmet
(boolean): Enables or disables security headers.morgan
(boolean): Enables or disables HTTP request logging.nitur
(boolean): Enables or disables the alive endpoint.stats
(boolean): Enables or disables the stats endpoint.packageJsonPath
(string): Path to the package.json
file for the stats endpoint.tracing
(boolean): Enables or disables request tracing.eagerLoadUserPermissions
(boolean): Enables or disables eager loading of user permissions for tracing middleware.aliveEndpointOptions
(object): Options to customize the alive endpoint.
Endpoints
Alive Endpoint
- Path:
/alive
- Method:
GET
- Description: Checks if the server is alive.
Stats Endpoint
- Path:
/
- Method:
GET
- Description: Provides server and application statistics.
Tests
This project uses Node.js's built-in test runner for testing. To run the tests, execute:
node --test index.test.js
Example
Here's an example of how to set up and run the server:
import createSuperExpressApp from './index.js';
const options = {
bodyParser: true,
helmet: true,
morgan: true,
nitur: true,
stats: true,
packageJsonPath: './package.json',
tracing: true,
eagerLoadUserPermissions: true,
aliveEndpointOptions: { customOption: 'value' }
};
const app = await createSuperExpressApp(options);
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
Contributing
Feel free to submit issues or pull requests. Contributions are welcome!
License
This project is licensed under the MIT License.