Please enable JavaScript.
Coggle requires JavaScript to display documents.
Improvements - Coggle Diagram
Improvements
Articles
https://blog.brecht.io/opinionated-guidelines-for-large-nx-angular-projects/
https://github.com/Flignats/full-stack-typescript/
https://github.com/jczacharia/type-safe-full-stack/tree/master
https://github.com/trungvose/angular-spotify/tree/main/libs/web
https://jczacharia.medium.com/the-type-safe-full-stack-angular-nestjs-nx-9bfd26142174
Principles
Barreling präferieren
Kleinere Libs erst
Mehr auf Featuremodule gehen
angular (domain-driven design)
sources
https://www.youtube.com/watch?v=XBaGOKtaEvM&ab_channel=JoshuaMorony
https://www.youtube.com/watch?v=7SDpTOLeqHE&ab_channel=JoshuaMorony
:star:
NX Concepts:
https://nx.dev/concepts/more-concepts/library-types
Tactical DDD:
https://entwickler.de/angular/domain-driven-design-in-angular-001
:star:
Strategic DDD:
https://entwickler.de/webentwicklung/ddd-im-frontend
Well structured (not monorepo) repo:
https://github.com/joshuamorony/nx-angular-structure
Well structured monorepo:
https://github.com/angular-architects/modern
:
Well structured monorepo 2:
https://github.com/manfredsteyer/strategic-design
library / code categories
feature :star:
Description:
Implements a use case with smart components
Purposed by:
NX and Steyer in Enterprise Angular 2022
Examples:
Central component like list, edit, etc.
api
Purposed by
: Steyer in Enterprise Angular 2022
Examples:
View Booking Data (api here) in FlightSearch
Description:
Provides functionalities exposed to other domains
ui :star:
Description:
Provides use case-agnostic and thus reusable components (dumb components)
Purposed by:
NX and Steyer in Enterprise Angular 2022
Examples:
DatePicker
util :star:
Description:
Provides helper functions
Purposed by:
NX and Steyer in Enterprise Angular 2022
Examples:
Time conversion functions
shell :
Purposed by
: Steyer in Enterprise Angular 2022
Examples:
Entrypoint for routing and lazy loading
Description:
For an application that has multiple domains, a shell provides the entry point for a domain
domain :star:
Description:
Domain logic like calculating additional expenses (not used here), validations or facades for use cases and state management. facades, models, and data services
Examples:
facades, models, and data services
Purposed by
: Steyer in Enterprise Angular 2022, derived from NX`s data-access lib
3 sub-libraries / sub-folders
Application
: Use case specific facades, state management, services
Domain:
Entitites and Business Logic
Infrastructure:
Data-Access and other technical services
library / folder grouping
by domain (e.g. booking)
by use case under domain (e.g.) booking/manage-customers
shared
Purposed by:
NX and Steyer in Enterprise Angular 2022
nestjs (domain-driven design)
sources
Well structured (not domain-driven, not monorepo) repo:
https://github.com/brianfiszman/nestjs-onion-architecture-boilerplate/
Article:
https://betterprogramming.pub/onion-architecture-with-nest-js-and-nx-d9b5c7126b37
:star:
Well structured repo:
https://github.com/Sikora00/nest-nx-onion
:star:
library / folder grouping
shared
by use case under domain (e.g. booking/manage-customers)
by domain (e.g. booking)
library / code categories
util
Description:
includes general utility functions
shell
Description:
an entry point for the domain, responsible for compositions ports with adapters
kernel
Description:
a place for global services independent of a domain, included once for an app (exception handler, global middleware…)
api
Description:
exports building blocks from the current subdomain for others
core
domain :star:
Description:
contains the domain models (entities, aggregates…)
domain services
Description:
repository interfaces and domain logic involving several entities
application services :star:
Description:
the place for an application service/facade and, optionally, commands and queries
infrastructure
Description:
implements adapters of the application ports
ui :star:
Description:
a place for components designed to handle communication with a user by a specific channel; also provides the domain to the application (don’t confuse it with the UI on the front end)