onebeyond/generator-systemic

View on GitHub
README.md

Summary

Maintainability
Test Coverage
[![CI](https://github.com/guidesmiths/generator-systemic/actions/workflows/ci.yml/badge.svg)](https://github.com/guidesmiths/generator-systemic/actions/workflows/ci.yml)
[![CD](https://github.com/guidesmiths/generator-systemic/actions/workflows/cd.yml/badge.svg)](https://github.com/guidesmiths/generator-systemic/actions/workflows/cd.yml)
[![Maintainability](https://api.codeclimate.com/v1/badges/357d68163ad88770f74a/maintainability)](https://codeclimate.com/github/onebeyond/generator-systemic/maintainability)
[![Test Coverage](https://api.codeclimate.com/v1/badges/357d68163ad88770f74a/test_coverage)](https://codeclimate.com/github/onebeyond/generator-systemic/test_coverage)

# GENERATOR-SYSTEMIC

> A generator for a systemic microservice.


### Systemic microservice

An easy and unopinionated implementation of a microservice fostering an inner [Hexagonal Architecture (Ports and Adapters)](https://en.wikipedia.org/wiki/Hexagonal_architecture_(software)).

#### Main concepts
- [__Systemic__](https://www.npmjs.com/package/systemic): dependecy injection orchestrator in charge of correctly start and stop the different components of the microservice.
- __Systemic microservice__: a system composed of different sub-systems --> _components_ and _sub-components_.
- __Components__ and __sub-components__: minimal responsability elements (Adapters) of the system in charge of dealing with a given Port (generally speaking).


# INSTALLATION

First, install [Yeoman](http://yeoman.io) and generator-systemic using [npm](https://www.npmjs.com/) (we assume you have pre-installed [node.js](https://nodejs.org/)).

```bash
npm install -g yo
npm install -g generator-systemic
```

### Getting To Know Yeoman

 * Yeoman has a heart of gold.
 * Yeoman is a person with feelings and opinions, but is very easy to work with.
 * Yeoman can be too opinionated at times but is easily convinced not to be.
 * Feel free to [learn more about Yeoman](http://yeoman.io/).


# USAGE

Generate your new systemic project: a white canvas into which creating the components you do prefer according to your specifi business logic.

[More info](generators/app/templates/root/_README.md)

```bash
mkdir my-service
cd my-service
yo systemic
```

## White canvas VS showcase
There is an option that can be passed to the generator at execution time using the flag `--showcase`. 

### `--showcase` flag NOT used
Generates your new systemic project: a white canvas into which creating the components you do prefer according to your specific business logic. 

More info in the generated ReadMe.

### `--showcase` flag used
Generates your new systemic project with extra components: a not so white canvas with a given business logic already in place to help you better understand how to handle components (and sub-components):
- versioning.
- workflows.
- testing.
- systemic ecosystem npm handy modules (e.g. [systemic-rabbitmq](https://www.npmjs.com/package/systemic-rabbitmq) - [systemic-mongdb](https://www.npmjs.com/package/systemic-mongodb)).

More info in the generated ReadMe.

# CONTRIBUTING
Consider following these guidelines if you want to contribute:

- Feature: [https://github.com/guidesmiths/generator-systemic/issues/new](https://github.com/guidesmiths/generator-systemic/issues/new?assignees=&labels=&template=feature_request.md&title=My%20Awesome%20Feature)
- Bug: [https://github.com/guidesmiths/generator-systemic/issues/new](https://github.com/guidesmiths/generator-systemic/issues/new?assignees=&labels=&template=bug_report.md&title=My%20Awesome%20Bug)

- Pull Request: [https://github.com/guidesmiths/generator-systemic/blob/master/.github/pull_request_template.md](https://github.com/guidesmiths/generator-systemic/blob/master/.github/pull_request_template.md)


# LICENSE

MIT © [Guidesmiths Ltd](LICENSE)