I work on a GIS-based Network Inventory software. There are two versions of it available: a desktop and a web application.
Currently any feature must be implemented separately for desktop and web. The only common element of both systems is the database.
E.g. if I want to add an entry in the context menu for some type of map object, I need to do it in both codebases (along with whatever happens when that menu entry is interacted with).
I would like to define and implement a feature once for both applications in order to simplify maintenance. I could serialize a very high-level version of the implementation and store it in the database. On program startup I would fetch it from the database and deserialize it. The high-level instructions would still need to be implemented separately, but they could be reusable.
While I believe this could be a solution to my idea, I am worried it would simply change one kind maintenance hell to another. Furthermore, it could limit performance, because usage of high-level instructions might not allow for task-specific optimizations.
Should I be trying to pursue the goal of having a common implementation for both applications? What's a better design or approach for providing same functionality for both desktop and web applications which only share a database?