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