xplat icon indicating copy to clipboard operation
xplat copied to clipboard

[Feature Request] Group Libraries by Feature

Open wSedlacek opened this issue 4 years ago • 2 comments

The problem

Right not libraries are grouped by platform with the base not having a sub directory.

libs
- core
- scss
- features
  - users
- nativescript
  - core
  - scss
   - features
     - users
- web
  - core
  - scss
   - features
     - users

This places the features/users in 3 distant locations which while on a command line isn't a problem but when looking at the tree in an IDE it feels a bit disconnected.

The Request

It would be my preference to have it grouped by feature which would look something more like this.

libs
- core
  - base
  - nativescript
  - web
- scss
  - base
  - nativescript
  - web
- features
  - users
    - base
    - nativescript
    - web

Additional context

As an aside, I believe group this way would better balance the opinions of xplat's structure with other patterns like DDD. For example DDD with xplat might look something like this.

libs
  - booking
    - domain
    - api
      - base
      - nativescript
      - web
    - feature-manage
      - base
      - nativescript
      - web
  - boarding
    - domain
    - feature-cancel
      - base
      - nativescript
      - web
    - feature-search
      - base
      - nativescript
      - web
  - shared
    - domain
    - core
      - base
      - nativescript
      - web
    - ui
      - common
        - base
        - nativescript
        - web
      - scss
        - base
        - nativescript
        - web
    - utils

This pattern feels a lot more familiar with me personally as I come from other library frameworks. I suspect others will feel the same. It would be super cool if other schematics like DDD could enhanced via Higher Order Functions to simply split each library they generate by platform. domain modules are platform agnostic so they would not be split. It would be my expectation that many of the items currently in core of xplat (like services, environments, etc.) would be moved to shared/domain with them being exposed to applications via shared/core/<platform>

User Story

As a full stack developer, I want to have a single folder for a given feature, because the specific feature is more important to me than the platform that feature is for.

wSedlacek avatar Jan 26 '21 15:01 wSedlacek

nice to have!

kattsushi avatar Jan 29 '21 01:01 kattsushi

as a full-stack, this makes much more sense for me too

csimpi avatar Jul 11 '21 16:07 csimpi