DEVELOPER_DOCUMENTATION.md in pact_broker-2.37.0 vs DEVELOPER_DOCUMENTATION.md in pact_broker-2.38.0
- old
+ new
@@ -1,14 +1,20 @@
# Developer Documentation
## File structure
* Application code - [lib](lib)
- * List of API endpoints - [lib/pact_broker/api.rb](lib/pact_broker/api.rb)
+ * The aggregated application (API, UI, middleware, HAL Browser, diagnostic endpoints etc) - [lib/pact_broker/app.rb](lib/pact_broker/app.rb)
* API - [lib/pact_broker/api](lib/pact_broker/api)
+ * Routes - [lib/pact_broker/api.rb](lib/pact_broker/api.rb)
* HTTP Resources - [lib/pact_broker/api/resources](lib/pact_broker/api/resources) These handle the HTTP requests.
* Decorators - [lib/pact_broker/api/decorators](lib/pact_broker/api/decorators) These render the response bodies.
* Contracts - [lib/pact_broker/api/contracts](lib/pact_broker/api/contracts) These validate incoming API requests.
+ * UI - [lib/pact_broker/ui](lib/pact_broker/ui)
+ * Routes - [lib/pact_broker/ui/app.rb](lib/pact_broker/ui/app.rb)
+ * Controllers - [lib/pact_broker/ui/controllers](lib/pact_broker/ui/controllers) These handle the HTTP requests.
+ * Views - [lib/pact_broker/ui/views](lib/pact_broker/ui/views) These render the view using HAML
+ * View models - [lib/pact_broker/ui/view_models](lib/pact_broker/ui/view_models) These expose the domain model data in a way that is suited to rendering in a view.
* Domain - Domain classes were intially created in [lib/pact_broker/domain](lib/pact_broker/domain) but are now put in their own modules. The ones left here just haven't been migrated yet. The module name is the plural of the domain class name. eg `lib/pact_broker/widgets/widget.rb`.
* Services and Repositories - in the module with the name of their domain concept. eg `lib/pact_broker/widgets/service.rb` and `lib/pact_broker/widgets/repository.rb`
* Standalone "function as class" classes go into the module they relate to. This pattern is used when there is some significant stateless logic that we want to
* Database migrations - [db/migrations](db/migrations)