# Contributing

Jira Express was bootstrapped with Create-React-App and uses TypeScript and Styled-Components.  
To make Create-React-App output correctly the extension assets, a few customizations have been applied to the `start` and `build` scripts.

## Project Structure

The directory structure looks somewhat similar to monorepo: in `src` you can find modules/packages that separates the app in different functional blocks.  
Each module is prefixed by `jexp-` and is set as an alias, so you can import by specifying its absolute path.

```javascript
chrome // Chrome-specific static asset
 |
firefox // Firefox-specific static assets
 |
public // Common static assets
 |
scripts // Custom scripts
 |
src
 ├── jexp-api // Jira APIs
 │
 ├── jexp-app // Entry-point to the app/extension
 │
 ├── jexp-assets // Mostly images
 │
 ├── jexp-auth // Account picker screen
 │
 ├── jexp-common // Common components
 │
 ├── jexp-dashboard // Recent issues screen
 │
 ├── jexp-design // Common styles, colors, etc...
 │
 ├── jexp-search // Search screen
 │
 ├── jexp-settings // Settings screen
 │
 └── jexp-utils // Utilities
```

## Developing Jira Express

- Install the Jira Express dependencies with `npm install`.
- To develop Jira Express, run `npm run start:chrome` or `npm run start:firefox`, depending on which browser you want to use. Live reloading works out of the box.
- To build Jira Express for production, run `npm run build:chrome` or `npm run build:firefox`, depending on which browser you want to use.
- You'll find the unpacked extension in `./build-chrome` or `./build-firefox`.