Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/johurul-haque/create-modular-express
Project scaffolder containing starter code for express configured with typescript, mongoose and zod.
https://github.com/johurul-haque/create-modular-express
expressjs mongodb mongoose scaffolder typescript zod
Last synced: 5 days ago
JSON representation
Project scaffolder containing starter code for express configured with typescript, mongoose and zod.
- Host: GitHub
- URL: https://github.com/johurul-haque/create-modular-express
- Owner: johurul-haque
- Created: 2023-12-11T16:01:02.000Z (11 months ago)
- Default Branch: master
- Last Pushed: 2024-06-14T13:42:33.000Z (5 months ago)
- Last Synced: 2024-09-18T18:19:57.141Z (about 2 months ago)
- Topics: expressjs, mongodb, mongoose, scaffolder, typescript, zod
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/create-modular-express
- Size: 102 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# create-modular-express
Scaffolder tool containing starter code for express configured with typescript, mongoose and zod.## Getting started
```bash
npx create-modular-express
```
Optionally, you can add a period(`.`) at the end to use the current directory or specify the project name to scaffold the project.### Scripts
After installing all of the dependencies change the `.env.example` file `.env` and add the necessary variables.Now you can use the following commands to spin up your app
```bash
# dev server
npm run dev# production build. ⚠️ Only use npm for this
npm run build# running in production
npm start
```## Tech stack
- **Express.js** - Route handling and middlewares
- **TypeScript** - Static type checking
- **Zod** - Validating and parsing incoming data and inferring types
- **Mongoose** - Data modeling and query building
- **MongoDB** - Storing and managing data## Features Overview
- **Modular pattern** - The application adheres to the modular pattern. With each module having six necessary files. Use [this tool](https://www.npmjs.com/package/write-module) to quickly generate those files.
- **import alias** - Pre-configured with import alias `(@/*)`. Also ensures the absolute paths get resolved to relative paths during build time.
- **AppError** - Extended class of the `Error` instance for adding an extra status code parameter.
- **catchAsync** - Utility function for wrapping asynchronous route handlers—ensuring proper error handling by forwarding any errors to the Express error-handling middleware.
- **validateRequest** - Middleware function, expects any zod schema as arguments. Validates incoming requests against a specified Zod schema for request bodies. If the validation succeeds, it allows the request to proceed; otherwise, it handles errors asynchronously.
- **globalCatch** - Error handling middleware that catches all possible errors and sends a response with a standard format.
- **Deployment** - Comes with Vercel configuration to just easily deploy on Vercel using the CLI.
- **Most importantly** - Delete what you don't need 🕶️