Skip to content

Latest commit

 

History

History
56 lines (38 loc) · 2.26 KB

README.md

File metadata and controls

56 lines (38 loc) · 2.26 KB

Reply

The Angular implementation of Reply designed by Google.

Reply is an email app that uses Material Design components and Material Theming to create an on-brand communication experience.

Reply Cover

Features

Local Serving

The application depends on multiple internal libraries. Make sure that the libraries have been built before starting the application.

npm i
npm run build-libs
npm start

Architecture

The architecture of this project follows most of the reasonable principles of the Angular Coding Style Guide, but also follows my own empirical principles.

  • All the paths mentioned below are relative to projects/reply/src/app
  • The term component below refers to anything that is declarable in an Angular Module such as components, directives, and pipes.

Special Directories

  • /common - framework/business independent logic that can be reused in any applications
  • /core - components that is used in AppModule and injectables that is shared by the entire application
  • /standalone - shared standalone components which can be either business-dependent of business-independent.
  • /data - derived from /core where only injectables relevant to data are allowed

Feature Modules

A feature module refers to a lazy-loading module with routes.

  • Feature modules must be flattened at the root of the application
  • Un-reusable components must be flattened at the root of the feature module
  • Injectables and reusable components must be put under a sub-directory named core
  • The name of components and injectables of a feature module must share the same prefix as the module.

Widget Modules

A widget module refers to a module that provides business-independent additional reusable features.

  • Widget modules must be flattened to the root of the application
  • The internal architecture of a widget module can be flexible
  • A widget module should be extracted into a library if possible once it is stable