A Spring Boot web application that combines a large Java curriculum (theory as Markdown, coding challenges, and major project briefs) with a mini-IDE: the Monaco editor in the browser and server-side compile/run via the JDK on the machine hosting the app.
Iteration is fastest when you edit in the browser, click Run, and see compiler and program output immediately. Android builds, emulators, and deployment cycles are heavier for rapid practice loops.
- JDK 21+ on the server (the app uses
javacfrom the same runtime).
mvn spring-boot:runOpen http://localhost:8080.
- Theory stays in the left column; challenge, projects, editor, and output are stacked in the Code column so you can read instructions without scrolling away from the editor.
- Progress is stored in localStorage (this device and browser only): completed lessons, per-lesson code drafts, and class name. Use Export / Import JSON to move progress between machines or back up before clearing site data.
Theory lives under src/main/resources/static/lessons/. The navigation tree and challenges are generated into src/main/resources/static/data/curriculum.json by:
python3 scripts/generate_curriculum.pyEdit scripts/generate_curriculum.py to add sections, lessons, challenges, or major projects, then re-run the script.
The /api/run endpoint compiles and executes user-supplied Java in the same JVM as the server, with time limits and classpath isolation for user classes. Do not expose this endpoint to untrusted Internet users without a hardened sandbox (containers, separate JVM, quotas, etc.). It is intended for local learning or trusted environments.