@fazio/nx-cross-ddd-plugin
Typescript Cross platform DDD Plugin for Nx
Overview
Features
- ✅ Architect, test, and build software at any scale according DDD and SOLID programming sorftware pattern best practices
- ✅ Create domains with
domain
libraries including models and data services - ✅ Create features with
domain feature
libraries including facades, models, and data services - ✅ Create platforms UI with
platform feature
libraries including feature components build with multi framework available - ✅ Share libraries of a Monorepo
- ✅ Add linting rules for access restrictions between
domains
as proposed by Nrwl - ✅ Add linting rules for access restrictions between
domain features layers
and platforms UI layers
as proposed by Nrwl - ✅ Support for many frontend and backend technologies
- ✅ Add tooling for build and publish registery librairies automation
Install
Add this plugin to an existing Nx workspace
- Run from Nx Project root folder:
npm i -D @fazio/nx-cross-ddd-plugin
Or create new Nx Workspace. Run the following command:
npx create-nx-workspace@latest
npm i -D @fazio/nx-cross-ddd-plugin
Usage
You can genetate libraries with Nx Editor Plugins or run following commandes:
Generate Domain
nx g @fazio/nx-cross-ddd-plugin:domain MyDomain --generateService
- --generateService (optional): Generate client service file.
- --generateRepository (optional): Generate backend service file.
Generate Domain feature
nx g @fazio/nx-cross-ddd-plugin:feature MyFeature --domain MyDomain
- --domain (required): Name of Domain.
Generate Platform UI feature
nx g @fazio/nx-cross-ddd-plugin:platform MyPlatformUI --domain MyDomain --feature MyFeature --generateComponent
- --domain (optional): Name of Domain.
- --feature (optional): Name of Domain Feature to extend.
- --directory (optional): The folder directory to generate library. By default will be created inside
--ui
parameter. Usefull to generate shared library
or library for different framework. - --framework (optional): Name of framework to build UI Component. If not provided, will use by default
Angular
. - --generateComponent (optional): Genereate default component extended with feature domain logic class
Generate Linting Rules for workspace
ng add @fazio/nx-cross-ddd-plugin
Architecture Overview
Credits
Contribution
see CONTRIBUTING.md
About author
Hi, i'm Nicolas Fazio, a Senior Typescript Software Architect & teacher, living in Geneva Switzerland 🇨🇭. I build software architecture and cross platform application for almost 15 years.
You can follow me on Twitter @FazioNico or checkout my own website https://nicolasfazio.ch
Angular Trainings, Workshops, and Consulting