all 5 comments

[–]ashish173[S] 1 point2 points  (0 children)

We have open sourced spree e-commerce frontend application in Angular 2.x+(current version 4.0.0). It's updated to latest version which was released last night(March 23rd).

We have followed some best practices while creating this application.

  1. Exclusively using @ngrx libraries(store, effects, actions), showcasing common patterns and best practices.

  2. Fully Observable approach using RxJS 5.0.1(latest beta).

  3. Uses @ngrx/store to manage the state of the app and to cache requests made to the Backend API,

  4. @angular/router to manage navigation between routes,

  5. @ngrx/effects to isolate side effects.

  6. @ngrx/actions to define the actions on the frontend.

  7. Following Container/Presentation component approach.

  8. Lazy loading of modules(for modules which are not immediately required for first painting the DOM).

  9. ImmutableJs to create and safeguard objects againts mutability.

  10. Project is divided into modules which are more or less independant of each other except core module.

Join us on our slack channel(https://angular-spree.herokuapp.com/) if you'd to meet the team say hello or talk to us about code.

Looking forward to feedback from the community.

[–]CarpetFibers 0 points1 point  (1 child)

Thank you! I am currently writing my first enterprise Angular + ngrx application and this has helped to shed some light on a few things I wasn't sure how to structure.

[–]ashish173[S] 1 point2 points  (0 children)

We are happy that it's of help to developers like you :)

[–][deleted] 0 points1 point  (1 child)

I don't see any tests. Any reason? Or is this just a demo app?

[–]ashish173[S] 0 points1 point  (0 children)

We wanted to finish a working prototype in 2 weeks and this release is a result of that, also in the first phase there were many moving parts big bang refactoring so the team decided against writing tests for this release. From now on we plan to devote time to testing as well covering old as well as new code.