Skip to content

Latest commit

 

History

History
12 lines (11 loc) · 1.54 KB

DESIGN.md

File metadata and controls

12 lines (11 loc) · 1.54 KB

Design considerations

  • this app tries to conform to the Twelve Factor-App manifesto
  • this app's code is structured according to the Clean Code Architecture
    • the application is structured in concentric horizontal layers, according to the level of the policy the layer implements. At the same time, the application is structured in vertical layers, each layer implementing a specific usecase
    • the "gateway" package is placed at the center, and contains the bussiness rules and the highest policies of the application, and implements all the usecases. All the other packages contain lower level policies, and are plugins to the "gateway" package
    • the goal of this design is to isolate from each other things that change for different reasons and at different rates, in order to favor modularity, testatiblity, mantainablity, and specifically to avoid potential secundary effects when adding/changing/fixing a feature
  • this app fundamentally implements a Gorilla-based XMLRPC Server to serve its API
    • in Gorilla's jargon, this implements a Codec, the Server being implemented by Gorilla itself
  • it uses kolo/xmlrpc as the XMLRPC client library to consume other XMLRPC APIs
  • major packages contain a README.md file with a high-level explanation of its contents