augejs is a progressive Node.js framework for building applications.
:star2: Star us on GitHub — it helps! :clap:
https://github.com/augejs/augejs.github.io
augejs framework have a low learning curve. The core fundamental concepts are Module, Provider,
Decorator . That’s is all of the application.
Look at below diagram, The Root Module is the entrance of application. The Module can composite Modules and Prodivers.

import { Module, Provider } from '@augejs/core';
@Module() class Module1 {}
@Provider() class Provider3 {}
@Provider() class Provider4 {}
@Module({providers: [Provider3, Provider4]}) class Module2 {}
@Provider() class Provider5 {}
@Module({providers: [Provider5]}) class Module4 {}
@Module() class Module5 {}
@Module({subModules: [Module4, Module5]}) class Module3 {}
@Module({ subModules: [Module1, Module2, Module3]}) class AppModule {}
Also we can add all the nesting subModules in AppModule’s subModules. Example
@Module({
subModules: [
Module1,
Module2,
Module3, [Module4, Module5]
]})
class AppModule {}
Module is a fundamental concept in augejs. It’s a class annotated with a @Module() decorator. Web can use he @Module() decorator to organize the application structure.
import { Module, Provider } from '@augejs/core';
@Module()
class SubModule1 {}
@Provider()
class Service1{}
@Module({
subModules: [SubModule1],
providers: [Service1]
})
class Module1 {}
We can use the Module to cut the application logics to smaller one, and keep the Single Responsibility Principle easily.
Provider is a fundamental concept in augejs. It’s a class annotated with a @Provider() decorator. To be honest, I don’t know what a Provider exactly is. Maybe an Entity, a File, a structure, a component, a service and so on. Many of the basic classes in augejs may be treated as a Provider.
See the explanation in provider-scanner
Both of Module and Provider are injectable which is wrapper of @Injectable() decorator.
import { Module, Provider, Inject } from '@augejs/core';
@Provider()
class Service1{}
@Module({providers: [Service1]})
class Module1 {}
@Provider()
class Service2 {
@Inject(Service1)
service1: Service1;
}
@Module({providers: [Service2]})
class Module2 {}