# 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
```

## 使用 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

---
# 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
```