Skip to content

☑️📝A (template for a) tool to visualize code structure and metrics of GitHub repositories.

License

Notifications You must be signed in to change notification settings

CSC3100/App-GithubViz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Static Badge GitHub repo size Java Platform

Status Contributions

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.

Purpose

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.

Screenshot

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.

Screenshot 2025-11-28 at 3 50 49 PM

Overview

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.

Architecture

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.

Getting Started

Clone the repository:

git clone https://github.com/CSC3100/App-GitHubViz.git

Compile and run:

javac Main.java
java Main

For Students

This 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.

About

☑️📝A (template for a) tool to visualize code structure and metrics of GitHub repositories.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Languages