The ddec application consists of two parts. The DDEC Web is a Java-based website that uses Oracle as its database backend to provide engine parameters for programming Detroit Diesel Engine Controllers. The DDEC Client is a C++ application that retrieves data from the DDEC Website and uses it to program the controller through a serial connection using a standard protocol. Detroit Diesel has stopped supporting these applications and is giving the old code to MTU to use to program engines going forward. They are currently working on removing proprietary components from the client code, so we haven't received that code yet. They have given us the database schema and web application code and will provide the data as soon as they can separate DDC data from MTU data. The client application hasn't been compiled in over 15 years, and with additional components removed, the source will be uncompilable.
Our eventual goal is to get the DDEC Web and Client running again using the modern Asp.Net Framework and SQL Server architecture. The client will need to be evaluated to determine the best replacement platform. It could be a C# Windows app, a .NET MAUI app, or possibly just an addition to the web application, as long as it can support writing to the serial interface.
There will be several steps necessary to achieve our goals. Below is just an outline to get started. Once we receive the data and client code, we can continue.
- Evaluate the database schema and Java code to understand how it works and what architecture is needed to recreate the environment.
- Design and build the environment to support running the existing code. This environment will be based on Ubuntu, and we want to use Proxmox VMs and Docker containers to architect this solution.
- Build an Oracle server using Docker containers and Docker Compose files managed by Komodo to support the database.
- Once we have an architecture design ready, we will work on building the database schema and preparing it for data load as soon as we receive the data from DDC. The data will likely arrive as a backup file or a datapump export, so we will need to determine the best way to import it.
- While waiting for data from DDC, it would be nice if we could populate the database with some sample data to support testing the web application.
- The Java code needs to be examined, and we need to document how it works and what is required to run it in a container environment.
- Once we have the code running and accessing the test data, hopefully, we will have the real data and can work on importing it into the database.
- When the DDEC Web is running, we need to create the steps to migrate the application from Java/Oracle to MS ASP.Net/Sql Server. We will create a PRD and ADR documents to detail how the application should be structured.
- I already have a couple of SQL Servers we can use to migrate the database, so we can work on implementing the data migration.
- I will use a base template to build the ASP.Net solution and configure the docker support, so we can access the website from a test environment.
- We will migrate the Java code to C# and test each function.
The client is written in C++, which I am not familiar with, so I will rely on AI to evaluate the code and determine the best approach to rebuilding the client application.
- Evaluate the code and determine its condition, what functionality exists, and the roadblocks we are likely to run into.
- Based on the evaluation, should we try to fix the existing code and make it runnable, or should we start with C# and move straight to a new client, using the old code as a guide?