Build JavaScript applications based on Domain-driven Design and Layered Architecture