An open API service indexing awesome lists of open source software.

https://github.com/deadislove/nestjs-microkernel-architecture-template

NestJS Microkernel Architecture Template with Docker – A scalable, modular backend template with dynamic plugin loading, including Docker and Docker Compose support for easy setup and deployment.
https://github.com/deadislove/nestjs-microkernel-architecture-template

docker docker-compose env microkernel-architecture nestjs typeorm typescript

Last synced: 7 months ago
JSON representation

NestJS Microkernel Architecture Template with Docker – A scalable, modular backend template with dynamic plugin loading, including Docker and Docker Compose support for easy setup and deployment.

Awesome Lists containing this project

README

          


Nest Logo

[circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456
[circleci-url]: https://circleci.com/gh/nestjs/nest

A progressive Node.js framework for building efficient and scalable server-side applications.



NPM Version
Package License
NPM Downloads
CircleCI
Discord
Backers on Open Collective
Sponsors on Open Collective
Donate us
Support us
Follow us on Twitter


![Visitors](https://img.shields.io/badge/visitors-118_total-brightgreen)
![Clones](https://img.shields.io/badge/clones-23_total_18_unique-blue)

## 🧩 Project Overview

This template implements a Microkernel (Plug-in) architecture with NestJS. It enables modular design, dynamic feature loading, and scalable domain separation. It’s well-suited for building feature-rich and extensible backend systems.

Buy Me a Coffee at ko-fi.com

## πŸ— Architecture Concept

This system is divided into 3 major containers:

- Core Container

- Coordinates plugin lifecycle and provides core services (Logger, Registry, Loader).

- Plugin Container

- Holds feature modules (User, Product, etc.), each as an independent plugin.

- Infrastructure Container

- Provides shared infrastructure like database connections using DatabaseFactory.

The structure promotes low coupling, testability, and scalability.

## 🧱 Project Structure

Based on the architecture graph, here’s the folder layout:

```
β”œβ”€β”€β”€src
β”‚ β”œβ”€β”€β”€core
β”‚ β”‚ β”œβ”€β”€β”€core.module.ts
β”‚ β”‚ β”œβ”€β”€β”€core.service.ts
β”‚ β”‚ β”œβ”€β”€β”€logger
β”‚ β”‚ β”‚ └───logger.service.ts
β”‚ β”‚ β”œβ”€β”€β”€plugin
β”‚ β”‚ β”‚ β”œβ”€β”€β”€plugin.registry.ts
β”‚ β”‚ β”‚ └───dynamic.loader.ts
β”‚ β”‚ └───core.interface.ts
β”‚ β”‚
β”‚ β”œβ”€β”€β”€plugins
β”‚ β”‚ β”œβ”€β”€β”€user
β”‚ β”‚ β”‚ β”œβ”€β”€β”€user.module.ts
β”‚ β”‚ β”‚ β”œβ”€β”€β”€user.controller.ts
β”‚ β”‚ β”‚ β”œβ”€β”€β”€user.service.ts
β”‚ β”‚ β”‚ β”œβ”€β”€β”€user.repository.ts
β”‚ β”‚ β”‚ └───user.entity.ts
β”‚ β”‚ └───product
β”‚ β”‚ β”œβ”€β”€β”€product.module.ts
β”‚ β”‚ β”œβ”€β”€β”€product.controller.ts
β”‚ β”‚ β”œβ”€β”€β”€product.service.ts
β”‚ β”‚ β”œβ”€β”€β”€product.repository.ts
β”‚ β”‚ └───product.entity.ts
β”‚ β”‚
β”‚ β”œβ”€β”€β”€infrastructure
β”‚ β”‚ β”œβ”€β”€β”€database
β”‚ β”‚ β”‚ β”œβ”€β”€β”€database.module.ts
β”‚ β”‚ β”‚ β”œβ”€β”€β”€database.factory.ts
β”‚ β”‚ β”‚ β”œβ”€β”€β”€sqlite
β”‚ β”‚ β”‚ β”œβ”€β”€β”€postgres
β”‚ β”‚ β”‚ └───mysql
β”‚ β”‚
β”‚ β”œβ”€β”€β”€shared
β”‚ └───main.ts
└───test
```

## 🧩 Plugin Development Guide

When developing a new plugin, follow the steps below:

1. Create a directory under ```src/plugins```, e.g., order

2. Implement the following components:

- ```order.module.ts```
- ```order.controller.ts```
- ```order.service.ts```
- ```order.repository.ts```
- ```order.entity.ts```

3. Register the plugin in the ```PluginRegistry```

4. (Optional) Implement the ```initialize()``` and ```shutdown()``` lifecycle hooks

5. For logging, use ```LoggerService``` via dependency injection (DI)

## Project setup

```bash
$ npm install
```

## Compile and run the project

```bash
# development
$ npm run start

# watch mode
$ npm run start:dev

# production mode
$ npm run start:prod
```

## Run tests

```bash
# unit tests
$ npm run test

# e2e tests
$ npm run test:e2e

# test coverage
$ npm run test:cov
```

## Deployment

When you're ready to deploy your NestJS application to production, there are some key steps you can take to ensure it runs as efficiently as possible. Check out the [deployment documentation](https://docs.nestjs.com/deployment) for more information.

If you are looking for a cloud-based platform to deploy your NestJS application, check out [Mau](https://mau.nestjs.com), our official platform for deploying NestJS applications on AWS. Mau makes deployment straightforward and fast, requiring just a few simple steps:

```bash
$ npm install -g mau
$ mau deploy
```

With Mau, you can deploy your application in just a few clicks, allowing you to focus on building features rather than managing infrastructure.

## Resources

Check out a few resources that may come in handy when working with NestJS:

- Visit the [NestJS Documentation](https://docs.nestjs.com) to learn more about the framework.
- For questions and support, please visit our [Discord channel](https://discord.gg/G7Qnnhy).
- To dive deeper and get more hands-on experience, check out our official video [courses](https://courses.nestjs.com/).
- Deploy your application to AWS with the help of [NestJS Mau](https://mau.nestjs.com) in just a few clicks.
- Visualize your application graph and interact with the NestJS application in real-time using [NestJS Devtools](https://devtools.nestjs.com).
- Need help with your project (part-time to full-time)? Check out our official [enterprise support](https://enterprise.nestjs.com).
- To stay in the loop and get updates, follow us on [X](https://x.com/nestframework) and [LinkedIn](https://linkedin.com/company/nestjs).
- Looking for a job, or have a job to offer? Check out our official [Jobs board](https://jobs.nestjs.com).

## Support

Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support).

## Stay in touch

- Author - [Da-Wei Lin](https://www.linkedin.com/in/da-wei-lin-689a35107/)
- Website - [David Weblog](https://davidskyspace.com/)
- Twitter - [@nestframework](https://twitter.com/nestframework)

## License

Nest is [MIT licensed](https://github.com/nestjs/nest/blob/master/LICENSE).