Skip to content

A express scaffolding project to create express projects with the best practices and industry standards.

License

Notifications You must be signed in to change notification settings

anuragmerndev/expgen

Repository files navigation

@devsphere/expgen - scaffolding express application under 1 sec

@devsphere/expgen

A npm package for Express which helps in scaffolding the application from scratch in less than a minute. The package is built for both SQL and NoSQL databases, following best practices in Node.js with TypeScript, including logging, multi-threading, GitHub hooks, and Dockerfile to make the project production-ready.

Features

  • Scaffolds an Express project with a widely used MVC project structure.
  • Supports both SQL and NoSQL databases.
  • Implements best practices for Node.js with TypeScript.
  • Integrated logging with Winston.
  • Provides options for linting, prettier, validation, GitHub hooks, and Docker integration.

Clean Architecture Implementation

This project implements the principles of Clean Architecture as follows:

  • Entities or schema are stored in the model folder.
  • Services have access to models, ensuring separation of concerns.
  • Controllers only have access to services, facilitating loose coupling.
  • Routers have access to controllers, maintaining a clear separation of concerns.
  • app.ts contains all the logic related to the Express app setup.
  • Server clustering and related logic are handled in server.ts.

Installation

You don't need to install anything! Simply use the following command to scaffold your project:

  npx @devsphere/expgen myproject
  cd my-project
  npm install
  mv .env.example .env //replace the env variables

The command will prompt you with questions regarding your project setup, including database choice, linting, prettier, logging, validation, GitHub hooks, and Docker integration.

Usage

For SQL

  npm run prisma:generate //genrate prisma client to work with
  npm run prisma:migrate //create and migrate schema to your server
  npm run start:dev

For NoSQL

  //uncomment the code in server.ts
  npm run start:dev

For running on production and using clustering

  npm run build
  npm run start:prod

Contributing

Contributions are welcome! Feel free to pick any task from the future work section below and start working on it. For any questions or suggestions, please reach out on anuragmerndeveloper@gmail.com.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Future Work

  • Adding GraphQL as an option.
  • Adding Domain-Driven Design (DDD) as another architecture option.
  • Integrating Swagger for API documentation.

About

A express scaffolding project to create express projects with the best practices and industry standards.

Resources

License

Stars

Watchers

Forks

Packages

No packages published