Project Version : 0.1 (Pre Release - Build in Progress)
Spring Arena is an interactive browser-based Spring Boot coding challenge platform. Users solve real backend challenges in a VS Code-like IDE, with instant test-run feedback.
- Node.js 18+
- Java 17+
- Maven 3.8+
All together:
npm install
npm run devSeparately:
Terminal 1 (Backend):
cd backend
mvn spring-boot:runTerminal 2 (Frontend):
cd frontend
npm run devThen open: http://localhost:5173
React Frontend (Browser IDE)
↓
Spring Boot Backend API
↓
Template + Challenge + User Code
↓
Test Execution
↓
Result Feedback
springarena/
├── frontend/ ## React + Monaco Editor
├── backend/ ## Spring Boot API
├── templates/ ## Reusable Spring Boot bases
├── challenges/ ## Challenge metadata & tests
├── runs/ ## Temporary execution folders
├── workspace/ ## User progress storage
└── package.json ## Root scripts
- User opens dashboard → Lists all available challenges
- User selects challenge → Problem statement + editable code loaded
- User writes code → Changes reflected in browser editor
- User clicks Run → Code sent to backend
- Backend assembles → Copies template + challenge starter files + user code
- Maven runs tests → JUnit tests execute against user implementation
- Results returned → Pass/fail feedback shown in browser
Each challenge contains:
metadata.json- Title, difficulty, template typeprompt.md- Problem descriptionstarter-files/- Editable code templatestests/- JUnit test cases
| Method | Endpoint | Purpose |
|---|---|---|
| GET | /api/challenges |
List all challenges |
| GET | /api/challenges/{id} |
Get challenge details |
| POST | /api/challenges/{id}/run |
Execute code & run tests |
- Frontend: React 18, Vite, Monaco Editor, TailwindCSS
- Backend: Spring Boot 3, Java 17, Maven
- Testing: JUnit 5, MockMvc
- Create folder:
challenges/challenge-XXX/ - Add
metadata.json:{ "id": "challenge-XXX", "title": "Challenge Title", "difficulty": "easy|medium|hard", "template": "rest-template" } - Add
prompt.mdwith requirements - Create
starter-files/with editable code - Create
tests/with JUnit test cases
- Backend logs:
backend/target/spring.log - Frontend devtools:
localhost:5173→ DevTools - Test runs:
runs/run-{id}/(temp folders)
- Challenge load: <1s
- Test run: <5s (easy), <10s (medium)
- Editor latency: imperceptible
- Docker isolated execution
- Leaderboards
- User accounts
- AI hints
- Advanced challenge types
Note for Readers : If you want any feature, raise an Issue with detailed description

