Skip to content

Architecture

MatthiasCr edited this page Aug 3, 2022 · 19 revisions

All the classes in the Squello-Core package have the prefix SPB (for Squello Project Board).

Basic structures

SPBBoard is the orchestrating class for most features, it manages the construction (holds all toolbuilder methods) and it is together with the SPBSidebar the model behind the runtime structure. A board has multiple SPBColumns, each of which have multiple SPBCards (until now: only GitHub issues added to the specific project).
Columns only have a title; cards have title, description, and SPBLabels (with color and name) and SPBAssignees (GitHub users with their name).

GitHub connection & authentication

Board, columns and cards all communicate with GitHub via the same SPBGithubBoardProvider that uses an SPBGithubAPI to send HTTP requests to GitHub and converts the responses to domain objects for the board components. For real-time updates, an SPBGithubChangeProvider is used to communicate with a ruby script written by us that is set up to receive and manage all relevant board events provided by GitHub using webhooks.
If no user is signed in or necessary Authorization is missing, an SPBAuthenticator is used to prompt for GitHub username and access token. It also checks for the token scopes (see README).

Visual elements

SPBIndicatorDetection and its subclasses are transparent dummy morphs laying over cards and lanes to catch mouse drag events. They are used to show an indicator (orange line) where a card is going to be dropped while dragging. When moving columns, an SPBGhostColumn is used to represent the column's future position.
The whole UI (window with lane area and SPBSidebar) is built by MorphicToolBuilder which required some additional ToolBuilderSpecs (the remaining classes).

Clone this wiki locally