An open API service indexing awesome lists of open source software.

https://github.com/bgpworks/boxhero-electron

박스히어로 Desktop 앱
https://github.com/bgpworks/boxhero-electron

electron inventory inventory-management

Last synced: 5 months ago
JSON representation

박스히어로 Desktop 앱

Awesome Lists containing this project

README

          

# BoxHero Desktop App

[박스히어로](https://app.boxhero.io) 데스크톱 앱

![제품목록](screenshots/item_list.png)

## NPM Scripts

### 설치

```sh
npm install
```

### 개발

```sh
npm run start
```

#### Linux 커스텀 프로토콜 설정

Linux 개발 모드에서 `boxhero://` 프로토콜을 사용하려면 수동 등록이 필요합니다.

```sh
# 등록
npm run setup:linux

# 해제
npm run setup:linux:unregister
```

### 패키징 & 배포

```sh
# 실행가능한 app bundle만 생성
npm run package

# 설치파일 생성
npm run make

# 배포
npm run publish-app
```

## 로컬 빌드를 준비사항

### Code Signing

#### Mac

- Code Sign용 `Developer ID Application` 인증서를 로컬에 설치합니다.
- Notarize를 위한 [App Store Connect API key](#app-store-connect-api-키-생성-방법)를 준비합니다.

#### Windows

- Azure Trusted Signing을 이용하여 EV 인증서 없이 코드 사인 합니다.
- 자세한 사용 설정 방법은 [Code signing on Windows with Azure Trusted Signing](https://melatonin.dev/blog/code-signing-on-windows-with-azure-trusted-signing)를 따릅니다.

### 환경변수 설정

[.env.example](./.env.example) 을 참고하여 필요한 환경변수들을 설정합니다.

`# for ci`로 그룹핑된 변수들은 Github action을 통한 빌드시에만 필요한 환경변수이므로 설정하지 않으셔도 괜찮습니다.

## 배포

### 프로덕션 & beta 배포에 대하여

- 환경변수 `DEV_USE_BETA_LANE`가 `t`로 설정된 경우, beta 버전으로 배포할 수 있다.
- beta 버전의 beta 버전만의 릴리즈 히스토리를 따라 업데이트가 진행된다.
- Github action으로 배포시 `release` 브랜치 외에는 `beta`로만 배포가 된다.

### 프로덕션 배포

- 배포가 결정되면, release 브랜치로 배포할 내용들을 모두 일괄 머지한다.
- Github action을 이용해 배포 관련 workflow를 수동으로 트리거한다.
- `Github` -> `Actions` -> 사이드바에서 `publish-app` workflow 선택 -> `Run workflow`

## 기타

### App Store Connect API 키 생성 방법

1. [App Store Connect access page](https://appstoreconnect.apple.com/access/api)에 방문.
2. `Keys` 탭으로 이동해 생성 및 다운로드.
3. 다운받은 API key는 `AuthKey_ABCD123456.p8`와 같이 생겼으며, 단 한 번만 다운로드가 가능하니 주의해주세요.

### Mac 빌드시 Code sign & Notarize 스킵하는 방법

환경변수 `DEV_SKIP_SIGN`을 `t` 로 설정하면 빌드 단계에서 Code sign & Notarize를 생략합니다.

### Windows 로컬 사이닝

- [.NET runtime 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) 이상 설치
- [signtool](https://learn.microsoft.com/en-us/windows/win32/seccrypto/signtool) 최신 버전 설치
- [Microsoft.Trusted.Signing.Client](https://www.nuget.org/packages/Microsoft.Trusted.Signing.Client) 패키지 설치

아래 환경변수를 알맞게 설정

```
AZURE_CLIENT_ID="fill_here"
AZURE_CLIENT_SECRET="fill_here"
AZURE_TENANT_ID="fill_here"
AZURE_CODE_SIGNING_DLIB="C:\path\to\Azure.CodeSigning.Dlib.dll"
SIGNTOOL_PATH="C:\path\to\signtool.exe"
```

### Azure Trusted Signing 갱신

- 2년에 한번씩 Identity Validation을 해야 한다. (3/22/2028 만료 예정)
- App Registrations > trusted-signing user의 secret(`AZURE_CLIENT_SECRET`)도 2년에 한번씩 만료 되므로 갱신해줘야 한다. (12/18/2027 만료 예정)

## 스크린샷

![제품 정보](screenshots/item_detail.png)
![대시보드](screenshots/dashboard.png)
![입출고](screenshots/stock_in.png)
![바코드 스캔](screenshots/barcode_scan.png)
![바코드 라벨 디자인](screenshots/label_design.png)
![바코드 라벨 인쇄](screenshots/label_print.png)
![입출고 내역](screenshots/transaction_history.png)