AS
Back to work

Legacy Modernizer

Real-time Java AST modernization platform

ReactExpressNode.jsWebSockets (Socket.io)Monaco EditorJava Parser / AST
IBM Bob Hackathon ProjectAutomated pom.xml Dependency UpgradeInteractive Monaco Code Diff Panel

The problem

Built for the IBM Bob Hackathon. Enterprise code migration (e.g. Spring Boot 1.5.4 to 3.2.0) is slow and highly prone to regression, requiring manual namespace updates and dependency configuration.

The goal was to construct a real-time modernization tracker that lets developers upload legacy Java directories and watch Bob AI refactor imports, entities, and tests in real-time.

Key decision

I integrated the Monaco Editor directly into the React frontend to display split-screen and unified diffs. The architecture streams modernization steps (Configuration → Model Layer → Controllers → Tests → Validation) over WebSockets from an Express runner so developers have complete visibility into the compiler pipeline.

How it works

The system operates over a real-time event pipeline:

  • Runner: Express server executing Java migrations, upgrading libraries, and outputting structured compiler logs.
  • Interactive Panel: Live color-coded terminal log stream, dynamic File Tree (transitions files from pending to completed states), and Monaco Diff Editor displaying old vs modern namespaces (like javax.persistence to jakarta.persistence).
  • Compiler Phases: Tracked dynamically via a bottom Progress Rail showing five stages of system validation.

Results

Created a working demo that migrates a Spring PetClinic project (33 Java files, 2,000+ lines of code) in under a minute, replacing namespaces, updating Date objects to LocalDate, and verifying compile status.

What went wrong

The tool modernizes legacy code so fast it made our hackathon presentation look fake. We had to add a simulated loading delay just so the judges believed Bob was actually rewriting the files.