One reason I like .NET is because the 'solutions' and 'projects' lends themselves to good architecture.

Good architecture makes it easy to follow the happy path of Domain-Driven Design.

I've fallen into a habit of this kind of architecture for my projects. It's just a common sense approach for the onion architecture, ports and adapters, etc. (Some would even argue those are all saying the same thing -- it's "a bona fide pattern".)

enter image description here

That all works pretty well for me when I'm in the .NET world, using JavaScript for client apps with .NET as a back-end. (I know I could probably be doing some things better!)

But I get a little lost when I try to work on an all-JavaScript project.

I don't want to get too specific about frameworks, but for example, I'm looking at an Ionic project -- where the entire thing is just an Angular app hosted on a phone.

How does the onion or DDD fit into this?

enter image description here

1 Answer 1


Ah an opinionated framework. Usually so opinionated because its about pages.

In short.

  1. Rely on packages as managed by npm, or whatever.

  2. Create an enclosing "solution" folder around your frame worked javascript app

  3. Checkout the source for each package that the javascript app will ingest to a folder in the "solution" folder

  4. Now you have something approaching a VS solution.

Just note that you will need to write scripts to carefully ensure that the javascript app, is kept in line with the modules you've checked out around, and that everything is built and committed just fine.

Your development will be something like:

  • update module
  • copy/update app
  • test
  • check in module
  • wait for package to be built/published
  • update app to reference updated module package
  • test
  • check in app

Not as clean as VS, but very scriptable.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.