Thank you for contributing to BugGym.
This project exists to help beginners practice Java in an exam-like environment, so contributions should prioritize clarity, stability, and student-friendly behavior.
- Keep changes focused and easy to review.
- Preserve beginner-friendly UX.
- Prefer simple, readable code over clever code.
- Avoid unrelated refactors in the same pull request.
- Report bugs with clear reproduction steps.
- Propose UX improvements with before and after behavior.
- Add or improve practice questions under
src/main/resources/questions. - Improve docs in
README.md,ARCHITECTURE.md, and this file. - Fix code issues in small, isolated pull requests.
- Java 21+
- Maven 3.8+
- Git
git clone https://github.com/PhilixTheExplorer/bug-gym.git
cd bug-gym
mvn clean javafx:runmvn clean packageUsing VS Code is fully supported for this project.
- The Java General profile is fine.
- Debugging from VS Code is also fine.
- Recommended extensions:
- Extension Pack for Java
- Debugger for Java
Run and debug options in VS Code should point to the launcher main class:
dev.philixtheexplorer.buggym.Launcher
src/main/java: application source codesrc/main/resources/questions: question sets, prompts, starter code, solutionssrc/main/resources/styles: JavaFX stylesheetssrc/main/resources/iconsandsrc/main/resources/fonts: app assets
Read ARCHITECTURE.md before making structural changes.
- Fork the repository.
- Create a branch from
main. - Make a focused change.
- Run the app and validate behavior.
- Commit with a clear message.
- Open a pull request with context and screenshots when UI is affected.
Recommended branch names:
feat/short-descriptionfix/short-descriptiondocs/short-description
Recommended commit style:
feat: add first-run editor tips dialogfix: prevent null selection when opening categorydocs: clarify setup steps for contributors
- Target Java 21.
- Keep methods small and intent-revealing.
- Reuse existing coordinators and factories where possible.
- Do not introduce heavy dependencies for small tasks.
- Keep UI strings user-friendly and concise.
When editing existing classes:
- Follow current naming and formatting style.
- Do not mix feature work with broad formatting-only edits.
- Do not remove or change user progress behavior unless required.
- Respect current menu structure and shortcuts.
- Keep dialogs short and actionable.
- Prefer explicit labels over jargon.
- Ensure changes work in both dark and light mode.
If you change visual behavior, include screenshots in the pull request.
Question packs are under src/main/resources/questions.
For each pack:
- Keep naming conventions consistent with existing folders.
- Include clear prompt text and expected behavior.
- Ensure starter code compiles unless intentionally incomplete for the exercise.
- Ensure provided solutions match expected output and style goals.
Content should be appropriate for introductory Java learners.
Before opening a pull request:
- Launch the app with
mvn clean javafx:run. - Verify the changed flow manually.
- Run
mvn clean packagefor build-impacting changes.
If your change affects:
- Menu or settings: verify toggles and persistence.
- Question loading: verify questions render and run.
- Editor behavior: verify typing, formatting, and submission flow.
- Change is scoped to one purpose.
- Code and docs are updated together when needed.
- No unrelated files are modified.
- Screenshots included for UI changes.
- PR description explains what changed and why.
Include the following:
- Environment: OS, Java version, and BugGym version.
- Steps to reproduce.
- Expected behavior.
- Actual behavior.
- Screenshots or logs if available.
- Do not submit secrets, tokens, or private data.
- Do not include copyrighted question content without permission.
- Keep dependencies up to date and minimal.
By contributing, you agree that your contributions are licensed under the project license:
- GNU General Public License v3.0