GitHubViz is a Java Swing desktop application that visualizes software quality metrics and code structure using an interactive grid-based interface. It enables users to analyze and display data extracted from GitHub repositories, offering an intuitive representation of project components, dependencies, and key software engineering indicators.
Note:
This repository serves as a starter template for a class project. Students are expected to extend, refactor, and enhance its features as part of the course.
GitHubViz was created as a teaching and research tool to help students and developers:
- Understand software architecture through visual representations
- Explore coupling, cohesion, abstractness, instability, and related metrics
- Experiment with different visualization techniques
- Practice applying design patterns and improving existing software artifacts
- Learn by doing: refactor, extend, and improve an existing codebase
It provides a foundation for hands-on work in software analysis, design visualization, and architecture comprehension.
The screenshot shows GitHubViz running with a full visualization of a GitHub repository (https://github.com/javiegs/ADASIM). Each square in the grid represents a source file from the repository. The grid layout provides an at-a-glance overview of the project’s structure, where:
- Color intensity would reflect software metrics (e.g., size, complexity, instability, or custom values).
- Green tones indicate lighter or simpler components.
- Yellow/orange tones highlight files with higher complexity or central roles.
- Red tones reveal potential hotspots or heavy modules that may need attention.
- Each square is labeled with the file name and an associated metric value.
At the top, the interface displays the URL input field used to load a GitHub repository and a simple “OK” button to trigger visualization.
GitHubViz represents source code entities (classes, packages, or modules) as interactive squares arranged in a grid.
Each square encodes information such as:
- Dependency relationships
- Coupling/cohesion levels
- Abstractness and instability indices
- Code ownership annotations
- Custom metrics added by students during development
The system is intentionally modular, making it easy to adapt for new visualizations or metrics.
The project follows an MVC-inspired structure with clear separation of concerns:
| Class | Role |
|---|---|
| Main.java | Application entry point. Initializes UI components, event listeners, and delegates. |
| GridPanel.java | Core visualization component that renders the grid using Square objects. |
| Square.java | Represents a single grid unit — a class/module/component — containing drawing logic and metric data. |
| Delegate.java | Mediates communication between UI elements and backend logic (input handling, updates, etc.). |
| Blackboard.java | Central shared data store for metrics, configuration, and visualization parameters. |
| TheNanny.java | Oversees periodic updates and validation, ensuring consistent data flow and triggering UI refresh cycles. |
Clone the repository:
git clone https://github.com/CSC3100/App-GitHubViz.gitCompile and run:
javac Main.java
java MainThis project is intentionally minimalistic. Expected improvements include:
- Integrating GitHub APIs
- Adding new metrics and visual indicators
- Enhancing the UI
- Refactoring for clarity and maintainability
- Improving documentation and examples
Treat this repository as a starting point, not a finished product.