Last year I decided to create a web-based SAP Business One extension system consisting of a JavaScript SPA written with Aurelia that communicates with two REST backends written in Go and Java (Dropwizard).However, from October 2016 to the beginning of this months I only worked eight hours a week, as I am studying software engineering. Most of this time was spent working on more urgent projects. Now, I finished the other projects and my boss told me to continue working on the SAP extension system.The main issue is that Aurelia pretty much lost its traction, has some annoying bugs and the experience for users is not that stable. For instance, UI components that worked fine do not work anymore with newer versions of Firefox and so on.Furthermore, as the project started quite small I decided to give Go a further try, but now I really regret this decision, as I learned Ruby as well as Scala which style is much more appealing to me.Moreover, the code is quite undocumented and so I need to write a lot of documentation. Additionally, the Go code is mainly distributed accross three files which each have more than 1500 lines of code and are quite unreadable. It seems that /r/programmingcirclejerk was right about Go.Now, I don't really know if I should replace the Go part which mainly consists of executing SQL queries and parsing the results with Ruby (Sinatra or Rails) or Dropwizard or if I should stay with Go, document it and extend it.Besides, I need a solution for enhancing the web interface and making it more stable. I am thinking about Ember or using a server-side framework.Anyway, my time at my company is limited. I am only able to work full-time until the end of September, but it seems that I need to extend the project even after the start of the next semester, so a stable and structured environment would be great.And I know that legacy rewrites do not have the best reputation, but I really dislike the Frankenstein system I have created.
Rewrite legacy code or continue to live with it
javascript;web services;web;rewrite
Consider this: The same forces which have caused the existing code to turn into a Frankenstein system will cause a rewritten system to get similar problems.