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.
- Fantastic Material Motion animations
- Excellent UX on Any Screen
- Native-like UI Behavior
- Well-considered Keyboard Accessibility
- Rich Performance Optimizations
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
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.
/common
- framework/business independent logic that can be reused in any applications/core
- components that is used inAppModule
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
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.
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