---
# System prepended metadata

title: Untitled

---

Hart Refactor Improvements


* Testing
* Reviews
* Image processing
* Re-mapping schemas when we can specify once and use the spec
* Re-mapping the API contract
* We are overusing products as a context for items that don't belong there
* We are under-using products as a context for accessing products/lacking a clear interface for working with Products. We have a large API module, but could instead 
* CMS HartToolsWeb huge view templates etc
* Paul's "refactor"


What are we trying to tackle first?

Testing, and then:

* The biggest problem first
    * Products/API
        * Reorg contexts
        * Remove API module
    * Images
    * Context Remapping
    * API contract
* many of the smallest problems first
    * Codesmells
    * Credo recommendations

Proposed process:

* Analyze
* Design
* Test
* Refactor


Notes

what I found reading through elixirforum was that most developers seem to deal with Jason serialization in one of two places:
in the Phoenix View layer a la https://hexdocs.pm/phoenix/views.html#rendering-json
deriving the Jason.Encoder protocol