Skip to content

PhilixTheExplorer/bug-gym

Repository files navigation

Bug Gym

Bug Gym Logo

Java 21 JavaFX 21 Maven GPLv3

Bug Gym is a lightweight, offline Java practice desktop app that simulates Moodle-style exam questions with syntax highlighting, automated tests, and beginner-friendly progression. No logins, no internet, and no complex IDE setups required. Just open the app and start practicing.

At university (specifically KMUTT's SIT), students often take programming exams in stripped-down environments like Moodle or jGRASP. This creates an unfair gap for beginners:

  • Moodle is locked to exam time and its editor is a plain text box.
  • jGRASP lets you code but gives you zero practice questions.
  • LeetCode / HackerRank are overwhelming for beginners just trying to understand arrays.

Bug Gym bridges that gap. It gives you realistic practice in a safe, offline space.
Bug Gym = jGRASP's simplicity + Moodle's instant testing + beginner-friendly problem sets.

Screenshots

Main Interface

Bug Gym Main Screen

Overview

Bug Gym runs purely locally on Windows, macOS, and Linux. No accounts, no internet, no cloud dependencies—just focused learning.

Why Bug Gym

  • Exam-Realistic Practice: Moodle-style Java questions designed for beginner-friendly progression.
  • Intentionally Started Like jGRASP: The editor began in a strict, minimal style (manual indentation/brackets) to match third-year exam habits, then evolved with toggleable Auto Indent and Auto Bracket Pairing based on learner feedback.
  • Zero Friction: Offline-first desktop workflow with no login, no internet, and no complex IDE setup.
  • Instant Validation: Built-in automated tests with clear pass/fail status and mismatch feedback.
  • Content That Teaches: Markdown-based question packs with hints, examples, and starter code.
  • Visible Progress: Local progress tracking so you can see growth over time.

For the full walkthrough, see FEATURES.md.

Quick Start

Install from Releases

  1. Head over to the Releases page.
  2. Download the installer for your OS.
  3. Install, launch, and start coding.

Security Notice (Unsigned Installers)

Bug Gym is an open-source project without paid code-signing certificates. Your OS may show warnings:

  • macOS: Go to System Settings → Privacy & Security → allow Bug Gym to "Open Anyway"
  • Windows: Click "More Info" → "Run Anyway"

If you downloaded from the official GitHub Releases page, it's safe.

Build From Source

Requirements

Run

git clone https://github.com/PhilixTheExplorer/bug-gym.git
cd bug-gym
mvn clean javafx:run

Package

mvn clean package

VS Code (Optional)

If you use VS Code, both are supported:

  • Java General profile
  • Run and debug directly in VS Code

Recommended extensions:

  • Extension Pack for Java
  • Debugger for Java

Launch/debug main class:

  • dev.philixtheexplorer.buggym.Launcher

Documentation

Why This Started

Bug Gym began as a personal project, a gift for someone special to make learning Java feel less scary, more fun, and a little bit magical.

It was built to turn confusion into confidence, and to show that sometimes the best help is a tool made just for them.

If it helps others along the way, that's even better.

Technology Stack

  • Java 21 - Modern Java features
  • JavaFX 21 - Cross-platform desktop UI
  • RichTextFX - Code editor with syntax highlighting
  • CommonMark - Markdown parsing for problem descriptions
  • jpackage - Native installers for each platform
  • Maven - Build automation
  • GitHub Actions - Automated releases

Versioning

Bug Gym follows Semantic Versioning:

  • MAJOR: Breaking changes
  • MINOR: New features, backward compatible
  • PATCH: Bug fixes

License

This project is licensed under the GNU General Public License v3.0.

You are free to use, modify, and distribute this software, but any modifications must also be open source under GPL v3.

See LICENSE for full details.

Contributing

Contributions are welcome and should be small, focused, and well-tested. This project is primarily maintained as a learning and personal project.

  • Fork the repository and create a feature branch
  • Keep changes scoped to a single purpose
  • Update or add tests when appropriate
  • Open a pull request with a clear description of the change

See CONTRIBUTING.md for detailed guidelines.

Support

Acknowledgments

Built with:

Inspired by the struggle of learning Java without the right tools.


Made with ❤️ for Java beginners everywhere

Especially for one person who inspired it all