Skip to content
This repository has been archived by the owner on Jan 1, 2023. It is now read-only.

Architecture

Michael Lu edited this page May 11, 2018 · 2 revisions

Before you code anything, it is good to know how this app is laid out. This help you put the right code in the right place and accelerate your PR's approval.

From a high level, the app is separated into frontend and backend.

  • Frontend (located in app/frontend, it's a standalone angular app that deals with UI related logics, presentation and issuing command to the backend)
  • Backend (located in different folders under app, each folder is intended to be a separated module that have contained functionalities, e.g. jira-integration folder deals with integration with JIRA, such as updading JIRA issue, adding JIRA comments etc)

Communication

Communication between front and back are done with Electron Interprocess Communication (IPC) (read more about electron IPC here. Specifically, it uses sync and async message sending mechanism.

Message format generally follows this: Module-Operation

Frontend

The main frontend code is located in /app/frontend/src/app The angular frontend separates into different modules that deal with separate areas of functionalities.

  • Core module contains central functionality of the app, basically what the user sees when the app opens up is in core module
  • Settings module deals with settings pages (that's the cog icon in the bottom left)
  • JIRA module deals with JIRA operations, all JIRA related components, services lives here
  • Infrastructure module provides services and components to other modules. An example would be the electron-service where electron's IPC capability is wrapped in angular service

For more on the frontend, take a look at the wiki page

Backend

The backend code handles all the operations relating to repository and sends requests to various integration services, they are just straight JS module that are all hooked up in main.js

Clone this wiki locally