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.persistencetojakarta.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.