This is the second of two major systems I wrote for a company producing food. In this case we didn’t have a reference implementation to replace. They did have a big process in place that relied heavily on Excel sheets, however. This sounded like a very easy job until we realized that they had an entire code base written in VBscript inside those files, which in turn relied on an Access database. It turned out that we had a reference implementation after all.
We ended up writing a web app based on React. Once again, I wrote the business logic together with the database developer from the previous project, and we had other people come and go to either help out with the business logic or the GUI.
The users were very free to do what they wanted to with the existing Excel program, and we didn’t want to alienate them, so we tried to retain support for as much of it as possible in one way or another; if it could be formalized and turned into a set of rules, we would keep it and make it accessible for everyone.
We ended up making an interesting database design for this project. The users had a strong need to be able to undo actions, so we ended up with a tree based database structure, where changes would be layered on top of each other. If you have ever played with photoshop, you know exactly how this works, but if you haven’t, then you can imagine changes being drawn on panes of glass. Every change gets its own pane of glass, and to undo a change, you only have to remove its pane.
Just as with the other system we developed for this company, the users did not want to go back to the old way of doing things. This is high praise for software developers.