README.md

November 25, 2021 ยท View on GitHub

Nx Cli

Angular Electron.js

Desktop app built to improve developer's productivity while working with Nx Workspaces


plot


Manage your Nx projects like a boss. Don't spend too much time on the CLI, and focus on implemenation with the Nx-cli. App is intended to work on Linux, Mac and Windows.


๐Ÿ‘จโ€๐Ÿ’ป Who is it for

While working at my current job with Nx monorepos I have noticed that I spend a lot of time in CLI manually typing various commands to generate stuff and to manouver around the nx monorepo. The core idea of this app is to minimize the time spent in the CLI, and automate the process of creating, deletion etc. of libs, projects and their artifacts.


๐Ÿข Architecture & Patterns

  • SCAM -> Single component angular modules for better tree shaking
  • UI components -> Everthing that is under UI folder should recieve the data only via @Input(), and emit it via @Output(). These components can only inject services regarding the view, E.g. MaterialDialog service
  • Feature components -> Can be routed to, can access data from any source
  • Shell -> Entry point for some domain. Shell should always have feature in which we store routes, and layout which should be the layout for the current domain. Layout can access any data and should be in layout folder under shell lib.
  • ViewModel -> Ngrx Store is used as a global store while ngrx/@component-store is used as a viewmodel. Viewmodel should grab the data from the global store (or some other source) and prepare it for the view injection via async pipe, also, majority of the business logic is located in the viewmodels which helps to keep our components clean and extremely easy to test and maintain.

๐Ÿšจ Some of the patterns are not 100% enforced because I am still exploring and trying stuff out


๐Ÿšง Feature Status

ImplementedFeature / Use caseDescription
:white_check_mark:User can add workspaceOnce user starts the app he will be able to add new Nx Workspace via absolute path. Path is properly validated.
:white_check_mark:User can see all libs & appsOnce use has added workspace he can preview his installed apps & libs
:white_check_mark:User can select app or libOn the left side of the app, user can see list of apps & libs which are selectable
:white_check_mark:User can see detail view of a lib or appOnce lib or app is selected, user can see details (List of angular components, modules) etc.
:white_check_mark:User can generate a componentIn detail view, there is an option which enables user to create new component with a couple of flags (--flat, --buildable, --publishable)
:white_check_mark:User can generate a serviceIn detail view, there is option to create new Angular service with couple of flags
:white_check_mark:User can delete apps & libsIn detail view, user has an option to delete selected app or project
:white_check_mark:User can move libs & appsIn detail view, user is able to move libs and apps to different dirs
:white_check_mark:User can rename libs & appsIn detail view, user is able to rename libs and apps
:white_check_mark:User can see all tags of selectd libs & appsOnce the user selects app or lib, he will be able to see all the tags from nx.json
:white_check_mark:User can create new libIf workspace is added, user will be able to create new lib
:white_check_mark:User can create new appIf workspace is added, user will be able to create new app
:white_check_mark:User can remove workspace from appWorkspaces can only be added ATM
:white_check_mark:Add additional flags for lib generationATM it is not possible to add flags for a lib generation (Only via single input)
:white_check_mark:Add additional flags for app generationATM it is not possible to add flags for a app generation (Only via single input)
:white_check_mark:User can see outputs of commandsAdd console to the app so user can see and interact with the console logs
:white_check_mark:User can see if Nx is not installed on his machineAdd notification if user doesn't have Nx installed on his machine
:white_check_mark:User can see lib or app treeOnce app or lib is selected, user can see folder tree in the detail view
:white_check_mark:User can start dep graphUser can run nx dep graph from the app
:white_check_mark:User can add/delete tagsAbility to add tags for a selected app or lib
:white_check_mark:User can use React & Angular Nx generatorsAbility to create all supported artifacts

๐Ÿ“œ References