---
# System prepended metadata

title: 'Project: Scurm Poker Backend'
tags: [Nestjs]

---


# Project: Scurm Poker Backend

###### tags: `Nestjs`
# 更新 Node 版本
- Node 版本至少需大於等於 v16.18.0
- 藉由下列指令可將Node版本從 16.15.0 更新至 16.19.0, 並將其設定為 Node 的預設版本
```
nvm install 16.19.0 --reinstall-packages-from=16.15.0
nvm use v16.19.0
nvm alias default v16.19.0
```
# 安裝相關服務
## Redis Server Container
```
docker run --name redis -p 6379:6379  -v ~/redis_data:/data -d redis 
```
## SQLite3 (Optional)
- 若以 container 方式執行服務, 因其已內建在後端服務的docker images裡, 可忽略此安裝。
```
$ sudo apt-install sqlite3
```
# 資料夾配置說明
- .env：環境變數配置檔。
- src/common：共用的項目，如：constants、enums、models 等。
- src/configs：程式相關的環境變數。
- src/core：應用程式本身有直接關聯的元件，如：guards、interceptors、pipes 等。
- src/modules：主要功能，如用於範例說明的 dogs, sqlite-test 等。
- src/app.module.ts：根模組。
- src/main.ts：載入點。
- rbac (role base access control): 放置 Casbin 使用到的 model 與 policy

# 建立開發環境
## 以 Source Code 的方式啟動後端服務
### 安裝相關的開發套件
```
npm install i
```
### 啟動後端服務
```
npm run start:dev
```
![](https://i.imgur.com/vOZCMyL.png)


## 使用 Container 方式啟動後端服務
### 建立後端服務的 docker image
- tag: 可自行輸入, 如: dev, 0103...等等
```
docker build -t scurm-poker:<tag> . --no-cache

```
### 啟動後端服務
```
docker run -itd --name scurm_poker_back -p 3000:3000  scurm-poker:<tag>
```


# 使用瀏覽器測試後端服務
## 主網頁
- Url: http://127.0.0.1:3000/api/v1
- 開啟可看到 "Hello World!"

## API 的文件說明
- Url: http://127.0.0.1:3000/docs
![](https://i.imgur.com/JRlyJWy.png)

---
# Jira
## Project ID
```
{
        "id": "61757bc8-a15e-4b5d-b928-50c344d48004",
        "url": "https://vbd200.atlassian.net",
        "name": "vbd200",
        "scopes": [
            "manage:jira-project",
            "manage:jira-configuration",
            "read:jira-work",
            "manage:jira-data-provider",
            "write:jira-work",
            "manage:jira-webhook",
            "read:jira-user"
        ],
        "avatarUrl": "https://site-admin-avatar-cdn.prod.public.atl-paas.net/avatars/240/compass.png"
    },
    {
        "id": "a2e9f24d-eaa6-4d46-af1b-b559e3cf0e0d",
        "url": "https://nssi2.atlassian.net",
        "name": "nssi2",
        "scopes": [
            "manage:jira-project",
            "manage:jira-configuration",
            "read:jira-work",
            "manage:jira-data-provider",
            "write:jira-work",
            "manage:jira-webhook",
            "read:jira-user"
        ],
        "avatarUrl": "https://site-admin-avatar-cdn.prod.public.atl-paas.net/avatars/240/pencilmarker.png"
    }
```
## Noets
- working entrypoint
  - https://api.atlassian.com/ex/jira/a2e9f24d-eaa6-4d46-af1b-b559e3cf0e0d/rest/api/3/project

---
# 創建名為 "scurm_poker_back" 的案子
- Select "npm" for package manager
```
npm i -g @nestjs/cli
nest new scurm_poker_back
```
## 安裝相關套件
### ConfigModule
```
npm install @nestjs/config --save
```
### Cache-Manager
- Type definitions for cache-manager
-  TypeScript implementation of node-cache-manager
```
npm install cache-manager
npm install @types/cache-manager --save-dev
```
### Redis
- Required Node version >= 16.18.0
- wrapper for passing configuration to the node_redis package
- TypeScript implementation of the cache-manager-redis-store package
```
npm install cache-manager-redis-store --save
npm install @types/cache-manager-redis-store --save-dev
```
### SQLite3 Driver
```
npm install sqlite3 --save
```
### Typerom 
```
npm install @nestjs/typeorm typeorm --save
```
### Swagger
```
npm install @nestjs/swagger swagger-ui-express --save
```
### DTO 使用的裝飾器
```
npm install class-validator class-transformer
```
### Queues (Redis)
```
$ npm install --save @nestjs/bull bull
$ npm install --save-dev @types/bull
```


