-
Notifications
You must be signed in to change notification settings - Fork 28
Architecture
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 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
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 theelectron-service
where electron's IPC capability is wrapped in angular service
For more on the frontend, take a look at the wiki page
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